[pkg-opensc-commit] [opensc] 02/11: Imported Upstream version 0.14.0

Eric Dorland eric at moszumanska.debian.org
Sat Jul 5 21:24:21 UTC 2014


This is an automated email from the git hooks/post-receive script.

eric pushed a commit to branch master
in repository opensc.

commit 9104ffa698b1a221c7d8f66329767b2beaabb7fa
Author: Eric Dorland <eric at debian.org>
Date:   Thu Jul 3 17:12:53 2014 -0400

    Imported Upstream version 0.14.0
---
 .gitignore                                         |   104 +
 ChangeLog                                          | 50733 -------------------
 MacOSX/10.5/resources/InstallationCheck.strings    |   Bin 322 -> 0 bytes
 MacOSX/10.5/resources/ReadMe.html                  |    26 -
 MacOSX/10.5/scripts/InstallationCheck              |   116 -
 MacOSX/10.5/scripts/postflight                     |    25 -
 MacOSX/10.6/resources/InstallationCheck.strings    |   Bin 426 -> 0 bytes
 MacOSX/10.6/resources/License.html                 |   170 -
 MacOSX/10.6/resources/ReadMe.html                  |    26 -
 MacOSX/10.6/resources/ReadMe.html.in               |    26 -
 MacOSX/10.6/resources/background.jpg               |   Bin 13125 -> 0 bytes
 MacOSX/10.6/scripts/InstallationCheck              |   116 -
 MacOSX/Distribution.xml.in                         |    24 +
 MacOSX/Makefile.am                                 |    27 +-
 MacOSX/Makefile.in                                 |   426 -
 MacOSX/build-package.in                            |   141 +-
 MacOSX/opensc-uninstall                            |    21 +-
 MacOSX/{10.5 => }/resources/License.html           |     0
 MacOSX/{10.5 => }/resources/ReadMe.html.in         |     2 +-
 MacOSX/resources/Welcome.html.in                   |    17 +
 MacOSX/{10.5 => }/resources/background.jpg         |   Bin
 .../scripts/postflight => scripts/postinstall}     |     0
 MacOSX/uninstaller-scripts/postinstall             |     2 +
 Makefile.am                                        |    13 +-
 Makefile.in                                        |   862 -
 NEWS                                               |   133 +-
 README                                             |     2 +-
 aclocal.m4                                         |  1142 -
 bootstrap                                          |    12 -
 bootstrap.ci                                       |    79 +
 config.guess                                       |  1502 -
 config.h.in                                        |   239 -
 config.sub                                         |  1714 -
 configure                                          | 17034 -------
 configure.ac                                       |   123 +-
 depcomp                                            |   630 -
 doc/Makefile.in                                    |   615 -
 doc/tools/Makefile.in                              |   561 -
 doc/tools/dnie-tool.xml                            |    98 +
 doc/tools/eidenv.1.xml                             |     2 +-
 doc/tools/opensc-explorer.1.xml                    |     9 +
 doc/tools/pkcs11-tool.1.xml                        |     8 +
 doc/tools/sc-hsm-tool.1.xml                        |    45 +-
 etc/Makefile.am                                    |     3 +
 etc/Makefile.in                                    |   440 -
 etc/opensc.conf.in                                 |    72 +-
 etc/opensc.conf.win.in                             |    62 +-
 install-sh                                         |   520 -
 ltmain.sh                                          |  8413 ---
 m4/libtool.m4                                      |  7377 ---
 m4/ltoptions.m4                                    |   368 -
 m4/ltsugar.m4                                      |   123 -
 m4/ltversion.m4                                    |    23 -
 m4/lt~obsolete.m4                                  |    92 -
 missing                                            |   376 -
 packaging/debian.templates/changelog               |     5 +
 packaging/debian.templates/compat                  |     1 +
 packaging/debian.templates/control                 |    31 +
 packaging/debian.templates/copyright               |    29 +
 packaging/debian.templates/docs                    |     2 +
 packaging/debian.templates/opensc.install          |    14 +
 packaging/debian.templates/rules                   |    30 +
 src/Makefile.am                                    |     2 +-
 src/Makefile.in                                    |   614 -
 src/Makefile.mak                                   |     4 +-
 src/common/Makefile.in                             |   596 -
 src/common/compat_getopt.3                         |   288 +
 src/common/compat_getpass.c                        |    32 +-
 src/common/libpkcs11.c                             |     6 +-
 src/common/simclist.c                              |     3 +-
 src/libopensc/Makefile.am                          |     8 +-
 src/libopensc/Makefile.in                          |   832 -
 src/libopensc/Makefile.mak                         |     9 +-
 src/libopensc/apdu.c                               |   140 +-
 src/libopensc/asn1.c                               |    13 +-
 src/libopensc/base64.c                             |     2 +-
 src/libopensc/card-authentic.c                     |    10 +-
 src/libopensc/card-belpic.c                        |     2 -
 src/libopensc/card-cardos.c                        |   195 +-
 src/libopensc/card-default.c                       |    75 +-
 src/libopensc/card-dnie.c                          |  2179 +
 src/libopensc/card-entersafe.c                     |     2 +-
 src/libopensc/card-epass2003.c                     |    26 +-
 src/libopensc/card-flex.c                          |    20 +-
 src/libopensc/card-gemsafeV1.c                     |    27 +-
 src/libopensc/card-ias.c                           |    50 +-
 src/libopensc/card-iasecc.c                        |     4 +
 src/libopensc/card-incrypto34.c                    |     2 +-
 src/libopensc/card-javacard.c                      |    74 -
 src/libopensc/card-jcop.c                          |     6 +-
 src/libopensc/card-mcrd.c                          |    39 +-
 src/libopensc/card-miocos.c                        |     4 +-
 src/libopensc/card-myeid.c                         |     4 +-
 src/libopensc/card-oberthur.c                      |   568 +-
 src/libopensc/card-openpgp.c                       |    26 +-
 src/libopensc/card-piv.c                           |    11 +-
 src/libopensc/card-sc-hsm.c                        |   247 +-
 src/libopensc/card-sc-hsm.h                        |    16 +-
 src/libopensc/card-westcos.c                       |     2 +-
 src/libopensc/card.c                               |    38 +-
 src/libopensc/cardctl.h                            |    18 +-
 src/libopensc/cards.h                              |    11 +-
 src/libopensc/ctx.c                                |    14 +-
 src/libopensc/cwa-dnie.c                           |   885 +
 src/libopensc/cwa-dnie.h                           |    60 +
 src/libopensc/cwa14890.c                           |  2136 +
 src/libopensc/cwa14890.h                           |   415 +
 src/libopensc/ef-atr.c                             |    12 +-
 src/libopensc/errors.c                             |     8 +-
 src/libopensc/errors.h                             |    25 +-
 src/libopensc/iasecc-sdo.c                         |     4 +-
 src/libopensc/iasecc-sm.c                          |    31 +-
 src/libopensc/iasecc.h                             |     5 -
 src/libopensc/internal-winscard.h                  |    16 +-
 src/libopensc/internal.h                           |    10 +-
 src/libopensc/iso7816.c                            |   426 +-
 src/libopensc/iso7816.h                            |    22 +-
 src/libopensc/libopensc.exports                    |    12 +-
 src/libopensc/log.c                                |    34 +-
 src/libopensc/opensc.h                             |    15 +-
 src/libopensc/padding.c                            |    32 +-
 src/libopensc/pkcs15-algo.c                        |    32 +-
 src/libopensc/pkcs15-cert.c                        |    84 +-
 src/libopensc/pkcs15-data.c                        |    51 +-
 src/libopensc/pkcs15-dnie.c                        |   274 +
 src/libopensc/pkcs15-esteid.c                      |     7 +-
 src/libopensc/pkcs15-gemsafeV1.c                   |   510 +-
 src/libopensc/pkcs15-oberthur.c                    |    10 +-
 src/libopensc/pkcs15-openpgp.c                     |     8 +-
 src/libopensc/pkcs15-pin.c                         |   103 +-
 src/libopensc/pkcs15-piv.c                         |    34 +-
 src/libopensc/pkcs15-prkey.c                       |     2 +
 src/libopensc/pkcs15-pteid.c                       |     6 +-
 src/libopensc/pkcs15-pubkey.c                      |   678 +-
 src/libopensc/pkcs15-sc-hsm.c                      |   319 +-
 src/libopensc/pkcs15-sec.c                         |     8 +-
 src/libopensc/pkcs15-syn.c                         |    28 +-
 src/libopensc/pkcs15.c                             |   606 +-
 src/libopensc/pkcs15.h                             |   215 +-
 src/libopensc/reader-ctapi.c                       |     5 +-
 src/libopensc/reader-pcsc.c                        |    64 +-
 src/libopensc/sc.c                                 |    36 +
 src/libopensc/sm.c                                 |   180 +
 src/libopensc/sm.h                                 |    38 +-
 src/libopensc/types.h                              |    47 +-
 src/libopensc/user-interface.c                     |   317 +
 src/libopensc/user-interface.h                     |    66 +
 src/libsm/Makefile.am                              |    12 +
 src/libsm/Makefile.mak                             |    11 +
 src/{sm => libsm}/sm-common.c                      |    34 +-
 src/libsm/sm-common.h                              |    52 +
 src/minidriver/Makefile.am                         |    11 +-
 src/minidriver/Makefile.in                         |   689 -
 src/minidriver/Makefile.mak                        |     4 +-
 src/minidriver/minidriver-feitian.reg              |    30 +
 src/minidriver/minidriver.c                        |   633 +-
 src/minidriver/opensc-minidriver.inf               |   148 -
 src/minidriver/versioninfo-minidriver.rc.in        |    38 +
 src/pkcs11/Makefile.am                             |    19 +-
 src/pkcs11/Makefile.in                             |   718 -
 src/pkcs11/Makefile.mak                            |    20 +-
 src/pkcs11/framework-pkcs15.c                      |   469 +-
 src/pkcs11/mechanism.c                             |     2 +-
 src/pkcs11/misc.c                                  |    14 +-
 src/pkcs11/openssl.c                               |     2 +-
 src/pkcs11/pkcs11-global.c                         |    73 +-
 src/pkcs11/pkcs11-object.c                         |     2 +-
 src/pkcs11/pkcs11-session.c                        |    22 +-
 src/pkcs11/sc-pkcs11.h                             |    11 +-
 src/pkcs11/slot.c                                  |    82 +-
 src/pkcs11/versioninfo-pkcs11-spy.rc.in            |    38 +
 src/pkcs11/versioninfo-pkcs11.rc.in                |    38 +
 src/pkcs15init/Makefile.in                         |   673 -
 src/pkcs15init/myeid.profile                       |     2 +-
 src/pkcs15init/pkcs15-asepcos.c                    |    16 +-
 src/pkcs15init/pkcs15-authentic.c                  |    10 +-
 src/pkcs15init/pkcs15-cardos.c                     |     9 +-
 src/pkcs15init/pkcs15-epass2003.c                  |    16 +
 src/pkcs15init/pkcs15-iasecc.c                     |    95 +-
 src/pkcs15init/pkcs15-incrypto34.c                 |     9 +-
 src/pkcs15init/pkcs15-init.h                       |    20 +-
 src/pkcs15init/pkcs15-lib.c                        |   325 +-
 src/pkcs15init/pkcs15-myeid.c                      |    39 +-
 src/pkcs15init/pkcs15-oberthur-awp.c               |     4 +-
 src/pkcs15init/pkcs15-sc-hsm.c                     |   212 +-
 src/pkcs15init/pkcs15.profile                      |     2 +-
 src/pkcs15init/profile.c                           |    82 +-
 src/scconf/Makefile.in                             |   584 -
 src/scconf/scconf.c                                |     7 +-
 src/scconf/write.c                                 |     6 +-
 src/sm/Makefile.in                                 |   607 -
 src/{sm => smm}/Makefile.am                        |     7 +-
 src/{sm => smm}/Makefile.mak                       |     6 +-
 src/{sm => smm}/sm-card-authentic.c                |     2 +-
 src/{sm => smm}/sm-card-iasecc.c                   |     0
 src/smm/sm-common.exports                          |     3 +
 src/{sm => smm}/sm-cwa14890.c                      |    24 +-
 src/{sm => smm}/sm-global-platform.c               |     4 +-
 src/{sm => smm}/sm-module.h                        |    15 +-
 src/{sm => smm}/smm-local.c                        |     2 +-
 src/{sm => smm}/smm-local.exports                  |     0
 src/tests/Makefile.in                              |   789 -
 src/tests/base64.c                                 |    19 +-
 src/tests/regression/Makefile.in                   |   421 -
 src/tools/Makefile.am                              |    39 +-
 src/tools/Makefile.in                              |   829 -
 src/tools/Makefile.mak                             |    11 +-
 src/tools/cardos-tool.c                            |   105 +-
 src/tools/dnie-tool.c                              |   244 +
 src/tools/eidenv.c                                 |     2 +-
 src/tools/netkey-tool.c                            |     6 +-
 src/tools/openpgp-tool.c                           |    92 +-
 src/tools/opensc-explorer.c                        |   109 +-
 src/tools/opensc-tool.c                            |    11 +-
 src/tools/piv-tool.c                               |    10 +-
 src/tools/pkcs11-tool.c                            |    74 +-
 src/tools/pkcs15-init.c                            |     8 +-
 src/tools/pkcs15-tool.c                            |    93 +-
 src/tools/sc-hsm-tool.c                            |   773 +-
 src/tools/util.c                                   |    17 +-
 src/tools/versioninfo-tools.rc.in                  |    37 +
 svnignore                                          |    79 -
 version.m4                                         |    12 +
 win32/Make.rules.mak                               |     2 +-
 win32/Makefile.in                                  |   536 -
 win32/OpenSC.iss                                   |    59 -
 win32/OpenSC.wxs                                   |   249 -
 win32/OpenSC.wxs.in                                |    10 +-
 win32/README.rtf                                   |     1 +
 win32/installer_from_build.sh                      |    30 +
 win32/versioninfo.rc                               |    33 -
 win32/versioninfo.rc.in                            |    31 +-
 win32/winconfig.h                                  |    98 -
 233 files changed, 13874 insertions(+), 105809 deletions(-)

diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..5becaf9
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,104 @@
+Makefile
+Makefile.in
+core
+archive
+acinclude.m4
+aclocal.m4
+autom4te.cache
+compile
+confdefs.h
+config.*
+configure
+conftest
+conftest.c
+depcomp
+install-sh
+libtool
+libtool.m4
+lt*.m4
+ltmain.sh
+missing
+mkinstalldirs
+so_locations
+stamp-h*
+.deps
+.libs
+.#*#
+.*.bak
+.*.orig
+.*.rej
+.*~
+#*#
+*.bak
+*.d
+*.def
+*.dll
+*.exe
+*.la
+*.lib
+*.lo
+*.orig
+*.pdb
+*.rej
+*.u
+*.rc
+*.pc
+*~
+*.o
+*.gz
+*.bz2
+*.[0-9]
+*.html
+*.gif
+*.css
+*.out
+*.tmp
+ChangeLog
+
+etc/opensc.conf.win
+etc/opensc.conf
+src/common/compat_getopt_main
+src/minidriver/opensc-minidriver.inf
+src/tools/cardos-tool
+src/tools/iasecc-tool
+src/tools/openpgp-tool
+src/tools/sc-hsm-tool
+src/tools/westcos-tool
+src/tools/pkcs15-tool
+src/tools/pkcs15-crypt
+src/tools/pkcs15-init
+src/tools/piv-tool
+src/tools/eidenv
+src/tools/opensc-explorer
+src/tools/opensc-tool
+src/tools/rutoken-tool
+src/tools/cardos-info
+src/tools/cryptoflex-tool
+src/tools/netkey-tool
+src/tools/pkcs11-tool
+src/tools/dnie-tool
+
+win32/OpenSC.iss
+win32/OpenSC.wxs
+win32/winconfig.h
+
+MacOSX/build-package
+MacOSX/Distribution.xml
+
+*.dmg
+*.pkg
+OpenSC.tokend/
+build/
+engine_pkcs11/
+libp11/
+target/
+
+src/scconf/test-conf
+
+src/tests/base64
+src/tests/lottery
+src/tests/p15dump
+src/tests/pintest
+src/tests/prngtest
+
+version.m4.ci
diff --git a/ChangeLog b/ChangeLog
deleted file mode 100644
index 1b588e2..0000000
--- a/ChangeLog
+++ /dev/null
@@ -1,50733 +0,0 @@
-# Generated by Makefile. Do not edit!
-commit 98ca66b1a048c0ffa7b1ff13539c004c7c3017c1
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Tue Dec 4 11:50:49 2012 +0100
-
-    release 0.13.0
-
-commit 8b07b9c5a77fa9868f0151a7e09c07207b7964cf
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Mon Dec 3 14:58:52 2012 +0100
-
-    compile on Windows, minor codding style issues
-
-commit 457426543dfa02597895d57013dde94cc9e7d038
-Author: sjoblomt <development at aventra.fi>
-Date:   Wed Nov 28 12:52:43 2012 +0200
-
-    MyEID ECDSA support
-
-commit 9e9b3d0bd86e072dff4ab36ff0ac773a75b735fb
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Wed Nov 28 11:09:36 2012 +0100
-
-    tool: in 'do_apdu' increase size of send/receive buffers
-
-commit 60b7e52e066e4a5849d363951635aefa07bc2325
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Tue Nov 20 22:58:37 2012 +0100
-
-    pkcs15: mandatory 'publicKeyCoefficients' in encode/decode public key procedures
-    
-    http://www.opensc-project.org/pipermail/opensc-devel/2012-November/018586.html
-
-commit 81bbddfc24dec139a26a17c5b05f169b00c2edb6
-Author: Ludovic Rousseau <ludovic.rousseau at gmail.com>
-Date:   Tue Nov 20 18:03:45 2012 +0100
-
-    card-gemsafeV1: Add a GemSafe V1 ATR
-    
-    Thanks to Lukas Wunner for the patch
-
-commit 27c677188e278d66afea3969f51c59cd72d473ae
-Author: Anthony Foiani <anthony.foiani at gmail.com>
-Date:   Sun Nov 11 22:46:37 2012 -0700
-
-    pcks11: trivial: fix debug output for CKA_PRIME_1 and CKA_PRIME_2
-    
-    Without this patch, debugging output issues these as unknown
-    attributes:
-    
-      ... C_CreateObject(): CKA_PRIVATE_EXPONENT = 97F798...
-      ... C_CreateObject(): Attribute 0x124 = EFE5AD...
-      ... C_CreateObject(): Attribute 0x125 = D4D3F6...
-      ... C_CreateObject(): CKA_EXPONENT_1 = 5815FD...
-    
-    With this patch, we see:
-    
-      ... C_CreateObject(): CKA_PRIVATE_EXPONENT = 97F798...
-      ... C_CreateObject(): CKA_PRIME_1 = EFE5AD...
-      ... C_CreateObject(): CKA_PRIME_2 = D4D3F6...
-      ... C_CreateObject(): CKA_EXPONENT_1 = 5815FD...
-    
-    Signed-Off-By: Anthony Foiani <anthony.foiani at gmail.com>
-
-commit f63135afabff7f93fff51d90e88a25314718092e
-Author: Anthony Foiani <anthony.foiani at gmail.com>
-Date:   Sun Nov 11 22:39:01 2012 -0700
-
-    tools: check return value after each call.
-    
-    It seems that this suffered some copy and paste damage at some point.
-    Change so that we check each return value immediately after the API
-    call.
-    
-    Signed-Off-By: Anthony Foiani <anthony.foiani at gmail.com>
-
-commit fb8e0cc3b285b1d911d0ac3ef6d5cad86f467a3c
-Author: Andreas Schwier <andreas.schwier at cardcontact.de>
-Date:   Fri Nov 16 15:48:37 2012 +0100
-
-    sc-hsm: Improved checking in sc-hsm-tool
-
-commit 0adec1bdddea1db8bbd5f7aa2cf3f4198a2e361b
-Author: Andreas Schwier <andreas.schwier at cardcontact.de>
-Date:   Fri Nov 16 14:38:29 2012 +0100
-
-    sc-hsm: Fixed bug with memory released to early
-
-commit bbbfae4bf02809eb0e836d3706a0cf28f798417b
-Author: Andreas Schwier <andreas.schwier at cardcontact.de>
-Date:   Mon Nov 12 16:52:48 2012 +0100
-
-    sc-hsm: Now saving the internal CSR in place of the certificate and decoding the public key at initialization (RSA only)
-
-commit 6c051f8490412fb22b6fb7a3c095ac8265b18c68
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Mon Nov 12 16:46:25 2012 +0100
-
-    pkcs11: check arguments in get_bignum_bits() procedure
-    
-    t451: segmentation fault when getting public key bits number
-
-commit bd8606383599cf693928c0467dc0a3ca7e4362fd
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Mon Nov 12 10:13:57 2012 +0100
-
-    t455: check validity of RSA/DSA public key components
-    
-    Segmentation fault happened when reading SSH key with the non-initilized public key components.
-
-commit 68ee0e76e0708b544d19100e5430d6a994c25049
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Sun Nov 11 22:17:17 2012 +0100
-
-    t447: return value from init() in reader driver not checked
-
-commit f7771c9b084417c6891d5a9d200b7adbd554e67c
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Sun Nov 11 21:47:10 2012 +0100
-
-    libopensc: check data returned by 'read-public-key'
-    
-    fix error message
-
-commit da5934a6ff4dbc82a27f97b4bcc905642fa79541
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Sun Nov 11 20:38:30 2012 +0100
-
-    libopensc iso7816: retry SELECT with FCI if SELECT without FCI fails
-    
-    t457 (https://www.opensc-project.org/opensc/ticket/457)
-    For some cards that currently use the common iso-7816 operations
-    only SELECT with return of FCI/FCP can be applied.
-    
-    In iso-7816 'select-file' handle, if 'SELECT without FCI' fails with error code 6A86,
-    then retry 'SELECT with FCI'. Other error code can be added.
-    
-    Sorry for the 'coding style' noise.
-
-commit a4ac33f32a09a634eef01dd22136c40d8cce092c
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Sun Nov 11 20:36:57 2012 +0100
-
-    build sc-hsm-tool: link with OpenSSL libs
-
-commit 7c714860a22beb42e2e4d30f406f140e2e69d518
-Author: Andreas Schwier <andreas.schwier at cardcontact.de>
-Date:   Fri Nov 9 18:06:14 2012 +0100
-
-    sc-hsm: Fixed bug decoding CVCs without domain parameter
-
-commit 33da14c45938d47601c5b4325bba8cac45c2d993
-Author: Andreas Schwier <andreas.schwier at cardcontact.de>
-Date:   Thu Nov 8 21:38:47 2012 +0100
-
-    sc-hsm: Added code to prevent CV certificates being listed as X.509 certificates
-
-commit ffb20e5916550f0dd00592efa113ea23a364ebef
-Author: Andreas Schwier <andreas.schwier at cardcontact.de>
-Date:   Sun Oct 14 14:35:46 2012 +0200
-
-    sc-hsm: Added sc-hsm-tool with DKEK support and key wrap / unwrap
-
-commit 8d35b2cf58d45fa19a5d20b6450b32bfb36366c1
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Sun Nov 11 00:57:09 2012 +0100
-
-    build MSI: add openpgp.profile
-
-commit 1d1abe4c2122c441582c65e59f2fcb8d4a34833f
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Sun Nov 11 00:42:52 2012 +0100
-
-    pkcs15-crypt tool: set HASH_NONE crypto flags when the hash do not asked
-    
-    without this for the cards that have only RAW mechanism
-    it's not possible to compute signature with PKCS1 padding and without hash.
-
-commit 7fbca94698516b7785b86e901443e7204dfc5c58
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Fri Nov 9 14:36:14 2012 +0100
-
-    opensc: new card operation 'read-public-key'
-    
-    In PukDF of PKCS#15 the public key value can be presented by 'direct value', by path or by path and reference.
-    For the different cards the public key can be stored in EF, internal EF or in card specific SDO (security data objects).
-    A new card handle allows to read out the public key from the card specific SDOs.
-
-commit 6819b32e185f72c15a3028d06740dcd48424f9e5
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Fri Nov 9 14:34:46 2012 +0100
-
-    pkcs15-tool: for public key show the presence of 'direct' value
-
-commit 62fd67f6a8baf2e17dcbb645dc5273383d21653b
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Fri Nov 9 14:33:23 2012 +0100
-
-    gemsafeV1: set 'auth-method' for the emulated PIN PKCS#15 object
-
-commit 01663218353dd2c1a23fdbcaeab93cd77ca24dd3
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Sun Nov 4 16:44:34 2012 +0100
-
-    libopensc: increase maximum number of card drivers
-    
-    http://www.opensc-project.org/pipermail/opensc-devel/2012-October/018552.html
-    Default driver is disabled on 0.13 because there are more drivers listed in ctx.c. (leonardo.schenkel at gmail.com)
-    
-    SC_MAX_CARD_DRIVERS is increases from 32 to 48. It's not the best solution, but the most rapid.
-    Will be waiting for the better proposals.
-
-commit e35febed5b1f95453bbbe04eb2d801b8fcea36c3
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Sun Oct 21 16:30:06 2012 +0200
-
-    pkcs15: use whe available the pkcs15 object content
-    
-    when reading certificate, try to get the pkcs15 object's content
-    before reading the certificate file.
-
-commit 4cf3a3b2042456ab0f3247683e5ab5aa1a7174f8
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Sun Oct 21 16:08:04 2012 +0200
-
-    move CK_VERSION data from 'pkcs15' to 'sc-card'
-    
-    CK_VERSION is included into PKCS#11 data but is not specified by PKCS#15.
-    
-    CK_VERSION can be provided by card's pkcs15 emulator or by the card's driver,
-    including the cards with the native support of pkcs#15 (and thus without pkcs15 emulator).
-    
-    That's why the more general solution is to have these data included into 'sc-card' data type.
-
-commit aaedef70b503b49c5b731e8c4e000751c3b510bb
-Author: Andreas Schwier <andreas.schwier at cardcontact.de>
-Date:   Sun Oct 14 21:01:28 2012 +0200
-
-    sc-hsm: Added ability to initialize SmartCard-HSM using C_Initialize and C_InitPIN on PKCS#11 interface
-
-commit fba298c6f44da9cdb1a9445ec6a561ae472b8195
-Author: Andreas Schwier <andreas.schwier at cardcontact.de>
-Date:   Tue Oct 9 22:11:52 2012 +0200
-
-    pksc11: Added ability to indicate hardware and firmware version information at PKCS#11 interface
-
-commit 6b7d8af08ef98357ecdea13b444892b3b5ccfebd
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Wed Oct 3 16:24:47 2012 +0200
-
-    build: release candidate 0.13.0 RC1
-
-commit 40ff0e4ede64b28a060b97fe79c3aad06fb0296b
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Tue Oct 2 09:26:35 2012 +0200
-
-    pkcs11: Fixed SIGV when deleting public key objects via PKCS#11
-    
-    Thanks to Andreas Schwier.
-
-commit c91f0e84cb6888134fd9e77c6ade1a59d2b6a767
-Author: riham <riham at riham-OptiPlex-380>
-Date:   Thu Sep 13 15:38:47 2012 +0800
-
-    entersafe: Disable RSA:512bits that modified in entersafe_generate_key and entersafe_store_key function
-    
-    1.Added a prompt while initializing ePass2003 \n 2.Modify code to disable 512bit key
-
-commit 4b9e82d3927afb867569e9da60c002af5ad53b94
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Mon Oct 1 13:30:35 2012 +0200
-
-    MSI: illegal caracters in component ID
-    
-    OpenSC.wxs(168) : error CNDL0014 : The Component/@Id attribute's value, 'sc-hsm.profile', is not a legal identifier.  Identifiers may contain ASCII characters A-Z, a-z, digits, underscores (_), or periods (.).  Every identifier must begin with either a letter or an underscore.
-
-commit 72786abe1f95763532a4c2462e332caaa7557908
-Author: Andreas Schwier <andreas.schwier at cardcontact.de>
-Date:   Thu Sep 27 15:50:15 2012 +0200
-
-    sc-hsm: Added write support for RSA and ECC keys, certificates and data objects
-
-commit a9393aa983827f667881f247f18c1d38b7111221
-Author: Andreas Schwier <andreas.schwier at cardcontact.de>
-Date:   Tue Sep 25 15:34:07 2012 +0200
-
-    framework-pkcs15: Fixed a SIGV when key generation returned ERROR_NOT_SUPPORTED
-
-commit 1619a423756f350fec381f83428adef0c03b526c
-Author: Andreas Schwier <andreas.schwier at cardcontact.de>
-Date:   Mon Sep 24 22:12:01 2012 +0200
-
-    ecc: Adding more curves
-
-commit db3f5f5f17ce34bc246d7cd98cad847da1a27485
-Author: Andreas Schwier <andreas.schwier at cardcontact.de>
-Date:   Mon Sep 24 15:27:18 2012 +0200
-
-    framework-pkcs15: Fixed issued with uninitialized variable keysize
-
-commit f508b21253ce1fa8bd034a1e871cbfa6dedda642
-Author: Andreas Schwier <andreas.schwier at cardcontact.de>
-Date:   Thu Sep 20 09:15:53 2012 +0200
-
-    pkcs15: Add support to encode EC private key description
-
-commit 7b943b934b82841178c045a6996d5202b9f808c0
-Author: Andreas Schwier <andreas.schwier at cardcontact.de>
-Date:   Thu Sep 20 09:14:52 2012 +0200
-
-    pkcs15: Fixed typo
-
-commit 02fe6d474b94c2e4652fd0825dd846f583d31eef
-Author: Andreas Schwier <andreas.schwier at cardcontact.de>
-Date:   Fri Aug 31 11:34:21 2012 +0200
-
-    pkcs11-tool: Fixed issue with ID increment failing on constant data
-
-commit 249b769a4b4362e48190232c5a64d896c20f1b4e
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Mon Oct 1 10:47:52 2012 +0200
-
-    pkcs11: unlink 'pubkey' FW object when deleting related certificate
-    
-    Thanks to Andreas Schwier.
-    http://www.opensc-project.org/pipermail/opensc-devel/2012-September/018455.html
-    
-    In PKCS#11 FW, the 'certificate' FW object is used to create corresponding 'public'key' FW object
-    or to get some of its attributes.
-    Seg.fault occured when, in the same session, the related certificate was destroyed and after that
-    there was the attempt to get such public key attributes.
-
-commit df9a4d0b2ce50dcdae4214c09e86a2acb03f5826
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Sun Sep 30 22:38:27 2012 +0200
-
-    pkcs15: for 'sc_pkcs15_cer's data use the 'der' object type
-    
-    To hold the raw certificate blob in 'sc_pkcs15_cert' data use the 'sc_pkcs15_der' data type.
-    also:
-    ; in 'pkcs15-cert.c' use short call of the debug messages;
-    ; in 'destroy-object' pkcs15 framework handler take into account the multi-application cards:
-    -- when binding card use the application info;
-    -- when finalizing profile use the application ID.
-
-commit ea40e7fe24a3b410e38bbb18a0ca995ee19dae0e
-Author: Ludovic Rousseau <ludovic.rousseau+github at gmail.com>
-Date:   Tue Sep 25 22:57:52 2012 +0200
-
-    Use AM_CPPFLAGS instead of INCLUDES
-    
-    Fix autoreconf warnings:
-    
-    $ autoreconf -vis -Wall
-    [...]
-    src/common/Makefile.am:12: warning: 'INCLUDES' is the old name for 'AM_CPPFLAGS' (or '*_CPPFLAGS')
-    src/libopensc/Makefile.am:19: warning: 'INCLUDES' is the old name for 'AM_CPPFLAGS' (or '*_CPPFLAGS')
-    src/minidriver/Makefile.am:15: warning: 'INCLUDES' is the old name for 'AM_CPPFLAGS' (or '*_CPPFLAGS')
-    src/pkcs11/Makefile.am:10: warning: 'INCLUDES' is the old name for 'AM_CPPFLAGS' (or '*_CPPFLAGS')
-    src/pkcs15init/Makefile.am:36: warning: 'INCLUDES' is the old name for 'AM_CPPFLAGS' (or '*_CPPFLAGS')
-    src/scconf/Makefile.am:12: warning: 'INCLUDES' is the old name for 'AM_CPPFLAGS' (or '*_CPPFLAGS')
-    src/sm/Makefile.am:8: warning: 'INCLUDES' is the old name for 'AM_CPPFLAGS' (or '*_CPPFLAGS')
-    src/tests/Makefile.am:9: warning: 'INCLUDES' is the old name for 'AM_CPPFLAGS' (or '*_CPPFLAGS')
-    src/tools/Makefile.am:15: warning: 'INCLUDES' is the old name for 'AM_CPPFLAGS' (or '*_CPPFLAGS')
-
-commit 3656b478f08c6ea08a7fc200f9121b549754bccc
-Author: Ludovic Rousseau <ludovic.rousseau+github at gmail.com>
-Date:   Tue Sep 25 17:56:55 2012 +0200
-
-    Use AX_PTHREAD instead of ACX_PTHREAD
-    
-    configure.ac:304: warning: The macro `ACX_PTHREAD' is obsolete.
-    configure.ac:304: You should run autoupdate.
-    m4/ax_pthread.m4:87: ACX_PTHREAD is expanded from...
-
-commit 628ead7e410c136e4e269abf61f3a74ddaa111f6
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Mon Sep 24 11:48:33 2012 +0200
-
-    pkcs11-tool: suppress warnings about the missing attributes
-    
-    when showing an object  do not print warnings about missing 'uncommon' attributes
-
-commit ceef4c0be399339ef8c5d6f522ebe79f3a62c801
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Mon Sep 24 11:48:02 2012 +0200
-
-    iasecc: remove ostentatious TODO messages
-
-commit d525ca97e39cf1ca7a89f03a3a8566d44a6dd27d
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Sun Sep 23 21:02:31 2012 +0200
-
-    libopensc: OID with only zeros in array do not valid
-
-commit 760cd1cfbd6149d9115d9d55e6a98efe66df891e
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Sun Sep 23 16:51:25 2012 +0200
-
-    pkcs15-tool: non-initialised OID
-
-commit 2a88453aaa4e8292f3f15f2bf8fe86ac999437f3
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Sun Sep 16 21:54:39 2012 +0200
-
-    build: Illegal char '-' in: 'Version: 0.13.0-pre1'
-
-commit 961059a05285921c5431a8a2d8b86a164c12da0e
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Tue Sep 11 17:13:39 2012 +0200
-
-    build: include to 'dist' the files used by Windows build
-
-commit 58b43049576088dff48b01b20fbfedde20249054
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Sun Sep 2 00:12:57 2012 +0200
-
-    libopensc: 'init', 'format', 'compare', 'is-valid' OID procedures
-    
-    In a reason of number of bugs(*) that concern the OID management,
-    the general usage OID procedures 'init', 'format', 'compare', 'is-valid' are introduced.
-    These procedures should be used by all actors: libopensc, pkcs15, pkcs11, tools, ....
-    
-    (*)
-    This bug reported by Andreas Schwier :
-    https://github.com/OpenSC/OpenSC/commit/8e75d971cb7eadfef9b5b50adb3cb6d18e641ed2#commitcomment-1792477
-    
-    In pkcs15-algo sc_asn1_get_algorithm_info() can return the OID without ending '-1's:
-    https://github.com/OpenSC/OpenSC/blob/staging/src/libopensc/pkcs15-algo.c#L452
-    https://github.com/OpenSC/OpenSC/blob/staging/src/libopensc/pkcs15-algo.c#L459
-
-commit d5ee8a80b501e4bfec08b3d3e78bb4d46970cf21
-Author: Andreas Schwier <andreas.schwier at cardcontact.de>
-Date:   Sun Aug 26 15:14:21 2012 +0200
-
-    sc-hsm: Added fallback for readers that do not support extended length. Without extended length, RSA 2048 bit operations will not work.
-
-commit ee94020919d41ee35c49bf290fe59a12ed453dfe
-Author: Andreas Schwier <andreas.schwier at cardcontact.de>
-Date:   Fri Aug 31 11:57:16 2012 +0200
-
-    pkcs15-init: Fixed bugs and improved isolation between framework and emulation layer
-    
-    select_object_path: Fixed misplaced return and wrong return code. This bug is the cause why a profile
-    must include a template even for fully emulated cards.
-    
-    sc_pkcs15init_store_certificate: Added a call to the emulation layer when the private key
-    description requires an update after storing a certificate. Should not break existing code.
-    
-    sc_pkcs15init_delete_object: Now calling the emulation layer before the frameworks tries to delete
-    files itself. An emulation that deletes object explicitly and leaves the deletion of some objects
-    to the framework will now need to completely handle deleting objects (by calling the methods of the
-    framework).
-    
-    sc_pkcs15init_update_certificate: Missing call to the emulation layer added.
-
-commit ed18b789d7249cc6b2d79c57ed180470b2cb1c36
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Fri Aug 31 15:03:57 2012 +0200
-
-    win32: add windows version of opensc.conf.in
-    
-    it do not contains macros that have to be resolved by 'configure'.
-
-commit 8c342ec7725dad8e354fd36e782d0ebd7d5eca41
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Sat Aug 25 20:08:56 2012 +0200
-
-    tools: t404: redesign treatment of 'reader' option
-    
-    in previous version
-    first of all the 'reader' option's value was converted to hexadecimal form,
-    used as ATR value
-    and all present readers where scanned to find the inserted card with such ATR.
-    Only after this the 'reader' option was used as reader's number or reader's name.
-    
-    Currently in use the 'hex-to-bin' procedure accepts for conversion one digit,
-    and so even if the 'reader' option value is one digit,
-    the useless search over all present readers take place.
-    
-    In the current version the order of checks if kept (ATR, reader's number, reader's name),
-    but enforced the validity check of ATR, presented by 'reader' option.
-    Also the option is accepted as reader's number only if the 'entire' option's string can be converted to integer.
-    
-    Thanks to 'jbwisemo' for cooperation.
-    https://www.opensc-project.org/opensc/ticket/404
-
-commit 41861e42b01539856b31f758dfde9ba53749eaaa
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Sun Aug 26 11:16:30 2012 +0200
-
-    no 'pace' in common part
-    
-    'PACE' is extremely card specific protocol and has not to be ostensibly
-    present in the common part of OpenSC:
-     * currently in OpenSC there is no card driver that supports or uses this protocol;
-     * amazing content of the common 'sc_perform_pace' -- beside the verbose logs
-       the only substantial action is to call the card/reader specific handler.
-       According to the current sources and the pull request 83
-       this 'common' procedure is called by the card driver or
-       card specific tool/operation.
-     * currently the 'PACE' can be thouroghly tested only by one person (Frank Morgner),
-       and only using the OpenSSL patched with the PACE specific patch.
-       So, at least a dedicated configuration option could be introduced when comiting PACE to the common part.
-     * common 'sc_perfom_pace' has the same role as the 'initialize-SM' handler of the existing SM framework
-       and can be implemented as card specific SM, as the others cards do.
-       This confirmed by Frank Morgner, the author of PACE commits and nPA card driver, himself.
-       (https://github.com/OpenSC/OpenSC/pull/83)
-
-commit 7c39aeefb940fdf783d1b9a1963bf6bf50aa627a
-Author: Ludovic Rousseau <ludovic.rousseau+github at gmail.com>
-Date:   Fri Aug 24 00:23:32 2012 +0200
-
-    Fix potential NULL pointer dereference
-    
-    Coverity: Dereference before null check (REVERSE_INULL)
-    Directly dereferencing pointer "pin_obj".
-
-commit 9ca47cded668ba14ed2a5a13544798e12473cb5c
-Author: Ludovic Rousseau <ludovic.rousseau+github at gmail.com>
-Date:   Fri Aug 24 00:14:00 2012 +0200
-
-    Fix a memory leak
-    
-    Do not forget to also free data in case of error.
-    
-    Coverity: Resource leak (RESOURCE_LEAK)
-    Calling allocation function "calloc".
-
-commit ed959004dd09fbe6afc93ceb810a4dc8626eec34
-Author: Ludovic Rousseau <ludovic.rousseau+github at gmail.com>
-Date:   Fri Aug 24 00:10:01 2012 +0200
-
-    Fix a potential memory leak
-    
-    If tlvblock is not stored then the value is lost and the allocated
-    mempry is leaked.
-    
-    Coverity: Resource leak (RESOURCE_LEAK)
-    Calling allocation function "pgp_build_tlv" on "tlvblock".
-
-commit b90a5572370f686b7ac6f474a0f113d18f6da650
-Author: Ludovic Rousseau <ludovic.rousseau+github at gmail.com>
-Date:   Thu Aug 23 23:45:23 2012 +0200
-
-    Fix SC_PKCS15_TYPE_PRKEY_EC case
-    
-    Coverity: Missing break in switch (MISSING_BREAK)
-    
-    "A break statement was missing. The case SC_PKCS15_TYPE_PRKEY_EC was then
-    managed as a SC_PKCS15_TYPE_PRKEY_DSA" (Ludovic Rousseau)
-    
-    "the break here has no sense, because LOG_TEST_RET will always return SC_ERROR_NOT_SUPPORTED before"
-    (Frank Morgner https://github.com/OpenSC/OpenSC/pull/85)
-    
-    'break' is kept to satisfy coverity.
-
-commit 68c87fd88ec98d1bee63b8fd7f72e5425705ad41
-Author: Andreas Schwier <andreas.schwier at cardcontact.de>
-Date:   Fri Aug 24 13:15:39 2012 +0200
-
-    pkcs15-tool: Fix display error for fieldLength of ECC private keys
-
-commit cdfc22be732c047b6775c59b67f64ae921c1c131
-Author: Andreas Schwier <andreas.schwier at cardcontact.de>
-Date:   Fri Aug 24 09:39:45 2012 +0200
-
-    sc-hsm: Removed dead code and memory leak if serial number is set more than once
-
-commit deeb1cde96f34c006093aed0d0b80fbe025a87b1
-Author: Andreas Schwier <andreas.schwier at cardcontact.de>
-Date:   Fri Aug 24 09:25:45 2012 +0200
-
-    sc-hsm: Added registry key file to makefile.am
-
-commit 30e65047201ead74567326059a9f17cf600f83fa
-Author: Andreas Schwier <andreas.schwier at cardcontact.de>
-Date:   Wed Aug 22 18:33:31 2012 +0200
-
-    sc-hsm: Add registry key to enable SmartCard-HSM for use with minidriver
-
-commit cb46192d89cd3b791e83854cbe6985f048a46633
-Author: Andreas Schwier <andreas.schwier at cardcontact.de>
-Date:   Wed Aug 22 12:45:03 2012 +0200
-
-    minidriver: Added support for ASCII encoded serial numbers
-
-commit d180fc324c8da81c32e298a3403c8af08333c631
-Author: Andreas Schwier <andreas.schwier at cardcontact.de>
-Date:   Mon Aug 20 20:36:55 2012 +0200
-
-    sc-hsm: Added basic cvc support to read device identity. Used for token serial number and GUID generation
-
-commit f8cdb0856f95179c9de0a624cdcd02c6fbe584ac
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Thu Aug 23 09:23:23 2012 +0200
-
-    asn1: 'asn1_prkey' members order
-    
-    Unwary rebase of Frank Tater's proposal introduced the bug of invalid
-    order of the sub-key types in the 'asn1_prkey' array in 1a7ca32865 .
-
-commit 2e0ef7a0ab3d92fa3d20f6a7c15e48291fbdaef0
-Author: Andreas Schwier <andreas.schwier at cardcontact.de>
-Date:   Thu Aug 16 16:00:30 2012 +0200
-
-    sc-hsm: Improved usablity in opensc-explorer
-
-commit 46efb61a2b844990500f667bbbcc120882e7bf37
-Author: Andreas Schwier <andreas.schwier at cardcontact.de>
-Date:   Mon Aug 13 15:37:08 2012 +0200
-
-    sc-hsm: Fixed field size constants for 320 bit curve
-
-commit 0fa6e7f97773aa3a3eb71f03b25a8fa53b7c6c91
-Author: Andreas Schwier <andreas.schwier at cardcontact.de>
-Date:   Mon Aug 13 12:45:11 2012 +0200
-
-    pkcs11-tool: Added CKM_SHA256_RSA_PKCS to tests in test_signatures
-
-commit efb4673ec8e3c307062f89600b7c890b349d4336
-Author: Andreas Schwier <andreas.schwier at cardcontact.de>
-Date:   Mon Aug 13 11:34:18 2012 +0200
-
-    Revert change to pkcs11-tool because of upstream changes in RSA signature tests
-    Fixed a typo that went undetected
-
-commit 8e8acf1ff6dd4b9694f15a0a3baece068b9e4945
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Sun Aug 12 21:19:57 2012 +0200
-
-    pkcs11-tool: implement 'find mechanism from the given list'
-    
-    and use it when testing signature
-
-commit dc927fbe3cbbcff85a267e3ada509b7ee9857c91
-Author: Andreas Schwier <andreas.schwier at cardcontact.de>
-Date:   Sat Aug 11 21:21:31 2012 +0200
-
-    sc-hsm: Undo the change to mechanism.c in commit f24bcd346340d80b552c0859942a49fd5e8feeff
-    sc-hsm: Change ECDSA signature format from DER to r/s format
-
-commit 03632f336e5987d31fc187a5489140987c37089b
-Author: Andreas Schwier <andreas.schwier at cardcontact.de>
-Date:   Sat Aug 11 17:47:21 2012 +0200
-
-    sc-hsm: Added support for ECDH
-
-commit e0f9edb121cb8bfe40c0364584a9b3f5f3383d58
-Author: Andreas Schwier <andreas.schwier at cardcontact.de>
-Date:   Fri Aug 10 12:20:48 2012 +0200
-
-    sc-hsm: fixed to be compiled with Microsoft VC
-
-commit f678b68650dd4a5c0588b5a5fa8837141a011d41
-Author: Andreas Schwier <andreas.schwier at cardcontact.de>
-Date:   Tue Aug 7 16:00:42 2012 +0200
-
-    Activated ECDSA for SmartCard-HSM
-    Fixed issues in pkcs11-tool/test_signature is card has RSA and ECDSA keys
-    Fixed bug in sc_pkcs11_signature_size that returns the wrong ECDSA signature size
-
-commit 4ff917bd251752d9fc1859a2d36d131d3126a94f
-Author: Frank Thater <frank.thater at cardcontact.de>
-Date:   Mon Aug 6 11:28:35 2012 +0200
-
-    Added obj files to Makefile.mak for windows build
-    Fixed WIN32 compiler errors
-    Adjusted log message calls to short form
-    
-    modified:   src/libopensc/Makefile.mak
-    modified:   src/libopensc/card-sc-hsm.c
-    modified:   src/libopensc/pkcs15-sc-hsm.c
-
-commit 1a7ca328659fdcd11a4755dcab5645f9a2b6dff8
-Author: Frank Thater <frank.thater at cardcontact.de>
-Date:   Tue Jul 31 14:57:00 2012 +0200
-
-    Added support for SmartCard-HSM and ECC keys
-    
-    modified:   src/libopensc/Makefile.am
-    new file:   src/libopensc/card-sc-hsm.c
-    new file:   src/libopensc/card-sc-hsm.h
-    modified:   src/libopensc/cards.h
-    modified:   src/libopensc/ctx.c
-    modified:   src/libopensc/pkcs15-prkey.c
-    new file:   src/libopensc/pkcs15-sc-hsm.c
-    modified:   src/libopensc/pkcs15-syn.c
-
-commit feb2b96127571900b8dfd00cf0c445b96eabbf1e
-Author: Peter Marschall <peter at adpm.de>
-Date:   Mon May 28 18:49:05 2012 +0200
-
-    opensc-explorer: allow filename-pattern as argument to 'ls'
-    
-    Make ls more flexible and more similar to the UNIX ls.
-
-commit 2f3ace06eca769747b1fa09d510b21020fc224e9
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Sun Aug 19 20:07:17 2012 +0200
-
-    doc: #329: explicit usage of --id for a new keys is deprecated
-    
-    'Id' option in the pkcs15-init commands to import/generate a new key
-    is deprecated. Better s to let the MW to derive an identifier from
-    the key material.
-
-commit ca08e97ab751654a753c60986a8d6e491d6e289a
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Sun Aug 19 18:02:16 2012 +0200
-
-    pkcs11: #162,#370,#115,#413: reselect application DF issue
-    
-    Limit the number of cases when applicated re-selection of application DF to strict minimum.
-    I.e. only when pkcs11 login session is not locked and private key PKCS#15 object do not
-    contain the 'path' attribute.
-
-commit cb54ebf747e0a8fd11718c51560efc35102996ad
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Thu Aug 16 16:00:35 2012 +0200
-
-    pkcs11: #371: Public key create template should not include CKA_MODULUS_BITS
-    
-    Thanks to 'z22' and Martin.
-
-commit 080010d21139c41ab452021ea7330e1f205f660b
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Thu Aug 16 15:04:14 2012 +0200
-
-    pkcs15: #268: Wrong ASN1 tagging of GOSTR3401Key
-    
-    "The encoding of {public,private}GOSTR3410Key uses tag [CONTEXT 3] which is reserved for KEAKey.
-    Caused by the fact, that the specifications (pkcs15,iso) don't define a encoding for GOST,
-    the genericKey encoding [CONTEXT 4] from iso-7816 should be used." (Andre)
-
-commit 5a0cd4139f6de866063571d4f3aaf547f329f60c
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Thu Aug 16 14:18:08 2012 +0200
-
-    libopensc: #311: possible memory corruption
-    
-    Thanks to 'frankmpunkt'.
-
-commit c6065fcfe2fbd3cb2bebffe304015da1dea6ba06
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Thu Aug 16 10:59:03 2012 +0200
-
-    doc: #377: no optional parameters for sc_context_create()
-    
-    thanks to 'TimBarton'.
-
-commit 12ec13d43c74ffc5329d044b6c85de5f3584f09a
-Author: Stef Walter <stefw at collabora.co.uk>
-Date:   Tue Oct 4 20:05:44 2011 +0200
-
-    libopensc: Make OPENSC_DEBUG environment variable without conf file
-    
-     * Make the OPENSC_DEBUG environment variable work even when no
-       conf file is available.
-    
-    https://www.opensc-project.org/opensc/ticket/388
-    
-    Signed-off-by: Viktor Tarasov <viktor.tarasov at gmail.com>
-
-commit 7e42c6d97d35d51b2ce7669082c2d8d693d406e4
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Wed Aug 15 23:06:58 2012 +0200
-
-    pkcs11-tool: #407: on Windows use O_BINARY open file mode
-    
-    https://www.opensc-project.org/opensc/ticket/407
-    http://msdn.microsoft.com/en-us/library/ee2849wt%28v=VS.71%29.aspx
-
-commit dfbc3996bf1d714ad45ac82d8294bcde73d56dd6
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Wed Aug 15 19:59:09 2012 +0200
-
-    pkcs11: #439: 'SEQUENCE' of 'SET' issue when comparing cert attributes
-    
-    Thanks to 'crank'.
-    https://www.opensc-project.org/opensc/ticket/439
-    
-    Some pkcs11 callers (i.e. netscape) will pass in the ASN.1 encoded SEQUENCE OF SET,
-    while OpenSC just keeps the SET in the issuer/subject field.
-
-commit 16b4cb6a3fbfe55c3937affa03eee3a11fc9da4e
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Tue Aug 14 15:37:24 2012 +0200
-
-    MyEID: always select in mode 'return FCI template'
-    
-    According to ch.4.2 of MyEID reference manual v1.7.6 the only possible value of P2 of 'SELECT' APDU is '00'.
-    For this reason, when caller do not request to return 'sc_file' data,
-    use the non-null dummy 'sc_file' pointer in the call of iso->select_file,
-    and thus avoid the P2 different from '00'.
-    
-    Also log calls are replaced by its short forms,
-    and resolved the 'trailing spaces' issues.
-
-commit 25f7bc5ac58758cda598e91f5082bdb0e740e161
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Sun Aug 12 21:19:57 2012 +0200
-
-    pkcs11-tool: implement 'find mechanism from the given list'
-    
-    and use it when testing signature
-
-commit 1adbb3fae7d7cef08816a30eef7d84cdb03dd373
-Author: Nguyễn Hồng Quân <quannguyen at mbm.vn>
-Date:   Wed Aug 8 10:12:11 2012 +0700
-
-    OpenPGP: Set write access more restrictive for pubkey blobs.
-    
-    marschap: "The WRITE_ALWAYS ACL tells anyone can write to this file at any time."
-
-commit a3b516a1e1b31d546d766e8c3aecde0c154e5aaf
-Author: Doug Engert <deengert at anl.gov>
-Date:   Tue Aug 7 13:53:44 2012 -0500
-
-    Add pin_cache_ignore_user_consent parameter to opensc.conf
-    
-    When OpenSC is used with a card that enforces user_consent
-    and the calling PKCS#11 application does not understand how
-    to handle the CKA_ALWAYS_AUTHENTICATE, signature operations
-    will fail.
-    
-    OpenSC will not cache a PIN that protects a user_consent
-    object as one would expect.
-    
-    This mods allows PINs to be cached even if protecting a
-    user_consent object by adding
-     pin_cache_ignore_user_consent = true;
-    option in opensc.conf.
-    
-    Thunderbird is the prime example of this situation.
-    Mozilla has accepted mods (357025 and 613507) to support
-    CKA_ALWAYS_AUTHENTICATE that will appear in NSS-3.14 but
-    this may be some time before this version is in vendor
-    distribution.
-
-commit 4e44cabcf02dcdb5df33d4d8b7a3ad7dae9a5b28
-Author: Doug Engert <deengert at anl.gov>
-Date:   Tue Aug 7 13:07:48 2012 -0500
-
-    Only 9C key needs "Pin Always" i.e. user_consent
-    
-    The 9D key does not nee the user_consent flag, as the PIV card only
-    enforces the "PIN Always" for the 9C signing key.
-    
-    Various comments cleaned up.
-
-commit 4035245649632106616cb2f82312263574ed1282
-Author: Peter Marschall <peter at adpm.de>
-Date:   Sun Jun 17 18:55:24 2012 +0200
-
-    opensc-explorer: allow longer PINs in CHANGE & UNBLOCK
-    
-    Harmonize the allowed PIN length in CHANGE & UNBLOCK with the one in VERIFY,
-    making sure they are large enough for OpenPGP, which allows up ro 32 characters,
-    and giving additional security margin for other cards.
-
-commit 71ec763604aac8b3eb15d69ce2549531eb001526
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Sat Aug 11 20:27:49 2012 +0200
-
-    opensc-explorer: warnings when compiling with Windows VC
-    
-    opensc-explorer.c(447) : warning C4101: 'count' : unreferenced local variable
-    opensc-explorer.c(940) : warning C4013: 'strlcpy' undefined; assuming extern returning int
-    opensc-explorer.c(1683) : warning C4013: '_isatty' undefined; assuming extern returning int
-    opensc-explorer.c(1726) : warning C4090: 'function' : different 'const' qualifiers
-
-commit 7f22ede919d17fa0b584d31a8bb578f0f2a46d85
-Author: Peter Marschall <peter at adpm.de>
-Date:   Sun Jun 17 21:17:09 2012 +0200
-
-    opensc-explorer: show text message for APDU result
-
-commit 95cbfbb7999743396f9ce26a745341caa45a82a2
-Author: Peter Marschall <peter at adpm.de>
-Date:   Sun Jun 17 21:16:17 2012 +0200
-
-    opensc-explorer: increase allowed bytes in RANDOM
-    
-    Allow to fetch up to 256 random bytes from the card -
-    236 being the maximal value for Le in short APDUs.
-
-commit ea8a64d95a4f6d303588d8d72dcc632e4cc646d5
-Author: Peter Marschall <peter at adpm.de>
-Date:   Sun Jun 17 13:05:52 2012 +0200
-
-    opensc-explorer: allow entering the PIN interactively
-    
-    In VERIFY, allow the user to enter the PIN unteractively if it was not given
-    on the command line, and if the card reader does not support PIN input.
-    
-    If it was not given on the command line and the card reader supports PIN input,
-    then the bahaviour is unchanged: enter PIN via card reader.
-
-commit 322e3cf40386d5efbaf9d4d0e1fb1d50dce24110
-Author: Peter Marschall <peter at adpm.de>
-Date:   Sun Jun 17 16:48:21 2012 +0200
-
-    opensc-explorer: convert CHANGE & UNBLOCK to sc_pin_cmd
-
-commit 81695df211e40ec3a652273e331926303d18c3a3
-Author: Peter Marschall <peter at adpm.de>
-Date:   Sun Jun 17 18:46:08 2012 +0200
-
-    opensc-explorer: use standard usage() everywhere
-    
-    With the improvements of the man page, there is no need any more to have
-    local help texts for functions.
-
-commit 5f47903a73b06593dfe20e12ab0b5900bbe414d7
-Merge: c5dd9de 72c4060
-Author: Ludovic Rousseau <ludovic.rousseau+github at gmail.com>
-Date:   Wed Aug 8 00:13:49 2012 -0700
-
-    Merge pull request #80 from LudovicRousseau/staging
-    
-    Fix typos in NEWS file
-
-commit 72c4060f1d20656d4d8f4808400a33974f2e3635
-Author: Ludovic Rousseau <ludovic.rousseau+github at gmail.com>
-Date:   Tue Aug 7 00:16:47 2012 +0200
-
-    Fix compilation error on Mac OS X
-    
-    In file included from pkcs15.c:30:
-    cardctl.h:870: error: expected specifier-qualifier-list before 'time_t'
-    
-    Change-Id: I5faad5462ba6268fd7cf48a04f41e1755597ad0c
-
-commit 9bfe3fed831420d7628759415d50aeca6cd20563
-Author: Ludovic Rousseau <ludovic.rousseau at gmail.com>
-Date:   Mon Aug 6 09:10:28 2012 +0200
-
-    More typo fixed
-
-commit 6849c909b38d31d7612cc5dfa445b4288c98d445
-Author: Ludovic Rousseau <ludovic.rousseau at gmail.com>
-Date:   Mon Aug 6 09:02:42 2012 +0200
-
-    Fix typo
-
-commit 12b545f9a9edb6a1f72fff7a2440275415c26d1e
-Merge: a63c924 c5dd9de
-Author: Ludovic Rousseau <ludovic.rousseau at gmail.com>
-Date:   Mon Aug 6 09:01:52 2012 +0200
-
-    Merge remote-tracking branch 'upstream/staging' into staging
-
-commit c5dd9decaa1ee8f90c0f4eec1917db871b070d6a
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Sun Aug 5 19:10:06 2012 +0200
-
-    release 0.13.0: update NEWS file
-
-commit c7827e5e4b309cf8ad3cd45aab9cf691d74c7e7d
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Sun Jul 29 21:41:44 2012 +0200
-
-    sm: change SM data types, thanks to Frank Morgner for revision
-    
-    http://www.opensc-project.org/pipermail/opensc-devel/2012-July/018232.html
-
-commit 7301715624b472d62e19208d1ebf949675852328
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Sun Jul 29 21:40:47 2012 +0200
-
-    sm: link 'local' SM module with OpenSSL's crypto library
-
-commit 49e7f529b2a987706dc6684f250832b95e5ac4d9
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Sun Jul 29 21:38:39 2012 +0200
-
-    sm: misplaced check of the 'get-sm-apdus' return code
-
-commit e34866f18819e05f6c89a50c9c3b69929887e580
-Author: Nguyễn Hồng Quân <quannguyen at mbm.vn>
-Date:   Tue Jul 17 20:24:42 2012 +0700
-
-    OpenPGP: Accept authentication key for S/MIME decrypting.
-    
-    The card contains only 1 certificate, which can be used for encrypting.
-    But this certificate is bound with authentication key, so when decrypting,
-    the authentication key will be presented to check.
-    This commit allows to bypass the check in driver. However, it is not enough.
-    The users have to import the same key to "Encryption key" to help the card find
-    right key to work.
-    
-    OpenPGP: Add log and comments.
-    
-    OpenPGP: Pretend to select dummy files.
-    Some files are needed by pkcs15init, but not exist in OpenPGP card.
-    We pretend to know these dummy files to make pkcs15init successful.
-    
-    Compilation error on windows:
-    when declaring array use explicit size, add pkcs15-openpgp.obj in Makefile.mak
-
-commit 241bfded4d62c4576b58ada36644f55da4e30593
-Author: Nguyễn Hồng Quân <quannguyen at mbm.vn>
-Date:   Fri Jul 6 11:01:47 2012 +0700
-
-    OpenPGP-pkcs15init: Support generating key via pkcs15-init tool.
-    
-    OpenPGP-pkcs15int: Add more debug log.
-    
-    OpenPGP-pkcs15init: Add more checks in key generation.
-    Check for key ID. Set default key.
-    Check for result of key generation from driver.
-
-commit 30e61d9fbf4dd87b3076ee7f8a10575e311d45a8
-Author: Nguyễn Hồng Quân <quannguyen at mbm.vn>
-Date:   Thu Jul 5 16:49:01 2012 +0700
-
-    OpenPGP: Handle access on dummy files, which is assumed to exist by pkcs15init.
-    
-    OpenPGP: Update card algorithms after importing key.
-    
-    OpenPGP: Add SC_ALGORITHM_ONBOARD_KEY_GEN flag to card algorithms.
-
-commit b67063dcd836e417250886c55d8eb6c0fabfbd66
-Author: Nguyễn Hồng Quân <quannguyen at mbm.vn>
-Date:   Thu Jun 21 16:11:58 2012 +0700
-
-    pkcs15init-openpgp: Support for private key import in pkcs15init.
-    
-    Example command:
-    pkcs15-init --delete-objects privkey,pubkey --id 3 --store-private-key quan-key.pem  --auth-id 3 --verify-pin --extractable --id 3
-    
-    pkcs15init-OpenPGP: Some parts in openpgp.profile are not used.
-
-commit 7123638454e2098dd766d6bac8667a69bbbf3602
-Author: Nguyễn Hồng Quân <quannguyen at mbm.vn>
-Date:   Thu Jun 21 15:22:44 2012 +0700
-
-    OpenPGP: Correct access condition for some pubkey blobs.
-    
-    OpenPGP: Don't really delete pubkeys blobs.
-
-commit affb38304e1241c6d68664b596898617d3189bc6
-Author: Nguyễn Hồng Quân <quannguyen at mbm.vn>
-Date:   Wed Jun 20 18:03:09 2012 +0700
-
-    pkcs15-init tool: Change the order of action.
-    
-    DELETE_OBJECT will be done before STORE_XXX.
-
-commit 70b7b4aa54f9748fdf2e4a3e4179fe5856e4bad6
-Author: Nguyễn Hồng Quân <quannguyen at mbm.vn>
-Date:   Wed Jun 20 17:56:54 2012 +0700
-
-    pkcs15init-OpenPGP: Add store_data functions.
-    
-    We need this function to use OpenPGP's specific action flow instead pkcs15init's default.
-    This will help to avoid redundant steps which may make the overall process fail.
-
-commit 0518ced8e0e472a75603c9057038339a1d67ad15
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Sun Jul 29 12:56:03 2012 +0200
-
-    asn1: export 'asn1-write-element' function
-    
-    ... used by OpenPGP driver
-
-commit 42ad3c1dff1ec5324e780961fb20807e3f289996
-Author: Nguyễn Hồng Quân <quannguyen at mbm.vn>
-Date:   Mon Jun 18 09:43:25 2012 +0700
-
-    OpenPGP: Add support for key import at driver level.
-    
-    OpenPGP: Some indentations need to be tab-size-independent.
-    
-    OpenPGP: Check for null data when storing fingerprints.
-    
-    OpenPGP: Allow to provide creation time to store (when gen/import key).
-    Old: Only store current time.
-    New: Can provide time to store, not only calculate current time.
-    
-    OpenPGP: Correct setting content of pubkey blobs after key generation.
-    
-    cardctl: Add definitions to support key import in OpenPGP.
-    
-    OpenPGP: Add support for key import at driver level.
-
-commit 69e30ead8998abab129b9319a51f134fd324f84a
-Author: Nguyễn Hồng Quân <quannguyen at mbm.vn>
-Date:   Wed Jun 6 17:04:33 2012 +0700
-
-    openpgp-tool: Key generation support.
-    
-    openpgp-tool: PIN verfication support.
-    openpgp-tool: Add notification in case of error.
-    openpgp-tool: Add manual for key generation and PIN verification.
-
-commit 50e37aa849e697c940276554212ad42c51a78787
-Author: Nguyễn Hồng Quân <quannguyen at mbm.vn>
-Date:   Thu Jun 14 09:05:16 2012 +0700
-
-    OpenPGP: Correct the way to set output after generating key.
-    
-    Correct the way to parse response data.
-    Updated wrong blob for pubkey info <~~ Fix.
-    
-    OpenPGP: Store creation time after generating keys.
-    
-    OpenPGP: Put_data: Handle the case that DO exists but its blob does not.
-    When checking DO before writing, relying on blobs only will miss the case that DO exists but its blob does not, when DO is non-readable.
-    
-    OpenPGP: Set algorithm attributes before generating key.
-    
-    OpenPGP: Add dependency of OpenSSL.
-    
-    OpenPGP: Calculate and store fingerprint.
-    Calculate and store fingerprint after generating key.
-    
-    OpenPGP: Update blob of pubkey info.
-    Update blob holding pubkey info after generating key.
-    
-    OpenPGP: Add step to update card algorithms.
-    Update card algorithms after generating key. However, this step is not implemented yet, because of suspection about wrong data (see code comment).
-
-commit 8261490ec1abd90af83328c176143fe516fdc9ae
-Author: Nguyễn Hồng Quân <quannguyen at mbm.vn>
-Date:   Mon Jun 4 09:54:40 2012 +0700
-
-    PKCS15-OpenPGP: Change the way emu_init return in error case.
-
-commit ed0e2be30573b6428f0f31e5ec92682c45b675c9
-Author: Nguyễn Hồng Quân <ng.hong.quan at gmail.com>
-Date:   Fri Jun 1 17:48:30 2012 +0200
-
-    Add pkcs15init-binding for OpenPGP
-
-commit 58a4821689b3587c443edeaf7706ae876112f445
-Author: Doug Engert <deengert at anl.gov>
-Date:   Mon Jul 23 13:38:32 2012 -0500
-
-    piv-tool -s not sending APDU - missing code
-    
-    The code to send the APDU to the piv card when using
-    piv-tool -s xx:xx:xx... was inadvertently removed
-    on 2011-04-26 02:29:53 by: 1cdb3fa9716bf287387020f06892a5f45cde98fc
-    APDU parsing: switch to Frank Morgner's implementation
-    
-    The missing code is replaced.
-    
-    The -s option is infrequently used, so the problem
-    was not spotted earlier.
-
-commit 124d6e3a407415c051d862771ab813a73ec8a498
-Author: Kalev Lember <kalevlember at gmail.com>
-Date:   Mon Feb 13 14:34:31 2012 +0200
-
-    esteid: Do not set CKA_ALWAYS_AUTHENTICATE for the "Allkirjastamine" key
-    
-    CKA_ALWAYS_AUTHENTICATE implies CKU_CONTEXT_SPECIFIC login, but all this
-    key really should need is a C_Login with CKU_USER.
-    
-    The historical reason for having CKA_ALWAYS_AUTHENTICATE set was to keep
-    Firefox/NSS from using that particular key for SSL connections. However,
-    starting with Firefox 8, NSS ignores Non Repudiation certificates for
-    SSL and that makes the CKA_ALWAYS_AUTHENTICATE workaround unnecessary.
-    
-    Now that Firefox is fixed, drop the workaround in OpenSC so that
-    applications that follow the pkcs11 spec wouldn't have to login twice to
-    access the key.
-
-commit 4e5ef8f1c93442b54cd0067db394746a603c8cb6
-Author: Nguyễn Hồng Quân <quannguyen at mbm.vn>
-Date:   Mon Jun 4 09:54:00 2012 +0700
-
-    PKCS15 - OpenPGP: Add more comments.
-
-commit 0b469ed31e7620e1bfb9e8b707bfe4cb9e94aee9
-Author: Nguyễn Hồng Quân <quannguyen at mbm.vn>
-Date:   Mon Jun 18 08:53:40 2012 +0700
-
-    OpenPGP: Add an explanation when building APDU.
-
-commit 4b9ca80434be3e3b0be64e7c10929ad304593fb4
-Author: Peter Marschall <peter at adpm.de>
-Date:   Fri Jun 15 20:00:20 2012 +0200
-
-    tools docu: correct typo, improve style
-
-commit 8583197b6b7907f7986b36bacae75ff6aca95892
-Author: Peter Marschall <peter at adpm.de>
-Date:   Sun Jun 17 18:45:33 2012 +0200
-
-    opensc-explorer docs: various improvements
-    
-    * document the UNBLOCK function
-    * format the examples better, and explain what they do
-    * extend the documentation for CD
-
-commit cf6b5e79038a1316a5a237d2a7b89fcf28c0388b
-Author: Nguyễn Hồng Quân <ng.hong.quan at gmail.com>
-Date:   Tue May 29 17:27:24 2012 +0700
-
-    pkcs15init: Add more debug log.
-
-commit 31bdbd6b6a7678151288bc51c413ea42a342b00b
-Author: Frank Morgner <morgner at informatik.hu-berlin.de>
-Date:   Tue Jul 3 22:27:43 2012 +0200
-
-    use error code if no SM was applied
-
-commit 1d6fae224176bff266b443ef09770d91b76908fe
-Author: Diego Elio Pettenò <flameeyes at flameeyes.eu>
-Date:   Sun Jun 24 01:13:04 2012 -0700
-
-    build: use autoconf's MKDIR_P not automake's (deprecated) mkdir_p.
-
-commit e423bac47438cb6e9e0a9ae551afede03d8b994a
-Author: Mathias Brossard <mathias at brossard.org>
-Date:   Thu Jun 28 16:59:40 2012 +0200
-
-    Move case block so that fall-through works as intended
-
-commit bfbef6fe2bad58a767efa5677fd43d057717fa7e
-Author: Mathias Brossard <mathias at brossard.org>
-Date:   Thu Jun 28 16:56:59 2012 +0200
-
-    Support key type inference for CKM_GOSTR3410_KEY_PAIR_GEN
-
-commit 3fc4547e45710f8292e5c181212213e72c4c268d
-Author: Mathias Brossard <mathias at brossard.org>
-Date:   Mon Jun 25 17:45:19 2012 +0200
-
-    Add CKM_GOSTR3410_KEY_PAIR_GEN if card supports onboard generation
-
-commit 0914b1eca773769731b766d728a7419b6559ffd0
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Tue Jun 19 18:04:37 2012 +0200
-
-    libopensc: SM: not all the APDUs need to be wrapped
-    
-    For some cards some APDUs are always transmitted in a plain mode,
-    even if SM session is opened.
-    For these APDUs the 'get_sm_apdu' card's handler returns SUCCESS without wrapped APDU version.
-    In such cases 'transmit' is called for the plain APDU.
-
-commit 68e217ceee253083f73c39f2359fcd0904964969
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Tue Jun 19 17:43:01 2012 +0200
-
-    pkcs15: free NULL key is not error
-    
-    when freeing key object, do not throw an error if supplied key pointer is NULL;
-    
-    sc_pkcs15_free_prkey() procedure should not free the supplied key pointer,
-    the body of this procedure is replaced by body of sc_pkcs15_erase_prkey().
-    staitc sc_pkcs15_erase_prkey() is not more used.
-
-commit f9a13179d88bb1aa09b3d3ca74c93991ec92ecd4
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Tue Jun 19 17:37:51 2012 +0200
-
-    AuthentIC: when using SM decrease max-send-size value
-    
-    update list of APDUs that always sent in plain (non SM wrapped) mode
-
-commit 34541e95c48b25b6e2944699e3fe4738445f8b26
-Author: Peter Marschall <peter at adpm.de>
-Date:   Sun Jun 17 10:49:00 2012 +0200
-
-    OpenPGP: add LOG_FUNC_CALLED() for "symmetric" logging
-
-commit 8db8f76bad9bb123d07a1d6fc18dfb5b56d35ae4
-Author: Nguyễn Hồng Quân <quannguyen at mbm.vn>
-Date:   Thu Jun 14 09:17:28 2012 +0700
-
-    OpenPGP: Change whitespace.
-
-commit ccb1067d7582a758db8abc54b224153203a1427b
-Author: Nguyễn Hồng Quân <quannguyen at mbm.vn>
-Date:   Wed Jun 13 18:31:33 2012 +0700
-
-    OpenPGP: Correct the APDU preparation step for key generation.
-
-commit 0b0aae8bc866c72cada45fb52332b1257e589b83
-Author: Peter Marschall <peter at adpm.de>
-Date:   Sat Jun 16 15:26:19 2012 +0200
-
-    openpgp-tool: remove unnecessary commas in man page
-
-commit db06b043ca237d49e1b34221ae3a137a17cff64a
-Author: Peter Marschall <peter at adpm.de>
-Date:   Fri Jun 15 14:56:46 2012 +0200
-
-    PKCS15 - OpenPGP: re-factor certificate object init
-    
-    restrict scope of some variables.
-
-commit 735883d8f616acef84840d513a7e85596fe74eae
-Author: Nguyễn Hồng Quân <quannguyen at mbm.vn>
-Date:   Thu Jun 14 08:37:22 2012 +0700
-
-    PKCS15 - OpenPGP: Change way to check certificate object.
-    
-    Old: If cert is missing, raise error.
-    New: If cert have data, declare object, otherwise, just ignore it.
-
-commit 5e295ba08d4e44ebda8fab5b8d601fc1249b7884
-Author: Nguyễn Hồng Quân <quannguyen at mbm.vn>
-Date:   Thu Jun 14 09:10:17 2012 +0700
-
-    OpenPGP: Remove unused constants.
-
-commit c64a5f34d32926a0131a907514779c4a694823f9
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Wed Jun 13 00:22:50 2012 +0200
-
-    pkcs15init: application path selection in bind procedure
-    
-    Application path can contain non-zero length path value and AID.
-    In this case select AID as DF_NAME only if length of path value is zero.
-    
-    Segfault: dereferencing NULL pointer, thanks to Magosányi Árpád
-
-commit d3dbe444e148258fbffdfc48668ba483784d4973
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Mon Jun 11 21:28:37 2012 +0200
-
-    pkcs15-init: coverity scan warning NEGATIVE-RETURNS
-    
-    CID 402540: Argument cannot be negative (NEGATIVE_RETURNS)
-
-commit 61254f8651b60d19e0ac1baae5427e7e8a620ede
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Mon Jun 11 21:16:47 2012 +0200
-
-    muscle: coverity scan warning OVERRUN-STATIC
-    
-    CID 402559: Out-of-bounds access (OVERRUN_STATIC)
-    CID 402558: Out-of-bounds access (OVERRUN_STATIC)
-
-commit ce23bba622c1b1c8ca4c8d1553dab98a370bdc3e
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Mon Jun 11 21:08:21 2012 +0200
-
-    gemsafeV1: coverity scan warning OVERRUN-STATIC
-    
-    CID 402560: Out-of-bounds read (OVERRUN_STATIC)
-
-commit aa46a210fc0533629335e393a3a519240652865a
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Mon Jun 11 20:59:45 2012 +0200
-
-    iasecc: coverity scan warning OVERRUN-STATIC
-    
-    CID 402562: Out-of-bounds read (OVERRUN_STATIC)
-
-commit 12dcf132369d14742ff2323bec29ec9edda8d0aa
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Mon Jun 11 20:10:42 2012 +0200
-
-    pkcs15-init: coverity scan warning RESOURCE-LEAK
-    
-    CID 402619: Resource leak (RESOURCE_LEAK)
-
-commit c6f4e09477ee8c41843530c7432ff5d77a6d5c83
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Mon Jun 11 20:04:08 2012 +0200
-
-    pkcs15-tool: coverity scan warning RESOURCE-LEAK
-    
-    Coverity scan CID 402622: Resource leak (RESOURCE_LEAK)
-
-commit 62eb0d05d7fa5829c46f6b861bf299705e984cc4
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Mon Jun 11 19:59:36 2012 +0200
-
-    jcop: coverity scan warning RETURN_LOCAL
-    
-    CID 402623: Pointer to local outside scope (RETURN_LOCAL)
-
-commit 629c0e8df496ccff212b93cb83b3c2b12825be1b
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Mon Jun 11 19:45:26 2012 +0200
-
-    libopensc: resource leak coverity scan warning
-    
-    Coverity warning CID: 203380: RESOURCE_LEAK;
-    use short call form of the debug messages;
-    code layout.
-
-commit 9466891752abb7fb6d7bd826f47a37e6976e56c7
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Mon Jun 11 18:48:37 2012 +0200
-
-    openpgp: coverity scan warning MISSING_RETURN
-    
-    Coverity Scan CID: 709045
-
-commit a63c924c37d16702c25ad492be3bfd4d8390a070
-Merge: d7e09b4 a305f4a
-Author: Ludovic Rousseau <ludovic.rousseau at gmail.com>
-Date:   Mon Jun 11 13:55:54 2012 +0200
-
-    Merge remote-tracking branch 'upstream/staging' into staging
-
-commit a305f4a99b330589a20ecdb28a70fe3df4b9230d
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Sun Jun 10 14:32:46 2012 +0200
-
-    build: increase minor version number
-    
-    let's start to prepare next release
-
-commit a09f3048173dd61df38eaca2756200a5f4368b70
-Author: Peter Marschall <peter at adpm.de>
-Date:   Thu Jun 7 20:31:44 2012 +0200
-
-    OpenPGP: clean up & fix pgp_delete_file()
-    
-    * use LOG_FUNC_CALLED() .. LOG_FUNC_RETURN for "symmetric" logging
-    * don't zero-fill the DO's contents but empty it
-    * get rid of unnecessary variables
-    * select parent DF after deletion (required by to ISO 7816-9)
-    * don't try to delete MF
-
-commit 2aa4cf57eda8bd81b6d5558247cdf3d7fd6509c9
-Author: Peter Marschall <peter at adpm.de>
-Date:   Fri Jun 8 10:18:46 2012 +0200
-
-    OpenPGP: simplify pgp_update_binary() even more
-    
-    Fail on idx > 0 in order to avoid the requirement to read from the DO.
-    The DO may be read-protected, and this might either fail or produce
-    wrong results.
-
-commit d7f58f7ea7131b30cf99f65c77cf6bc531784077
-Author: Peter Marschall <peter at adpm.de>
-Date:   Thu Jun 7 19:55:21 2012 +0200
-
-    OpenPGP: cleanup & fix pgp_update_binary()
-    
-    * use LOG_FUNC_CALLED() .. LOG_FUNC_RETURN for "symmetric" logging
-    * update comment
-    * check that blob->data is defined
-    * fix writing new data to the correct offset
-    * use calloc() instead of malloc() & memset()
-    * align pgp_ops function pointer list
-
-commit c8e802eab6ccfc6e2a0fa5265e82660e7bdbe258
-Author: Peter Marschall <peter at adpm.de>
-Date:   Thu Jun 7 19:31:02 2012 +0200
-
-    OpenPGP: simplify & clean up pgp_put_data()
-    
-    * make sure variables of type u8 do only get passed fitting data
-    * use LOG_FUNC_CALLED() .. LOG_FUNC_RETURN for "symmetric" logging
-    * leave most of the spcial casing in ADPU handling to sc_adpu_transmit()
-    * use SC_ADPU_CASE_1 for empty buffer (avoids special casing Lc=0)
-    * clean up log strings & comments
-
-commit 0010fcbe6b9c5356b8a626364d18edfee04c394a
-Author: Peter Marschall <peter at adpm.de>
-Date:   Fri Jun 8 11:00:18 2012 +0200
-
-    OpenPGP: make pgp_set_blob() a bit more resilient
-    
-    * use calloc() instead of malloc() to have defined contents
-    * only copy from passed data when it is not NULL
-
-commit 73387d4b847fb937b8f4982074cefd4577e06420
-Author: Nguyễn Hồng Quân <quannguyen at mbm.vn>
-Date:   Sun Jun 3 11:01:19 2012 +0700
-
-    OpenPGP: Correct ACL key_ref
-    
-    Correct ACL key_ref after redefining conventional OpenPGP key-ref (0x81-0x83 -> 1-3).
-
-commit 825c8578a9a84bc2963883eb2e45e10940173605
-Author: Peter Marschall <peter at adpm.de>
-Date:   Sat Jun 2 17:33:00 2012 +0200
-
-    tools: fix typo/thinko in util_print_usage_and_die()
-    
-    Fix a typo/thinko in util_print_usage_and_die() that led to the short option
-    names not to be shown at all.
-
-commit a56bebd952591320ca2fc1e5a5721bd2df9afc0d
-Author: Peter Marschall <peter at adpm.de>
-Date:   Sat Jun 2 17:27:56 2012 +0200
-
-    opensc-explorer: clean-up help text
-    
-    "asn1 file" -> "ASN.1 file"
-
-commit 56affa612f909f1a7710cb4cde247ab2e67cfc76
-Author: Peter Marschall <peter at adpm.de>
-Date:   Sat Jun 2 17:25:26 2012 +0200
-
-    pkcs15-tool: help text clean-up
-    
-    "to be binded to " -> "to bind to"
-
-commit 67136befe8da3842a23bc50308db44376842a2ef
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Thu Jun 7 22:38:40 2012 +0200
-
-    pkcs15-tool: print content of DATA object ...
-    
-    list the 'Authentication' objects instead of 'PIN' objects.
-
-commit 73f324010e426c9ac66a8b0e4468ec98243e0baf
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Thu Jun 7 22:35:30 2012 +0200
-
-    config: ignore non 'auto-configurated' values
-    
-    When getting string configuration parameter,
-    ignore non 'auto-configurated' in configuration file value
-    (ex. @SOME_VALUE_IN_OPENSC_CONF@) and return it's default value.
-
-commit 7c05e8ce21b7e709770a1a9721e8e62aae94b317
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Thu Jun 7 22:22:58 2012 +0200
-
-    win32: build debug version, updates to MSI
-    
-    Build with debug options,
-    include profiles and SM module into MSI.
-
-commit da894500c9a014cc3f87de82c3a973e39fb4fadd
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Thu Jun 7 22:13:33 2012 +0200
-
-    minidriver: build dependence on opensc_a.lib and pkcs15init.lib
-    
-    spelling of comments and debug messages
-
-commit 667949019abbf51875d3dfdcacac40f909116ad4
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Thu Jun 7 22:12:37 2012 +0200
-
-    coverity scan: warning use non-initialized data
-
-commit 0410a0c9e8a7ff7bf506ba10ba777d99205a3a57
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Thu Jun 7 19:16:07 2012 +0200
-
-    build: 'auto-config' parameters
-    
-    In configuration file replace the 'auto-config' parameters with the windows specific values.
-
-commit 78fe16654e38efbf01a4401729609ac3a5103043
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Thu Jun 7 18:52:03 2012 +0200
-
-    pkcs15init: iasecc: create objects for minidriver support
-    
-    - Create/delete the PKCS#15 'DATA' objects destinated to supply support of minidriver. For a while only 'Gemalto' style of such support is implemented.
-    - Declare epass2003 pkcs15init operations.
-    - include into OpenSC configuration the SM related sections
-
-commit 92e0c94c3b588d329f160d0d0f115056cd22e70f
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Mon Jun 4 14:30:03 2012 +0200
-
-    bootstrap: script argument to define the PACKAGE_SUFFIX
-
-commit 2249cfde72a48145967efc34c8f624c7890e1c6d
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Mon Jun 4 13:12:28 2012 +0200
-
-    sm: loadable 'local' secure-messaging module
-    
-    With loadable secure-messaging module the SM wrapping of APDUs is performed
-    by entity external to the running application.
-    So that the SM keysets
-    
-    TODO: amend detailed description
-
-commit 00b069a08e43397e02571674d105c38b5967f459
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Mon Jun 4 11:52:50 2012 +0200
-
-    epass2003: support for ePass2003 card in read/write modes
-
-commit ea5a19e27eaedb5314a71c416c5741aef85f967f
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Mon Jun 4 11:18:23 2012 +0200
-
-    iasecc: SM add related procedures
-
-commit cfd5aaba7d4f87372f72d2b0849d4eb435671b9a
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Mon Jun 4 09:26:56 2012 +0200
-
-    SM: initial implementation of secure messaging framework
-
-commit 2078654d2bd166b05b793aad03ac5cecd0265093
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Fri Jun 8 18:58:20 2012 +0200
-
-    OpenPGP: to be compiled on windows
-
-commit 9e04ae46bb42aeabd94cc49de2db68927cdb3bb2
-Author: Peter Marschall <peter at adpm.de>
-Date:   Sat Jun 2 08:51:09 2012 +0200
-
-    OpenPGP: implement pgp_find_blob()
-    
-    Replace the "one-trick-pony" pgp_do_iswritable() with a more generic
-    function returning the blob matching the passed tag.
-    
-    This way we can get rid of the one-line function pgp_blob_iswritable() too.
-    comparisons like these can be done in the caller.
-
-commit f5dc252aa96ca1f3116785f97bc05ab49f394e00
-Author: Peter Marschall <peter at adpm.de>
-Date:   Sat Jun 2 08:13:55 2012 +0200
-
-    OpenPGP: set pin references to 0x01 - 0x03
-    
-    Set pin references to 0x01 - 0x03 instead of 0x81 - 0x83.
-    The PINs are referenced as PIN1- PIN3 (resp. PW1 - PW3) in the OpenPGP
-    card specification.
-    Technically the APDUs to verify/change the PINs contain the values OR-ed
-    with 0x80, but this is just a technical detail of the implementation
-    which the emulated file system can hide in pgp_pin_cmd().
-    
-    Pros & Cons:
-    + consistent PIN naming
-    + no trouble entering the correct PIN names in opensc-explorer et.al.
-      ("verify CHV1" is way better than "verify CHV129")
-    - manually entering the correct APDU for VERIFY is a bit more complex.
-      (who does this anyway, when there are better functions)
-    
-    While at it, change if .. elsif ... cascade to switch statement.
-
-commit 89c1dd37e430bfe24b75aa2bd68a65d63a1d462c
-Author: hongquan <quannguyen at mbm.vn>
-Date:   Sat Jun 2 12:14:38 2012 +0700
-
-    OpenPGP PKCS#15: Add declaration of certificate object. Allow to read
-    certificate via PKCS#11 (not writing yet).
-
-commit f515ed5be36036e237bfa80a95d3dd7b17484aac
-Author: hongquan <quannguyen at mbm.vn>
-Date:   Sat Jun 2 16:51:51 2012 +0700
-
-    OpenPGP: Change the criteria to use ext APDU for put data.
-    
-    Saner whitespace in logs
-    Correct spelling
-
-commit df39590aa40254968307adcc59ba26fe01460669
-Author: hongquan <quannguyen at mbm.vn>
-Date:   Sat Jun 2 16:51:10 2012 +0700
-
-    OpenPGP: Correct adding read access to ACL.
-
-commit e269907e1db4e9e5a40a736c057e689aaeb780d1
-Author: hongquan <quannguyen at mbm.vn>
-Date:   Sat Jun 2 17:09:12 2012 +0700
-
-    OpenPGP: support key generation in driver.
-
-commit 9dd5a64d43549634e03d985fc3a8a67e067b791a
-Author: Nguyễn Hồng Quân <ng.hong.quan at gmail.com>
-Date:   Wed May 30 17:31:39 2012 +0700
-
-    OpenPGP: Support another variant of PUT DATA to write to Extended Header list.
-
-commit fefe8bf2e6da3b6483fac80495680961c829527b
-Author: Nguyễn Hồng Quân <ng.hong.quan at gmail.com>
-Date:   Wed May 30 17:13:36 2012 +0700
-
-    OpenPGP: Check data size in pgp_put_data.
-
-commit f188a5dda3b8447a413e677280e513f887d57a65
-Author: Nguyễn Hồng Quân <ng.hong.quan at gmail.com>
-Date:   Tue May 29 16:20:08 2012 +0700
-
-    OpenPGP: Implement pgp_update_binary() to update file content.
-
-commit 935a7505d7e498d9a5125660dd1495ee6e4a21dd
-Author: Nguyễn Hồng Quân <ng.hong.quan at gmail.com>
-Date:   Fri Jun 1 20:00:13 2012 +0200
-
-    OpenPGP: Add Access Control List for emulated files.
-
-commit c8915449903801db84c5a559ce3c731e3590515a
-Author: Nguyễn Hồng Quân <ng.hong.quan at gmail.com>
-Date:   Fri Jun 1 19:57:26 2012 +0200
-
-    OpenPGP: Use command chaining to send large data if extended APDU is not supported.
-
-commit 387da4c79314522405ce25ba29fb5ce0930a3a16
-Author: Peter Marschall <peter at adpm.de>
-Date:   Thu May 31 21:22:14 2012 +0200
-
-    opensc-explorer: document 'echo' command
-
-commit f3955e24752de2452ef1e2a9a4115d042a6d8ed3
-Author: Nguyễn Hồng Quân <ng.hong.quan at gmail.com>
-Date:   Fri Jun 1 17:41:49 2012 +0200
-
-    opensc-explorer: implement put_data
-    
-    opensc-explorer: use larger buffer for put_data
-
-commit 5673d13c15bb72455490fc556d6d52250c70dca9
-Author: Nguyễn Hồng Quân <ng.hong.quan at gmail.com>
-Date:   Fri Jun 1 17:59:20 2012 +0200
-
-    OpenPGP: implement pgp_delete_file()
-
-commit 72088b6eebb208439f41364d88de0494fcfa6531
-Author: Nguyễn Hồng Quân <ng.hong.quan at gmail.com>
-Date:   Fri Jun 1 17:57:36 2012 +0200
-
-    OpenPGP: implement pgp_strip_path()
-    
-    Strip away the non-existant DF 5015 from paths passed the driver.
-
-commit f7785ad1ec83730966877c8ec647c063fef847bd
-Author: Nguyễn Hồng Quân <ng.hong.quan at gmail.com>
-Date:   Fri Jun 1 17:41:17 2012 +0200
-
-    OpenPGP: correct use of pin_reference
-
-commit 3ac834e27748dab81d2ab07a5f958f1f34f62b0b
-Author: Nguyễn Hồng Quân <ng.hong.quan at gmail.com>
-Date:   Fri Jun 1 17:40:39 2012 +0200
-
-    OpenPGP: implement pgp_put_data()
-
-commit a1ed22b6fd573251e0a38f3696f494c59a8ae062
-Author: Nguyễn Hồng Quân <ng.hong.quan at gmail.com>
-Date:   Fri Jun 1 18:23:44 2012 +0200
-
-    OpenPGP: implement pgp_do_iswritable()
-
-commit d8d6902699ee3a35900ef8c39e23a2d4d628e29d
-Author: Nguyễn Hồng Quân <ng.hong.quan at gmail.com>
-Date:   Fri Jun 1 17:45:12 2012 +0200
-
-    OpenPGP: implement pgp_seek_blob()
-
-commit 7e24102f2b7d1fcd4172fc9e71a35eb71158056d
-Author: Nguyễn Hồng Quân <ng.hong.quan at gmail.com>
-Date:   Fri Jun 1 17:46:32 2012 +0200
-
-    OpenPGP: Make DO 7F21 treated as simple DO
-    
-    Make DO 7F21 treated as simple DO, to make certificate contained in it visible.
-
-commit d7e09b48cba385daa4e2b1e45224bee3f6586b85
-Merge: 2cff47d 02a2b3d
-Author: Ludovic Rousseau <ludovic.rousseau+github at gmail.com>
-Date:   Mon Jun 4 06:52:56 2012 -0700
-
-    Merge pull request #54 from LudovicRousseau/spy
-    
-    Display the flags argument of C_Initialize()
-
-commit 02a2b3d887c656b66ecbb3f378acf3fd27791082
-Author: Ludovic Rousseau <ludovic.rousseau at gmail.com>
-Date:   Mon Jun 4 15:42:57 2012 +0200
-
-    Display the flags argument of C_Initialize()
-    
-    The the pInitArgs argument of C_Initialize() is not NULL it is a pointer
-    to a CK_C_INITIALIZE_ARGS structure.
-    This structure contains a flags bitfield with possible values:
-    - CKF_LIBRARY_CANT_CREATE_OS_THREADS
-    - CKF_OS_LOCKING_OK
-    
-    This flags parameter is now parsed and displayed.
-
-commit 2cff47d9b335a1f3984af8ab804192d7ac296d93
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Fri Jun 1 16:44:28 2012 +0200
-
-    pkcs11-tool: support for secret-key objects
-    
-    support of 'secret-key' objects
-    key conversion procedures are now in libopensc library
-    change name for OPENSC NON-REPUDIATION CKA attribute
-
-commit 53330f9f89993a145e2f9f971d65f8f074a2bab9
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Fri Jun 1 16:04:17 2012 +0200
-
-    tools: avoid possible matching of zero length ATR
-
-commit c7258a6b523eeae585cafa474df9fb519f25d194
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Fri Jun 1 16:00:05 2012 +0200
-
-    pkcs15-tool: list secret keys objects ...
-    
-    and print its attributes.
-    Print attributes of 'authentication-key' object.
-
-commit 525f61af73e7ffe7c573be914942cf3261013f46
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Fri Jun 1 15:54:17 2012 +0200
-
-    pkcs15-init: 'erase-application', 'update-lastUpdate', ...
-    
-    New operations:
-    - 'erase-application' -- erase on-card application indicated by it's AID;
-    - 'update-lastupdate' -- parse tokenInfo, set 'lastUpdate' value to the current date and write back tokenInfo content;
-    - 'ignore-ca-certificates' -- when importing PKCS#12 ignore all CA certificates;
-
-commit fbc9bb35dc5e49bb84667c358d4c5b8f63205ab6
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Fri Jun 1 15:37:06 2012 +0200
-
-    opensc-explorer: when printing file content read entire file
-    
-    When reading and printing file content, do not read it by small chunks,
-    but read an entire file.
-    It allows to verify how card driver reads the data of maximal size
-    that is allowed for one transaction ('max_recv_size').
-
-commit d7022d33000ab0a26a841617041d086b230c7acd
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Fri Jun 1 15:35:27 2012 +0200
-
-    ias-ecc: add tool with IAS/ECC specific query operations
-
-commit 635be92a0c3d6cd070a53d14eeb1ab7210d02727
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Thu May 31 18:13:20 2012 +0200
-
-    pkcs15init: call sc_profile_finish() with 'app-info' data ...
-    
-    call sc_profile_finish() with application info data as an argument;
-    in delete-by-path procedure, when getting authorization to delete file, make distinction between 'DELETE' and 'DELETE-SELF';
-    call card specific 'store' handler updating PrKDF and PubKDF files;
-    deduce the private key pkcs#15 attributes (like subject) from the friend certificate;
-    ignore SM authentication type when getting authorisation for operation;
-    copy GUID from the object create data to the pkcs#15 object attributes.
-
-commit 7819e5ab893a9ff4251da29c03528c6915a3122c
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Thu May 31 16:40:36 2012 +0200
-
-    minidriver: 'write' mode
-    
-    Picked from SM branch of OpenSC, where it was tested mostrly with IAS/ECC card.
-    Also was used with rutoken and other cards.
-
-commit 6c2fa7b462b216ebef11fce7c3671f69681ba5c4
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Thu May 31 11:34:32 2012 +0200
-
-    pkcs15-skey: support for 'SecretKey' object type
-    
-    For a while only implemented decoding of 'genericSecretKey', 'desKey', 'des2Key' and 'des3Key' keys.
-
-commit 1d2661c7ce900e439f3836c62aa046da71a8a6fe
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Thu May 31 10:37:38 2012 +0200
-
-    pkcs15-pin: 'PIN' as particular choice of 'AuthenticationType'
-    
-    Encode/decode 'PIN' pkcs15 object as particular choice of 'AuthenticationType' data.
-    Rudimental encoding/decoding of 'authKey' object.
-
-commit 666e08ffde3649d8eff7d2c33eedda7afa490c8d
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Thu May 31 10:26:38 2012 +0200
-
-    pkcs15-pubkey: add 'subjectName' to 'CommonPubKeyAttributes'
-    
-    Decode/encode 'subjectName' attribute from the 'CommonPubkeyAttributes'
-    Use macros for the size of the asn1_entry tables.
-    Use short call form for debug messages.
-    Procedure to convert the pkcs15 public key to EVP_PKEY type key.
-    Coding style issues.
-
-commit 4be79f3d30975565143653809405e547e9bcc81e
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Thu May 31 09:32:21 2012 +0200
-
-    pkcs15-prkey: 'algReference' from 'CommonKeyAttributes'
-    
-    Decoding/encoding of the 'algReference' attribute from the 'CommonKeyAttributes'.
-    Use macros for the size of the asn1_entry tables.
-    Use short call form for debug messages.
-    Procedure to deduce from certificate the attributes of private key PKCS#15 object.
-    Procedure to convert the pkcs15 private key to EVP_PKEY type key.
-    Coding style issues.
-
-commit f7b5a6b6af4e14e386a514b85b4929f5866e0296
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Wed May 30 19:40:05 2012 +0200
-
-    PIV: pickup card driver from the SM branch
-    
-    ... where it was tested by Douglas.
-
-commit fe80ffdbd2dbb5444f2937f8df8811d98ec7e3e2
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Wed May 30 10:05:37 2012 +0200
-
-    pkcs11-spy: invalid ExpandEnvironmentStrings() call parameter
-    
-    pkcs11-spy.c(168) : warning C4047: 'function' : 'DWORD' differs in levels of indirection from 'DWORD *'
-    pkcs11-spy.c(168) : warning C4024: 'ExpandEnvironmentStringsA' : different types for formal and actual parameter 3
-    pkcs11-spy.c(205) : warning C4047: 'function' : 'DWORD' differs in levels of indirection from 'DWORD *'
-    pkcs11-spy.c(205) : warning C4024: 'ExpandEnvironmentStringsA' : different types for formal and actual parameter 3
-
-commit aca314b1f85de7a43581462183b6109002b53e6c
-Author: Peter Marschall <peter at adpm.de>
-Date:   Sun May 27 22:37:27 2012 +0200
-
-    opensc-explorer: remove outdated usage text for verify
-    
-    Wuth the key types explicitly listed in the usage line,
-    it is not necessary to list them separately.
-
-commit f04a1c5fefdf56c7763aba434010d3b77c98fe2b
-Author: Peter Marschall <peter at adpm.de>
-Date:   Sun May 27 11:29:24 2012 +0200
-
-    OpenPGP: stricter validity checks in PKCS15 init
-    
-    Only add private/public keys that habe been defined:
-    check finger prints & algorithm identifier
-
-commit 742186f32f20b7448b97cec5e187692f1f731706
-Author: Peter Marschall <peter at adpm.de>
-Date:   Sun May 27 09:16:00 2012 +0200
-
-    OpenPGP: remove unnecessary call to sc_get_data
-
-commit d38d615025da329c477e406872ec729f5942828e
-Author: Peter Marschall <peter at adpm.de>
-Date:   Sat May 26 22:27:58 2012 +0200
-
-    OpenPGP: parse more (extended) capabilities on init
-    
-    * parse more extened capabilities & features into a private enum
-    * for v2.0 cards, always parse the "historical bytes" DO
-      reason: ATR may be static and thus cannot reflect the state
-
-commit 67136b178148073fd367cbb4757761126f845f11
-Author: Peter Marschall <peter at adpm.de>
-Date:   Sat May 26 20:42:22 2012 +0200
-
-    OpenPGP: revert 7b4532736e0c7923b972aa22344d156760b40adf
-    
-    PKCS#15 spec v1.1 says:
-    TokenInfo.version: This field contains the number of the particular version
-    of this specification the application is based upon. For this version of this
-    document, the value of version shall be 0 (v1).
-    
-    Thanks to Martin Paljak for the finding.
-
-commit 93cb77079b6eb3d548f3a892ac9c21775e3dad36
-Author: Peter Marschall <peter at adpm.de>
-Date:   Sat May 26 18:01:37 2012 +0200
-
-    tools: re-factor usage message function
-    
-    * change order of long & short option names: letters first, then the long names
-      Effect: nicely aligned short and long option names in the help text
-    * more space between option names and explanation
-      Effect: better readability on long options
-    * print "Options:" header only if there is at least one non-hidden options
-      Effect: nicer output when all options are hidden
-    * only show printable, non-space short options letters
-      Effect: no control codes printed to terminal
-    * get rid of a temporary variable
-
-commit 367ebd94d4864969001a2202e4fdf3ba7a0b70c9
-Author: Peter Marschall <peter at adpm.de>
-Date:   Sat May 26 18:53:09 2012 +0200
-
-    tools: allow arguments to be printed in usage message
-    
-    Extend util_print_usage_and_die() by a string argument that describes
-    further arguments to the program.
-    
-    1st user: opensc-explorer
-
-commit 61ca69c251708ff9aa85dfc89afd731e526c7895
-Author: Peter Marschall <peter at adpm.de>
-Date:   Sat May 26 17:11:40 2012 +0200
-
-    OpenPGP: documentation for openpgp-tool
-
-commit 82382398523abffce8f53c1d4422c0ddd8b520f7
-Author: Peter Marschall <peter at adpm.de>
-Date:   Sat May 26 18:52:05 2012 +0200
-
-    OpenPGP: extend openpgp-tool
-
-commit c58e94810b85d1677319d332a3ca29a91f6baccc
-Author: Peter Marschall <peter at adpm.de>
-Date:   Sat May 26 09:59:04 2012 +0200
-
-    opensc-explorer: update documentation
-
-commit 965d44ec4052b8b63ea1b07c67d56d48acc152e3
-Author: Peter Marschall <peter at adpm.de>
-Date:   Sat May 26 09:50:13 2012 +0200
-
-    opensc-explorer: use case-insensitive pin types in PACE
-
-commit cd2cdf77f6c95d5cb061b08e7d04284c6057e640
-Author: Peter Marschall <peter at adpm.de>
-Date:   Sat May 26 09:46:32 2012 +0200
-
-    opensc-explorer: explicitly mention key types
-
-commit 2276c7e7e4195e724a1737f031e7d96889bee872
-Author: Peter Marschall <peter at adpm.de>
-Date:   Sat May 26 09:43:40 2012 +0200
-
-    opensc-explorer: do not use hard-coded string length
-    
-    Determine length of prefix dynamically instead of using a hard-coded, common
-    value for all prefixes.
-
-commit 2efc9b76dfee4a18ee1c78c780b2710c46132062
-Author: Peter Marschall <peter at adpm.de>
-Date:   Fri May 25 19:15:32 2012 +0200
-
-    opensc-explorer: document new command line parameter SCRIPT
-
-commit 458517783c66cb13d8d52540667c3f87cdc1ca51
-Author: Peter Marschall <peter at adpm.de>
-Date:   Fri May 25 18:56:12 2012 +0200
-
-    OpenPGP: fix access conditions for DOs
-    
-    Follow the specs.
-
-commit 26aac71c9f99ef55c7b3c2d218efb417218c1e49
-Author: Peter Marschall <peter at adpm.de>
-Date:   Sun May 20 21:04:57 2012 +0200
-
-    OpenPGP: correct PIN type to UTF-8
-    
-    OpenPGP card spec v1.1 and v2.0 make it absolutely clear:
-    "... The format of the CHVs is UTF-8 (case sensitive) ...".
-
-commit 6d4d1b4acaed53df6c5a2e256527fcb383610108
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Wed May 30 09:25:57 2012 +0200
-
-    win32: do not export 'sc_pkcs15_remove_df' procedure
-    
-    in source it replaced by static 'sc_pkcs15_remove_dfs'
-
-commit 177af40535c22840737ee766251197bec8c7da04
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Wed May 30 09:18:03 2012 +0200
-
-    md: prototype of sc_pkcs15_get_guid() has been changed
-    
-    introduced 'flags' parameter
-
-commit 6337149ef7d1817fcdb8a0f45a3421882eeb43b7
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Sun May 27 21:20:22 2012 +0200
-
-    pkcs15: decode 'seInfo', 'profileIndication', 'lastUpdate'
-    
-    Encode,decode  'lastUpdate', 'seInfo', 'profileIndication' of TokenInfo (CIAInfo).
-    Trailing whitespaces.
-
-commit be81263d8e34d84c71e68ed2d39b02f3f3e7bf25
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Tue May 29 19:44:54 2012 +0200
-
-    log: config option to reopen debug file at every debug log ...
-    
-    To be used in windows:
-    "In Windows, file handles can not be shared between DLL-s, each DLL has a separate file handle table.
-    For that reason reopen debug file before every debug message."
-    
-    sc_context_repair() procedure from Hunter William
-    "Workaround some threading and data lifetime issues when card handle changes and need to re-associate card"
-    http://www.opensc-project.org/pipermail/opensc-devel/2011-December/017445.html
-
-commit 954d0b9375eb49a340e2926d26815bc23b8ebb87
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Tue May 29 19:19:06 2012 +0200
-
-    pkcs15: DIR EF can have EF_LINEAR structure
-    
-    and so, in this case the checking file size is not appropriate method to validate it.
-    ;use short call form for the log messages;
-
-commit 9d5404bac60e1d182d535e0c9add95678b73182c
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Tue May 29 11:29:44 2012 +0200
-
-    libopensc: some usefull macros, crc32 calculation procedure
-    
-    Introduce some usefull define macros, error code 'inconsistent configuration'.
-    Introduce procedure to calculate CRC32 digest,
-    to be used in minidriver to calculate the 'freshness' values.
-
-commit 9c882ff5c2e8c4e12d98c4a1de2fe8d48694c20c
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Tue May 29 09:37:26 2012 +0200
-
-    AuthentIC: add SM related procedures
-    
-    Added to facilitate future SM merge,
-    for a while disabled by conditional macro.
-
-commit 230b782309df5d444d087cd13df3a9945e7ffe6e
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Mon May 28 23:15:37 2012 +0200
-
-    pkcs15: add 'sc_pkcs15_derive' missing for ECDH support
-    
-    also, key path, that has to be selected before crypto operation,
-    can contain an aid.
-
-commit 9c5dbea8838904cfa700d502e4ecbf8d834418e8
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Sat May 26 21:17:39 2012 +0200
-
-    pkcs11: ECHD and secret keys support from Douglas
-    
-    This support were initially proposed by Douglas (https://github.com/dengert/OpenSC/commits/ecdh) and
-    then merged into SM branch (https://github.com/viktorTarasov/OpenSC-SM/tree/secure-messaging).
-
-commit 76b8ad8ad6d85bbd00cd60737f94a72d23a88f46
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Sat May 26 21:12:22 2012 +0200
-
-    pkcs11-spy: timestamp, environment strings in paths
-    
-    Add to the spy logs the timestamp with millisecond resolution.
-    Environment strings are accepted in the key registries paths related to spy module.
-    
-    pkcs11-spy: code formatting
-
-commit 388d68fb1a4a4cbb7f67aaf548668f82d46c68cd
-Merge: c6cae25 38be3c1
-Author: viktorTarasov <viktor.tarasov at gmail.com>
-Date:   Sat May 26 05:29:24 2012 -0700
-
-    Merge pull request #37 from marschap/staging
-    
-    improvements to opensc-explorer & new tool openpgp-tool
-    
-    Usefull improvement: probably could be used in automated tests.
-    
-    I follow Ludovic and attract your attention onto the necessity, in the nearest future,
-    to supply the doc/man for the tool newly introduced.
-    Without it the build of OpenSC package will simply not be possible.
-
-commit c6cae254706a49df9f057ee6e22437ae7db87855
-Merge: 4b745f5 363e374
-Author: viktorTarasov <viktor.tarasov at gmail.com>
-Date:   Sat May 26 04:44:20 2012 -0700
-
-    Merge pull request #41 from viktorTarasov/pull-request--multi-applications-mixed-slots
-    
-    Multi on-card applications in PKCS#11 OpenSC module
-
-commit 363e3746646994ae18fa8d32fb4773687e366ea3
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Sat May 26 09:21:35 2012 +0200
-
-    pkcs15init: syntax changed for the ias(ecc) profiles
-
-commit b432e9767fc190b1b624373523471b03525c3046
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Sat May 26 09:17:21 2012 +0200
-
-    pkcs15init: add 'minidriver-style' profile option
-    
-    The on-card support of minidriver could need some MD specific pkcs#15 (DATA) objects.
-    There is no standard for these objects.
-    New option will allow to choose one of the possible implementations.
-
-commit 10e1ad001dc2eb1e95b49344fa558394a0d07844
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Fri May 25 09:56:15 2012 +0200
-
-    pkcs15init: change sc_pkcs15init_bind() prototype
-    
-    Add new argument 'application-info',
-    that will allow to select the on-card application to by binded with.
-    
-    pkcs11: use sc_pkcs15init_bind with 'AID' argument
-    
-    Prototype of sc_pkcs15init_bind() has been changed to add argument with
-    AID of the on-card application to be binded with.
-
-commit bf752f3c6137d87801e0ecd1fd34b64eb5b09257
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Fri May 25 09:13:40 2012 +0200
-
-    pkcs15: new procedure to find an Auth PKCS#15 object (PIN) by flags
-
-commit 343fa20a005b9c8460b5fd4e76c8bdc8ce2a856a
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Wed May 23 09:22:41 2012 +0200
-
-    pkcs11: create tokens and slots for multiple on-card applications
-    
-    In card detection procedure bind all present applications
-    and create tokens for them.
-    
-    Treatement of the different 'create-slots' configuration cases,
-    joining the objects from different applications into one slot
-    are previewed for the next commits.
-
-commit 80266ff466acb28da9ef8088590386321553baa2
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Wed May 23 08:50:18 2012 +0200
-
-    pkcs15: new procedure to get application by it's symbolic name
-    
-    At the moment symbolic names for the on-card applications are 'generic', 'protected'.
-    This distinction used by pkcs11 and minidriver module to select the
-    'master' application in the cases when only reduced number of slots (one)
-    can be exposed by module (minidriver) or particular configuration (pkcs11).
-
-commit 14049fb806ca1e60c249155472c8b57270f8cce9
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Tue May 22 17:18:00 2012 +0200
-
-    pkcs11: prepare internal API for multi-application mode
-    
-    - simplify some of framework handles: remove from it's prototype the arguments that can be derived from the other arguments;
-    for exemple: foo(slot, slot->card) --> foo(slot)
-    - add the 'application' argument to the bind, unbind and similar handles;
-    - preview more then one framework data attached to the pkcs11card object.
-    - placehold for the future 'derive' and 'can_do' handles.
-
-commit d1cf65754b9326c09213f151b7ee2f19f4037730
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Mon May 21 19:19:38 2012 +0200
-
-    pkcs11: no more 'hacked' mode and 'onepin' module version
-    
-    'OnePIN' version of opensc-pkcs11 module is not installed.
-    Instead, in the 'pkcs11' section of OpenSC configuration,
-    there is a possibility to define in a different manner
-    how to create slots for the present PINs and applications.
-
-commit 38be3c1a4a74f6fd9bf6e314a06780d14a2aa921
-Author: Peter Marschall <peter at adpm.de>
-Date:   Sun May 20 18:18:25 2012 +0200
-
-    opensc-explorer: better names for some functions
-
-commit 1f70902da5bc43d7604925bad0c97ac3788a85bb
-Author: Peter Marschall <peter at adpm.de>
-Date:   Sun May 20 18:05:16 2012 +0200
-
-    opensc-explorer: add 'echo' command
-    
-    Add 'echo' command that simply displays its arguments.
-    
-    With the recently committed script interpreter feature and this echo command,
-    nice litte scripts can be written, like e.g.
-    
-     $ cat opengpg-userinfo
-     #!/usr/bin/opensc-explorer
-     cd 0065
-     echo Name:
-     cat 005B
-     echo Language:
-     cat 5F2D
-     echo Gender:
-     cat 5F35
-     quit
-
-commit f8f02dbd659581c7b8ade221a3ba628691a7436a
-Author: Peter Marschall <peter at adpm.de>
-Date:   Sun May 20 17:12:14 2012 +0200
-
-    opensc-explorer: allow acting as script interpreter
-    
-    Take a filename as argument and interpret the commands in it.
-
-commit 69e9861dddced0c3e0d982c8fdb9c2fc3f6a7a12
-Author: Peter Marschall <peter at adpm.de>
-Date:   Sat May 19 20:28:25 2012 +0200
-
-    OpenPGP: first go at openpgp-tool
-
-commit 4b745f51afdfee10301ab79bbf817c6050fc1237
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Wed May 16 23:14:42 2012 +0200
-
-    openpgp: 'ushort' type not defined for WIN32
-    
-    Change-Id: Ifb28730af2d39440721be9d1e38ea1c6106167a2
-
-commit e88c08d13828c6d5235bfa8940e832139855b56d
-Author: Diego Elio Pettenò <flameeyes at flameeyes.eu>
-Date:   Mon May 14 10:14:53 2012 -0700
-
-    build: allow cross-compilation build by reordering libraries' order.
-    
-    If the system libraries are set before the locally built libraries,
-    libtool will pick the system copy of OpenSC instead of the local one,
-    and that can make cross-builds fail badly.
-    
-    This patch is already applied in Gentoo for proper building.
-
-commit 3c324b8b73e3a9e11bf082bdca1a6f4df17057d9
-Author: Diego Elio Pettenò <flameeyes at flameeyes.eu>
-Date:   Sun May 13 14:55:35 2012 -0700
-
-    build: fix parallel install by creating directory in the rule
-    
-    Relying on the rule that creates the directory is a bad idea to be
-    parallel safe.
-
-commit 07d51bea36d2698b9f7925369dc884c8b0124c29
-Author: Peter Marschall <peter at adpm.de>
-Date:   Sun May 6 21:29:06 2012 +0200
-
-    OpenPGP: get PKCS#15 token info from preparsed card data
-    
-    Determine data for sc_pkcs15_card's tokeninfo structure
-    from sc_pkcs15_card's card structure.
-    This makes sure the two stay consistent as much as possible.
-
-commit 7b4532736e0c7923b972aa22344d156760b40adf
-Author: Peter Marschall <peter at adpm.de>
-Date:   Sun May 6 21:08:09 2012 +0200
-
-    OpenPGP: set version for PKCS#15
-
-commit bc0949140db52da95176ec6027c0a5e6765fd33a
-Author: Peter Marschall <peter at adpm.de>
-Date:   Sun May 6 21:07:01 2012 +0200
-
-    OpenPGP: format paths more nicely
-
-commit 0283a6f24e247c6f27466a239516566aac0e03d8
-Author: Peter Marschall <peter at adpm.de>
-Date:   Sun May 6 19:52:58 2012 +0200
-
-    OpenPGP: only add keys with legal algorithm identifier
-
-commit 671ac54b71d6092d137645cc88f856b3d28278a8
-Author: Peter Marschall <peter at adpm.de>
-Date:   Sun May 6 18:35:47 2012 +0200
-
-    OpenPGP: more data driven logic
-    
-    Tie together in a struct what belongs together instead of relying
-    on the ordering of multiple unrelated arrays.
-
-commit 076a4ed2dc6409e7d8cf951637e7e202e16365dc
-Author: Peter Marschall <peter at adpm.de>
-Date:   Sun May 6 18:13:28 2012 +0200
-
-    OpenPGP: slight cleanup
-    
-    Use typedef'd types instead of their underlying structs,
-    use helper functions instead of reinventing the wheel,
-    and fix typos.
-
-commit 4c09e290e1b2c4d3b6cad9688e1ddabf58a02f57
-Author: Peter Marschall <peter at adpm.de>
-Date:   Sun May 6 17:59:34 2012 +0200
-
-    OpenPGP: make logic more data driven
-    
-    Instead of doing lots of special-cases in code, create data structures
-    decide once which variant of the data to use, and then use it.
-
-commit 7535f30738ee6c04e50d40baf2eea6ac84f58635
-Author: Martin Paljak <martin at martinpaljak.net>
-Date:   Thu Aug 11 13:57:12 2011 +0300
-
-    OpenPGP: add the v1.0 spec URL as well to source code comments.
-    
-    Even though it is obsolete, it makes it more complete;)
-
-commit 5f84400ef7eb6ad85baa3be9aefd0a9addd54322
-Author: Martin Paljak <martin at martinpaljak.net>
-Date:   Wed Aug 10 16:45:40 2011 +0300
-
-    OpenPGP: more support for CryptoStick/OpenPGP v2.0
-    
-    Using CryptoStick v1.2 with 4096bit keys now allows to authenticate to SSH  with all three keys.
-
-commit fb772cccf85577f4fd11ff14fc17cda9e1f2cc13
-Author: Martin Paljak <martin at martinpaljak.net>
-Date:   Fri Jul 15 13:36:33 2011 +0300
-
-    OpenPGP: use actual references in PKCS#15 emulation code for PIN codes. Only v1.1 has 3 PIN codes.
-
-commit 63b08786a0e62cb68a3ff6d51117ec883cc84de8
-Author: Martin Paljak <martin at martinpaljak.net>
-Date:   Thu Jul 14 17:21:34 2011 +0300
-
-    OpenPGP: do not hardcode key sizes to 1024 but fetch actual values from the card.
-    
-    OpenPGP 2.0 (especially CryptoStick v1.2) supports key sizes up to 4096
-
-commit 750d2e9121d534b1761fc4ee81974608ae8ed774
-Author: Frank Morgner <morgner at informatik.hu-berlin.de>
-Date:   Sat May 5 18:55:54 2012 +0200
-
-    cherry-picked from Frank Morgner OpenSC.git and rebased
-    
-    opensc-explorer: documented `find`
-    opensc-explorer: documented `pace`
-
-commit fb1aa8ed116b2a4f5e711d8545ad3a03ef96a82d
-Merge: 20bf3f5 4d9ea43
-Author: viktorTarasov <viktor.tarasov at gmail.com>
-Date:   Wed May 16 06:17:37 2012 -0700
-
-    Merge pull request #32 from frankmorgner/4d9ea43ab24a2e36fc36d1be81b3414cc003786f
-    
-    new commands for opensc-explorer and bugfix for iso7816 driver
-    
-    -  opensc-explorer: new find command:
-       tested; nice, useful feature.
-    - opensc-explorer: pace:
-       no means to test -- accepted.
-    - iso driver:
-      really bug, thanks.
-
-commit 20bf3f5484ff2dd8a59ed5afa0c6798d7439d402
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Sun May 13 00:27:38 2012 +0200
-
-    pkcs11: use short form of log messages
-    
-    Change-Id: Ice298552238da9eeb0b646fc1ddfaf4d7a8ee4bb
-
-commit 5d1feb305144eb758afbce356d189d6e89c67f6a
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Sat May 5 14:49:21 2012 +0200
-
-    pkcs15: throw an error if there is no valid public key data
-    
-    Thanks to Nguyen Hong Quan.
-    http://www.opensc-project.org/pipermail/opensc-devel/2012-May/017997.html
-    
-    Change-Id: I48bc6664909ca324ef71a2a10d9fddb9096ae598
-
-commit 4d9ea43ab24a2e36fc36d1be81b3414cc003786f
-Author: Frank Morgner <morgner at informatik.hu-berlin.de>
-Date:   Fri Apr 27 10:14:25 2012 +0200
-
-    iso driver: select with p2=0x0c when le is missing
-
-commit 59b214ec23b5e263788721a0180ac36e717f15be
-Author: Frank Morgner <morgner at informatik.hu-berlin.de>
-Date:   Thu Apr 26 03:41:20 2012 +0200
-
-    opensc-explorer: implemented `pace`
-
-commit 7b630962c179aad8ec2543977ceb59bcea364ea0
-Author: Frank Morgner <morgner at informatik.hu-berlin.de>
-Date:   Thu Apr 26 03:40:06 2012 +0200
-
-    opensc-explorer: `find [<start fid> [<end fid>]]`
-
-commit 66aa2b389654146294ba8deb6e2fcccbdea6c61b
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Mon Apr 9 11:07:15 2012 +0200
-
-    pkcs15: throw an error when trying to read from DF
-    
-    Change-Id: Ifac6777436f889393e3d3981d98a78149fd6cb17
-
-commit cb13633634a481560a26278a6284d11d1c21d00e
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Tue Apr 3 00:00:56 2012 +0200
-
-    remove trailing whitespaces
-    
-    inspired by
-    http://www.opensc-project.org/pipermail/opensc-devel/2012-March/017883.html
-    
-    Change-Id: If170e830d8d9587a31742feffb6fff54cfdf75b4
-
-commit e57d443e8614adada3ef316017479696b2403037
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Mon Apr 2 23:40:05 2012 +0200
-
-    pkcd15init: remove trailing whitespaces
-    
-    inspired by
-    http://www.opensc-project.org/pipermail/opensc-devel/2012-March/017883.html
-    
-    Change-Id: I817f903e67965942d9cc0c30931dbaea0c5f736e
-
-commit df8715849d462e617025427ad96a7708bad24445
-Author: Alon Bar-Lev <alon.barlev at gmail.com>
-Date:   Fri Dec 9 22:46:45 2011 +0200
-
-    Remove libltdl: Remove ltld references
-    
-    http://www.opensc-project.org/pipermail/opensc-devel/2011-December/017490.html
-    cherry-picked from 'libtool' branch of Alon Barlev's github project git://github.com/alonbl/OpenSC.git
-    and rebased
-    
-    Remove libltdl: Remove ltld references
-    (cherry picked from commit a350326c520c5b0cb185f90946648633f4d0e456)
-    
-    Remove libltdl: Detect libdl
-    (cherry picked from commit 51e7de45c11823460e776492dcbd40e60583a7eb)
-    
-    Remove libltdl: Use libscdl
-    (cherry picked from commit 09f3eadb8a1a47407c011dcd3d5ce461516f3b87)
-    
-    Remove libltdl: Cleanup libscdl
-    (cherry picked from commit 52d5f1be01146079e3a6fad1c88ebb0f577d0a94)
-    
-    Remove libltdl: Cleanup libscdl usage at Microsoft VC build
-    
-    Untested, I don't have the environment, Martin, please test.
-    (cherry picked from commit 7fb18f8d0b0bae6d181981a0c71190440e917c2c)
-    
-    Change-Id: I73c98ccb9365584b12f4b0b97b69316a190b6e45
-
-commit 594427e516bccb82bbe1fec26460a6701688fd54
-Merge: 63eb4a4 af559fb
-Author: Ludovic Rousseau <ludovic.rousseau+github at gmail.com>
-Date:   Wed Feb 22 09:38:37 2012 -0800
-
-    Merge pull request #26 from viktorTarasov/staging
-    
-    merge 'master' into 'staging'
-
-commit af559fbffdd90cbe493688265038156f72385756
-Merge: 97e6ac6 fa6c1a1
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Wed Feb 22 11:20:17 2012 +0100
-
-    Merge branch 'master' into staging
-
-commit fa6c1a1aa61ab4432b702ecf33e0e04aed876458
-Merge: e6c501f 2b63213
-Author: viktorTarasov <viktor.tarasov at gmail.com>
-Date:   Wed Feb 22 00:51:21 2012 -0800
-
-    Merge pull request #25 from viktorTarasov/master
-    
-    pkcs15-init tool: fix for pin auth_type comparison (thanks to 'joelhockey')
-
-commit 2b63213e0a3be22b48bf8a7cb3346222d8c2eabb
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Wed Feb 22 09:42:30 2012 +0100
-
-    pkcs15-init tool: fix for pin auth_type comparison
-    
-    partial merge of pull request
-    https://github.com/OpenSC/OpenSC/pull/8
-    
-    Thanks to 'joelhockey'.
-
-commit 63eb4a4b4bb43e9192feba2e52bd62d4cddfc2d5
-Merge: bc8e320 931e913
-Author: viktorTarasov <viktor.tarasov at gmail.com>
-Date:   Wed Feb 22 00:28:07 2012 -0800
-
-    Merge pull request #4 from marschap/iso7816-for-staging
-    
-    iso7816 cleanups for staging
-
-commit e6c501f3de48643c0ffd26013de139fbad3b043f
-Merge: c4a200a 61ea633
-Author: viktorTarasov <viktor.tarasov at gmail.com>
-Date:   Wed Feb 22 00:20:49 2012 -0800
-
-    Merge pull request #13 from mjrider/master
-    
-    2 small fixes for storing a private key
-
-commit bc8e320f845e213c2b24a7df922d6d0e4e5ffc42
-Merge: 318408e 3248a6b
-Author: viktorTarasov <viktor.tarasov at gmail.com>
-Date:   Wed Feb 22 00:13:57 2012 -0800
-
-    Merge pull request #16 from mjrider/for-opensc-accessflags-fix
-    
-    Agree,
-    it's better to fix the key access flags at the general pkcs15init level.
-
-commit 318408ee46cb6046e8b2f1bf040f85697f8402b9
-Merge: 1049bca 006a97b
-Author: Ludovic Rousseau <ludovic.rousseau+github at gmail.com>
-Date:   Tue Feb 21 12:25:58 2012 -0800
-
-    Merge pull request #24 from LudovicRousseau/staging
-    
-    Staging
-
-commit 006a97b8c811cabe6d8125b25ab55a58ab1d42a8
-Author: Ludovic Rousseau <ludovic.rousseau+github at gmail.com>
-Date:   Tue Feb 21 21:22:54 2012 +0100
-
-    Use the short form sc_log() instead of sc_debug()
-    
-    Replace sc_debug(ctx, SC_LOG_DEBUG_NORMAL, ...) by sc_log(ctx, ...) as
-    suggested by Viktor Tarasov
-
-commit 1049bca092ee00251bb1a3eea4cc1bef7660fc7b
-Merge: 97e6ac6 27c6652
-Author: Ludovic Rousseau <ludovic.rousseau+github at gmail.com>
-Date:   Tue Feb 21 12:16:36 2012 -0800
-
-    Merge pull request #23 from LudovicRousseau/staging
-    
-    Fix for Windows compilation
-
-commit 27c6652a1df9f1af99859634fd246a0cfdfd445b
-Author: Ludovic Rousseau <ludovic.rousseau+github at gmail.com>
-Date:   Tue Feb 21 21:02:47 2012 +0100
-
-    Remove extra spaces and tabs at end of lines
-
-commit af9dada86ced0a6d452f928ae089c17b9efdda19
-Author: Ludovic Rousseau <ludovic.rousseau+github at gmail.com>
-Date:   Tue Feb 21 20:59:07 2012 +0100
-
-    Fix compilation error on Windows
-    
-    SC_READER_CAP_PACE has been renamed to SC_READER_CAP_PACE_GENERIC during
-    patch discussion.
-    Thanks to Viktor Tarasov for the bug report
-
-commit 7a9b9f81b961683ff47b6df028c2114b6f48b06a
-Merge: a3a1bf5 97e6ac6
-Author: Ludovic Rousseau <ludovic.rousseau+github at gmail.com>
-Date:   Tue Feb 21 21:09:46 2012 +0100
-
-    Merge remote branch 'upstream/staging'
-
-commit 97e6ac6ecb304673e21d5f8489be54adbcd73cdb
-Merge: c20cd12 1141ae5
-Author: Ludovic Rousseau <ludovic.rousseau+github at gmail.com>
-Date:   Tue Feb 21 05:39:26 2012 -0800
-
-    Merge pull request #22 from frankmorgner/1141ae520201c91b9859b0cd6cbb59f4ebfbd577
-    
-    Add possibility to execute PACE on the reader (tested with Reiner SCT RFID standard/komfort)
-
-commit 1141ae520201c91b9859b0cd6cbb59f4ebfbd577
-Author: Frank Morgner <morgner at informatik.hu-berlin.de>
-Date:   Mon Feb 20 12:47:58 2012 +0100
-
-    Add support for PACE-enabled readers
-    
-    Implements PC/SC interface to PACE-enabled readers defined in PC/SC
-    pt. 10 AMD 1 and BSI TR-03119.
-    
-    PACE can be started using `sc_perform_pace`. This function currently
-    calls the new `perform_pace` from `struct sc_reader_operations`, if the
-    reader has the needed capabilities. `sc_perform_pace` could also be
-    extended with a stand-alone implementation of PACE (code could be
-    imported from here http://vsmartcard.sourceforge.net/npa/README.html).
-    
-    Note that the reader's PACE capabilities are correctly determined by
-    calling GetReaderPACECapabilities.
-    
-    OpenSC's new PACE capabilities can be tested using the `npa-tool` from
-    the Virtual Smart Card Architecture (see link above).
-
-commit c20cd128097953550ac1ef762b0988735c657d6c
-Author: Ludovic Rousseau <ludovic.rousseau+github at gmail.com>
-Date:   Mon Feb 20 14:01:53 2012 +0100
-
-    Fix lookup_enum_spec() prototype
-    
-    A change introduced in c0072d16ddc7b52d2b2c3c53991f569dcac45b3a made the
-    compilation fail:
-    pkcs11-display.c:738:1: error: conflicting types for 'lookup_enum_spec'
-    pkcs11-display.h:64:13: note: previous declaration of 'lookup_enum_spec' was here
-
-commit e485e3a32fc4d08106a04a7a7b3b02b14c0d5b43
-Merge: ec70ee5 c0072d1
-Author: Ludovic Rousseau <ludovic.rousseau+github at gmail.com>
-Date:   Mon Feb 20 04:50:05 2012 -0800
-
-    Merge pull request #21 from viktorTarasov/staging
-    
-    Staging
-
-commit c0072d16ddc7b52d2b2c3c53991f569dcac45b3a
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Mon Feb 20 10:57:57 2012 +0100
-
-    pkcs11: coding style
-    
-    Signed-off-by: Viktor Tarasov <viktor.tarasov at gmail.com>
-
-commit 8f9bbbe780395f5680604a3cb6518aee1ae98399
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Mon Feb 20 10:37:50 2012 +0100
-
-    pkcs11: win32 compilation error
-    
-    pkcs11-display.c(139) : error C2275: 'CK_BYTE' : illegal use of this type as an expression
-    
-    Signed-off-by: Viktor Tarasov <viktor.tarasov at gmail.com>
-
-commit ec70ee5c4de97413fcb97c34d24d1d157e3d1841
-Merge: 28956b5 0c9717a
-Author: Ludovic Rousseau <ludovic.rousseau+github at gmail.com>
-Date:   Fri Feb 17 01:11:49 2012 -0800
-
-    Merge pull request #20 from LudovicRousseau/staging
-    
-    Staging
-
-commit 0c9717a82e8cd39c755ce5491cf4c3d77bd08022
-Author: Ludovic Rousseau <ludovic.rousseau+github at gmail.com>
-Date:   Fri Feb 17 10:06:57 2012 +0100
-
-    Reformat: remove extra spaces and tabs
-
-commit 00e02359a36a9decfd3ca15a194daa8ecabac8ce
-Author: Stef Walter <stefw at collabora.co.uk>
-Date:   Wed Dec 14 13:14:14 2011 +0100
-
-    libopensc: Add 'paranoid-memory' setting for behavior when mlock() fails
-    
-     * Setting paranoid-memory to true, and mlock() fails, then
-       allocations which require non-pageable memory will return NULL
-
-commit 6ed52a06b8fa6c2ff956a8d5653cc0435384c8be
-Author: Stef Walter <stefw at collabora.co.uk>
-Date:   Wed Oct 5 11:20:04 2011 +0200
-
-    libopensc: Don't fail to allocate memory when mlock fails
-    
-     * Print out warning when mlock fails, and continue.
-     * The warning required a ctx to be passed in, so that means
-       changing a few function signatures.
-    
-    https://www.opensc-project.org/opensc/ticket/389
-
-commit a3a1bf5eb83dad0a5d2092d277397c9ea08539db
-Merge: 0918c0e 9252eec
-Author: Ludovic Rousseau <ludovic.rousseau+github at gmail.com>
-Date:   Fri Feb 17 09:44:19 2012 +0100
-
-    Merge branch 'master' of github.com:LudovicRousseau/OpenSC
-
-commit 28956b5892cd4d5c9fe5a20db44aee0e771b1846
-Merge: 6a02adc 48f8f98
-Author: Ludovic Rousseau <ludovic.rousseau+github at gmail.com>
-Date:   Thu Jan 12 06:54:31 2012 -0800
-
-    Merge pull request #18 from LudovicRousseau/spy
-    
-    Display the ASCII equivalent of a hex dump
-
-commit 3248a6b122d99ef8ef8e7086b7f9e3395392a438
-Author: Robbert Müller <spam.me at grols.ch>
-Date:   Sun Jan 8 15:48:12 2012 +0100
-
-    Adding default accessflags to the do_store_private_key function in the same way do_generate_key has those accessflags
-    This seems the right thing to do, when you look at the initial commit which added the flags in do_generate_key and the ticket
-    http://www.opensc-project.org/opensc/ticket/198
-    
-    Currently when storing a key, the accessflags are not set
-
-commit 48f8f982a09e5a484ff4951609ebfcabf8d99bfc
-Author: Ludovic Rousseau <ludovic.rousseau+github at gmail.com>
-Date:   Tue Jan 10 13:44:20 2012 +0100
-
-    Display the ASCII equivalent of a hex dump
-    
-    The output format of a hex dump has changed from:
-        668C045A 1C3A4EF4 CF8550F3 20926525 1E8BF478
-    to:
-        00000000  66 8C 04 5A 1C 3A 4E F4 CF 85 50 F3 20 92 65 25  f..Z.:N...P. .e%
-        00000010  1E 8B F4 78                                      ...x
-    
-    Is it now possible to find text strings inside a hex dump
-
-commit 6a02adca06e29ad6198e0293bbf5542d2d1c832f
-Merge: 3f7db42 9252eec
-Author: Ludovic Rousseau <ludovic.rousseau+github at gmail.com>
-Date:   Mon Jan 9 02:15:59 2012 -0800
-
-    Merge pull request #15 from LudovicRousseau/master
-    
-    Fix
-
-commit c4a200a23690b28a57c566032fad123cc99349f6
-Merge: 3f7db42 9252eec
-Author: Ludovic Rousseau <ludovic.rousseau+github at gmail.com>
-Date:   Mon Jan 9 02:05:55 2012 -0800
-
-    Merge pull request #14 from LudovicRousseau/master
-    
-    Fix compiler warning and real problem
-
-commit 9252eec2d3f76b039be00e33a05de072a64c3a56
-Author: Ludovic Rousseau <ludovic.rousseau+github at gmail.com>
-Date:   Mon Jan 9 10:40:42 2012 +0100
-
-    Fix compiler warning and real problem
-    
-    openssl.c: In function 'sc_pkcs11_verify_data':
-    openssl.c:384:19: warning: 'pkey_ctx' may be used uninitialized in this function [-Wuninitialized]
-    openssl.c:325:16: note: 'pkey_ctx' was declared here
-
-commit 3f7db4287875887053be2110e4cae2f306100c8e
-Merge: e2b5603 3b6c985
-Author: Ludovic Rousseau <ludovic.rousseau+github at gmail.com>
-Date:   Mon Jan 9 01:25:36 2012 -0800
-
-    Merge pull request #5 from marschap/doc-for-staging
-    
-    Doc updates for staging
-
-commit 61ea63304b2f2779a3145537b5ec2611da9450df
-Author: Robbert Müller <spam.me at grols.ch>
-Date:   Sun Jan 8 15:04:37 2012 +0100
-
-    Changing default usage from sign to verify, because verify is the public key opposite of sign for the private key
-
-commit d97f23946876c4e48186868f507c67907ec47c8d
-Author: Robbert Müller <spam.me at grols.ch>
-Date:   Sun Jan 8 13:47:58 2012 +0100
-
-    Setting usage flags for the public key when storing a private key
-
-commit e2b5603ff76a83345d67bd8494c38ca2b9ebe528
-Merge: 6f8dcc9 51630a8
-Author: viktorTarasov <viktor.tarasov at gmail.com>
-Date:   Fri Dec 16 00:58:12 2011 -0800
-
-    Merge pull request #11 from dengert/staging
-    
-    Note about using 'local'/'global' flags by OpenSC
-    http://www.opensc-project.org/pipermail/opensc-devel/2011-December/017525.html
-
-commit 51630a844e8e95e7108cb1966c5f3e21b93a463b
-Author: Doug Engert <deengert at anl.gov>
-Date:   Thu Dec 15 14:58:02 2011 -0600
-
-    Cleanup PKCS15 PIV Card PIN flags
-    
-    If PIV card Discovery Object is present and Global PIN is preferred,
-    turn off the LOCAL flag.
-
-commit 6f8dcc9172277799011d88fdbe2fabfcf3a89774
-Author: Martin Paljak <martin at martinpaljak.net>
-Date:   Thu Dec 8 11:21:29 2011 +0200
-
-    Make the Mac OS X package builder script more resilient.
-    
-    Don't fail if not needed .la files are nout found in the target.
-    
-    This is actually a test commit for github<->opensc-project.org sync
-
-commit ed7f0b8f7957dd2877c1b9e79b6d0840a5d61103
-Merge: 5180460 c6fcd68
-Author: Martin Paljak <martin at martinpaljak.net>
-Date:   Wed Dec 7 13:31:26 2011 +0000
-
-    Merge "Fix for ticket #400" into staging
-
-commit c6fcd68fbcc4d39885568fcca2238f3d99f34382
-Author: João Poupino <joao.poupino at co.sapo.pt>
-Date:   Tue Nov 15 01:39:53 2011 +0000
-
-    Fix for ticket #400
-    
-    Specify the path of the Address PIN for IAS-based cards in order to properly
-    read the Citizen Address Data object.  Remove the "Citizen Data" object
-    association with the Address PIN, as it incorrectly describes the card layout.
-    
-    http://www.opensc-project.org/opensc/ticket/400.
-    
-    Change-Id: I7ca81d6d15c5e2b137ff3c9a40b7471eb2fad55c
-
-commit 51804601e42be2b7a3c9898dae04defe3339220b
-Author: Martin Paljak <martin at martinpaljak.net>
-Date:   Mon Aug 8 17:16:52 2011 +0300
-
-    pkcs15-tool: also print the PIN reference in hex.
-    
-    This eases debugging.
-
-commit 4f334b80752314c694e4f2f9c8f87d589d2a9a02
-Author: Martin Paljak <martin at martinpaljak.net>
-Date:   Wed Aug 31 13:11:21 2011 +0300
-
-    MacInstaller: remove cardos-tool on uninstall
-    
-    Thanks to Marek Kusmin for noticing this.
-
-commit e0748e2bdb75849d3e6e295750870525075ff301
-Author: Martin Paljak <martin at martinpaljak.net>
-Date:   Tue Sep 13 22:02:01 2011 +0300
-
-    Staging builds must include the new version for PreReleases.
-
-commit a4b0daf98cfba7d52ed85727d425ed746b9df0d9
-Merge: 10ae35f 5fc31b7
-Author: Martin Paljak <martin at martinpaljak.net>
-Date:   Tue Sep 13 22:00:38 2011 +0300
-
-    Merge branch 'macosx' into staging
-
-commit 5fc31b7f6e1a00f8d2eebfdaac87b68758f8fc7d
-Author: Martin Paljak <martin at martinpaljak.net>
-Date:   Tue Sep 13 21:57:22 2011 +0300
-
-    MacInstaller: more explicitly support 10.7
-    
-    Tokend has been discontinued on 10.7 but still works.
-    
-    This fixes #382
-
-commit 10ae35fd5713bd643029f1cbb70f5bf129719b6e
-Author: Martin Paljak <martin at martinpaljak.net>
-Date:   Wed Aug 31 13:16:09 2011 +0300
-
-    Add LGPL header with a generic copyright to util.c
-    
-    Individual copyright should be delegated to individual commits.
-
-commit 931e91359960361c880f98873da5cabc3350d52d
-Author: Peter Marschall <peter at adpm.de>
-Date:   Sun Aug 28 11:49:28 2011 +0200
-
-    iso7816.c: clean up iso7816_restore_security_env()
-    
-    No need for response buffers for APDUs of the APDU_CASE_1 type.
-    
-    This should fix OpenSC Ticket #299.
-
-commit 93816b37cd0fb3ac85c6df12ded71c4548ca1cbc
-Author: Peter Marschall <peter at adpm.de>
-Date:   Sun Aug 28 11:15:38 2011 +0200
-
-    iso7816.c: slightly clean up iso7816_delete_file()
-    
-    Only set the APDU's data element for the APDU_CASE3_SHORT type;
-    no need to do it for the APDU_CASE_1 type.
-
-commit 3b6c985cca934ff30b66e4ec0161d50be11de8db
-Author: Peter Marschall <peter at adpm.de>
-Date:   Sun Aug 21 13:46:02 2011 +0200
-
-    westcos-tool.1.xml: sort options alphabetically
-
-commit 56a1ab6769fc196a47792d60fea588344007f785
-Author: Peter Marschall <peter at adpm.de>
-Date:   Sun Aug 21 13:43:15 2011 +0200
-
-    pkcs15-tool.1.xml: sort options alphabetically
-
-commit 6b989aef577412c72bbcaf94b0978e89d8f6b5f3
-Author: Peter Marschall <peter at adpm.de>
-Date:   Sun Aug 21 13:36:38 2011 +0200
-
-    pkcs15-init.1.xml: sort options alphabetically, slight rewording
-
-commit 6a6898a2ea2e8ed2667cace13456b00540a5a269
-Author: Peter Marschall <peter at adpm.de>
-Date:   Sun Aug 21 13:30:26 2011 +0200
-
-    pkcs11-tool.1.xml: sort options alphabetically
-
-commit bd85c8f472ccc06efcb585a8b4db146ea20eb6e1
-Author: Peter Marschall <peter at adpm.de>
-Date:   Sun Aug 21 13:20:28 2011 +0200
-
-    opensc-tool.1.xml: sort options alphabetically
-
-commit 1df0340f57f447bb343ad8a269e6f0fb8cdaefde
-Author: Peter Marschall <peter at adpm.de>
-Date:   Sun Aug 21 13:15:33 2011 +0200
-
-    netkey-tool.1.xml: sort options & commands alphabetically
-
-commit 55699b9d666e7dfd1194779fd9e466f43bc7cd60
-Author: Peter Marschall <peter at adpm.de>
-Date:   Sun Aug 21 13:13:55 2011 +0200
-
-    eidenv.1.xml: sort options alphabetically
-
-commit 6227e079cffeb84452aacf773107afa2cdf64eaf
-Author: Peter Marschall <peter at adpm.de>
-Date:   Sun Aug 21 13:11:32 2011 +0200
-
-    cryptoflex-tool.1.xml: sort options alphabetically
-
-commit ea18c4a0d0247fc4e5e2fbc511fc19d5f495ae68
-Author: Peter Marschall <peter at adpm.de>
-Date:   Sun Aug 21 13:08:52 2011 +0200
-
-    cardos-tool.1.xml: sort options alphabetically
-
-commit ca0343de429b3cbd6197265c0d1c5e2470f5c996
-Author: Peter Marschall <peter at adpm.de>
-Date:   Sun Aug 21 13:05:46 2011 +0200
-
-    westcos-tool.1.xml: slight rewording
-
-commit 9f09113ab7ef1df7c5a1c106396e73f557e60228
-Author: Peter Marschall <peter at adpm.de>
-Date:   Sun Aug 21 12:45:13 2011 +0200
-
-    opensc-explorer.1.xml: sort options & commands alphabetically
-
-commit d6a9cda78b6d867fa038cd2a4654d34a2a1e0d67
-Author: Peter Marschall <peter at adpm.de>
-Date:   Sun Aug 21 12:33:13 2011 +0200
-
-    pkcs15-crypt.1.xml: sort options alphabetically
-
-commit 77d051ffc57fcf9e2322e8dadc5ad90a71f5bb69
-Author: Peter Marschall <peter at adpm.de>
-Date:   Sun Aug 21 12:26:20 2011 +0200
-
-    piv-tool.1.xml: more harmonization, slight re-wording
-
-commit 1bff1c1cc00ef1ecc070e573e3b863dd5f5b3575
-Author: Peter Marschall <peter at adpm.de>
-Date:   Sat Aug 20 18:09:19 2011 +0200
-
-    opensc-explorer.1.xml: fix typos, more harmonization
-
-commit 353067d7dbbfb212452ff81eceb76a29d497bdd7
-Author: Peter Marschall <peter at adpm.de>
-Date:   Sat Aug 20 16:51:45 2011 +0200
-
-    tools.xml: use 2 reference sections: tools & file formats
-    
-    Split the contents into two reference sections:
-    on for tools and one for file formats.
-
-commit a9c320f8f8b5de380075ba7f5850c24c5ad02be4
-Author: Peter Marschall <peter at adpm.de>
-Date:   Mon Aug 15 16:58:01 2011 +0200
-
-    doc/tools/*.xml: more consistent formatting
-    
-    uUse specific tags:
-    <command> for commands
-    <option> for options
-    <replaceable> for values that need to be replaced with real values
-
-commit d3b865ee404619c6f427a9cf342b1028608ff39a
-Author: Peter Marschall <peter at adpm.de>
-Date:   Mon Aug 15 15:33:48 2011 +0200
-
-    doc/tools/Makefile.am: substitute @pkgdatadir@
-
-commit dbc5f759696f294b9dc22a279f9dfc0689c2bf61
-Author: Peter Marschall <peter at adpm.de>
-Date:   Mon Aug 15 10:48:17 2011 +0200
-
-    doc/tools/Makefile.am: new Makefile template for autotools
-    
-    Created doc/tools/Makefile.am in order to generate a Makefile in doc/tools/.
-    Use pattern rules in doc/tools/Makefile.am; clean up doc/Makefile.am.
-
-commit aa5974bf5806d22b0a2749692f8ef793853911b2
-Author: Peter Marschall <peter at adpm.de>
-Date:   Mon Aug 15 10:40:57 2011 +0200
-
-    doc/tools/*.xml: include manpage sections in file names
-    
-    Rename source XML files so that their names contain the manpage sections.
-
-commit 0c7d1bdb65e8812d9677af2750e3cbb70abfcda1
-Author: Peter Marschall <peter at adpm.de>
-Date:   Mon Aug 15 10:21:19 2011 +0200
-
-    doc/Makefile.am: get rid of "api.work" kludge
-
-commit 46389f543ff9cc763b132600fefaf5bed7fa432e
-Author: Peter Marschall <peter at adpm.de>
-Date:   Sun Aug 14 23:27:55 2011 +0200
-
-    doc/tools/*.xml: add <refmiscinfo> class attributes
-    
-    Use <refmiscinfo> with the class attributei values "productname","manual" and
-    "source".
-    This avoids some warnings when generating the manual pages.
-
-commit 4a3e9771e2cf382ddd03eb1cacb22f2148b7a933
-Author: Peter Marschall <peter at adpm.de>
-Date:   Sun Aug 14 22:31:31 2011 +0200
-
-    doc/tools/*.xml: use <citerefentry> in "See also" sections
-    
-    Instead of using plain text, use machine-parsable <citerefentry> sections
-    to refer to other odcuments.
-
-commit b628f14c13b603b53a82b5597d7b893e557e0cb9
-Author: Peter Marschall <peter at adpm.de>
-Date:   Sun Aug 14 22:05:17 2011 +0200
-
-    doc/tools/*.xml: harmonize & complete <refmeta> sections
-
-commit d25b30b7027a22e64404e815501ffe2c80699403
-Author: Peter Marschall <peter at adpm.de>
-Date:   Sun Aug 14 21:52:02 2011 +0200
-
-    doc/tools/*.xml: use <refsynopsisdiv> sections
-    
-    Use <refsynopsisdiv> sections with <cmdsynopsis> tags for the synopsis
-    instead of plain <refsectX> sections. Create one where it was massing.
-
-commit bb9ffa1bd383f0d5dad90a0f2ed04082139d8dd5
-Author: Peter Marschall <peter at adpm.de>
-Date:   Sun Aug 14 19:37:11 2011 +0200
-
-    piv-tool.xml: fix typo
-
-commit 0918c0ecd62a0a825829d18809db9bc85872d9e9
-Merge: 0125444 4294f3c
-Author: Ludovic Rousseau <ludovic.rousseau+github at gmail.com>
-Date:   Mon Jul 18 11:37:40 2011 +0200
-
-    Merge remote branch 'upstream/staging'
-
-commit d824eb62bc41f8f714bd6d67b6333ea07a527d70
-Author: Peter Marschall <peter at adpm.de>
-Date:   Sat Jun 4 19:18:34 2011 +0200
-
-    pkcs15-profile.xml: remove empty SYNOPSIS section
-
-commit d505a55483f830bb612e1ff6c7fb1c65b7a9ad81
-Author: Martin Paljak <martin at martinpaljak.net>
-Date:   Fri Jul 15 13:40:07 2011 +0300
-
-    Release OpenSC 0.12.2
-
-commit a8df0b37cdb51770ec07c890c8965f009bcb2b43
-Author: Martin Paljak <martin at martinpaljak.net>
-Date:   Wed Jul 13 17:27:13 2011 +0300
-
-    PreReleases: publish 0.12.2 RC2, the final RC.
-
-commit 358c6828c206089397f271ea54854aaf9865fc05
-Author: Martin Paljak <martin at martinpaljak.net>
-Date:   Wed Jul 13 17:26:28 2011 +0300
-
-    NEWS: add note about 17bc2c8
-
-commit 17bc2c8809463b5194fb95645ce6cc7a33adbda2
-Author: Martin Paljak <martin at martinpaljak.net>
-Date:   Tue Jul 12 11:49:24 2011 +0300
-
-    FINeID: fix for broken organisation cards.
-    
-    Certain FINeID cards for organisations return 6A88 instead of 6A82 for missing files.
-    This makes sc_enum_apps fail and will result in unknown card behavior from OpenSC.
-    
-    See http://www.opensc-project.org/pipermail/opensc-devel/2011-June/016910.html
-
-commit 4294f3ca98effd7a986e816c8972377700aa0393
-Author: Martin Paljak <martin at martinpaljak.net>
-Date:   Thu Jun 30 16:50:25 2011 +0300
-
-    MacInstaller: Mac OS X 10.6.8 was released on 23.06.2011. Require it by default
-
-commit 11a7a9ebfb0fee7cc490db20a6f7cbf2ac2c87c9
-Author: Martin Paljak <martin at martinpaljak.net>
-Date:   Thu Jun 30 13:26:09 2011 +0300
-
-    Update NEWS about silent builds
-
-commit e8b22f63e7a9757be1c6ff78331daa28ba6875f1
-Author: Ludovic Rousseau <ludovic.rousseau+github at gmail.com>
-Date:   Thu Jun 30 11:42:31 2011 +0200
-
-    Silent build rules by default
-    
-    Use make V=1 for the verbose mode (as used before)
-
-commit 012544463899799d24a8c0d04c02c099e62f4e68
-Author: Ludovic Rousseau <ludovic.rousseau+github at gmail.com>
-Date:   Thu Jun 30 11:42:31 2011 +0200
-
-    Silent build rules by default
-    
-    Use make V=1 for the verbose mode (as used before)
-
-commit 2680a55abdc4e09be0875797ce18c25bc48d6375
-Author: Martin Paljak <martin at martinpaljak.net>
-Date:   Tue Jun 28 13:10:43 2011 +0300
-
-    Amend previous commit, configure.ac was unpublished.
-
-commit f717b678c06dae4330084023e4475b4824edfa6a
-Author: Martin Paljak <martin at martinpaljak.net>
-Date:   Tue Jun 28 12:33:11 2011 +0300
-
-    Update NEWS and version information for the RC.
-
-commit ea4eee5dc2a1b39646e86b216512e1234fce75c1
-Merge: 78adc76 a59ded7
-Author: Martin Paljak <martin at martinpaljak.net>
-Date:   Tue Jun 28 11:18:23 2011 +0300
-
-    Merge remote-tracking branch 'ludovic/master' into proposed
-
-commit 78adc76da3914af9bbaab369dde3d704a523fd2f
-Merge: dcf9a8e 2ffa346
-Author: Martin Paljak <martin at martinpaljak.net>
-Date:   Tue Jun 28 11:17:36 2011 +0300
-
-    Merge remote-tracking branch 'viktor/master' into proposed
-
-commit a59ded782e090660652a4161720628b58eb5277d
-Author: Ludovic Rousseau <ludovic.rousseau+github at gmail.com>
-Date:   Thu Jun 23 17:07:26 2011 +0200
-
-    Fix compiler warnings
-    
-    ctx.c:679:7: warning: "ENABLE_CTAPI" is not defined
-    ctx.c:681:7: warning: "ENABLE_OPENCT" is not defined
-
-commit b7c2836d943db19fb6bd6cd945b5bfe10e93ca63
-Author: Ludovic Rousseau <ludovic.rousseau+github at gmail.com>
-Date:   Thu Jun 23 16:10:46 2011 +0200
-
-    C_Digest(): check context validity before logging
-    
-    If the context is invalid (no C_Initialize) the we get a:
-    log.c:76: sc_do_log_va: Assertion `ctx != ((void *)0)' failed.
-
-commit 1f6a85fea9e8733f9d65d216a4ae0f224326be06
-Author: Ludovic Rousseau <ludovic.rousseau+github at gmail.com>
-Date:   Thu Jun 23 11:57:05 2011 +0200
-
-    only C_GetFunctionList needs to be exported
-    
-    Calling applicatinos must locate function pointers through
-    C_GetFunctionList() after dlopen().
-
-commit b9c43b9214b843ec55875632b8d9a6a0fae6ad80
-Author: Ludovic Rousseau <ludovic.rousseau+github at gmail.com>
-Date:   Tue Jun 21 13:56:40 2011 +0200
-
-    Remove a useless cast in sc_dlopen()
-
-commit d3c13fd4713ccf0788a8d6d0c80de117dc16d71a
-Author: Ludovic Rousseau <ludovic.rousseau+github at gmail.com>
-Date:   Tue Jun 21 13:53:08 2011 +0200
-
-    Fix compiler warning
-    
-    libscdl.c: In function 'sc_dlerror':
-    libscdl.c:86: warning: old-style function definition
-
-commit ce2d3c09bed53e4a9e77e327d39f0a4e2187ba3a
-Author: Ludovic Rousseau <ludovic.rousseau+github at gmail.com>
-Date:   Tue Jun 21 10:41:41 2011 +0200
-
-    Check the lib is initialized before logging
-    
-    C_CloseSession() and C_CloseAllSessions() were calling sc_debug() before
-    any check on the validity of the context. So if C_Initialize() was not
-    previously called you get an assert:
-    log.c:76: sc_do_log_va: Assertion `ctx != ((void *)0)' failed.
-
-commit dcf9a8e0b2fe5e11df2047a63691c2154aea065b
-Author: Martin Paljak <martin at martinpaljak.net>
-Date:   Fri Jun 17 12:12:38 2011 +0300
-
-    setcos: remove useless #if 1
-
-commit 17c295ab1e5ed21fb85864cc650081aa12d99666
-Author: Martin Paljak <martin at martinpaljak.net>
-Date:   Thu Jun 16 15:58:55 2011 +0300
-
-    Fix compiler warnings:
-    
-     ../../src/libopensc/cardctl.h:231:30: warning: comma at end of enumerator list
-     ../../src/libopensc/cardctl.h:629:13: warning: comma at end of enumerator list
-
-commit bc307ae975168efb34d5ab258d011672eb46eff7
-Author: Martin Paljak <martin at martinpaljak.net>
-Date:   Thu Jun 16 15:49:04 2011 +0300
-
-    compiler warning: muscle.c:588:12: warning: unused variable ‘buffer_size’
-    
-    Also remove asserts, production code is compiled with asserts turned off, thus the unused variable warning.
-
-commit 46e0c49d7bdf0aacda2abc6d88f0b6a18ecf1530
-Author: Martin Paljak <martin at martinpaljak.net>
-Date:   Thu Jun 16 10:15:34 2011 +0300
-
-    pcsc: correctly handle timeout situation when refreshing reader state.
-    
-    The code that treated a timeout as success was never reached, because the
-    surrounding if eliminated the possibility of entering the block when the return code
-    from SCardGetStatusChange was SCARD_E_TIMEOUT.
-    
-    Issue found by Coverity Scan.
-
-commit 1f870b0c0760c516f0781b9b33ae0c586ab53bc1
-Author: Martin Paljak <martin at martinpaljak.net>
-Date:   Thu Jun 16 10:08:04 2011 +0300
-
-    pcsc: initialize variables
-    
-    Patch by Frank Morgner
-    
-    http://www.opensc-project.org/pipermail/opensc-devel/2011-May/016659.html
-
-commit f4a45da61733dc61682394e9b5f81da9b8793ca1
-Merge: 6c24bd5 2757253
-Author: Martin Paljak <martin at martinpaljak.net>
-Date:   Thu Jun 16 09:31:32 2011 +0300
-
-    Merge branch 'proposed' of github.com:martinpaljak/OpenSC into proposed
-
-commit 6c24bd5cfff0b577d4a054a079ae4a8c91625ca0
-Author: Peter Marschall <peter at adpm.de>
-Date:   Wed Jun 15 20:53:50 2011 +0200
-
-    opensc-explorer: silence compiler warnings
-
-commit 27572537ce8de2b5627eb669607abee15338504c
-Author: Martin Paljak <martin at martinpaljak.net>
-Date:   Wed Jun 15 14:10:37 2011 +0300
-
-    FinnishEid: fix the symbolic names for FINeID v2 cards with 2048 keys and restore compatibility with v2 cards with 1024 keys.
-    
-    The more proper name for the 2048bit cards could be "v2.5".
-    
-    Thanks to jem at iki.fi, kivinen at iki.fi and tuju at iki.fi for the patch.
-
-commit 6e70c09012f20500d311b618789af2d1120bdda0
-Merge: 0ae9962 d4e90c1
-Author: Martin Paljak <martin at martinpaljak.net>
-Date:   Wed Jun 15 11:07:52 2011 +0300
-
-    Merge branch 'github-transition' into proposed
-
-commit 0ae996254fa48d5e11d44b6af58f04d26005b8cb
-Merge: f4c39e2 5a23069
-Author: Martin Paljak <martin at martinpaljak.net>
-Date:   Wed Jun 15 11:07:23 2011 +0300
-
-    Merge branch 'pkcs11' into proposed
-
-commit f4c39e20b1328ecb85ccf1f34296f47694f9033e
-Merge: 6690975 75524a5
-Author: Martin Paljak <martin at martinpaljak.net>
-Date:   Wed Jun 15 11:06:38 2011 +0300
-
-    Merge remote-tracking branch 'ludovic/PCSCv2_PART10_PROPERTY_bMaxPINSize' into proposed
-
-commit 6690975498358cd745b8dedc1c3dc5a2c881e1e6
-Merge: a3a8ae3 2faad42
-Author: Martin Paljak <martin at martinpaljak.net>
-Date:   Wed Jun 15 11:06:30 2011 +0300
-
-    Merge remote-tracking branch 'peter/tools-20110611' into proposed
-
-commit a3a8ae3ef9c634e96323341e9b83ffb187b375f3
-Merge: a6b7743 4939432
-Author: Martin Paljak <martin at martinpaljak.net>
-Date:   Wed Jun 15 11:06:23 2011 +0300
-
-    Merge remote-tracking branch 'peter/OpenPGP-20110611' into proposed
-
-commit d4e90c171a77bc58c4c9a5665fd3ddc8ec35004e
-Author: Martin Paljak <martin at martinpaljak.net>
-Date:   Tue Jun 7 12:28:25 2011 +0300
-
-    Changes to build scripts requires for Git transition
-
-commit 75524a5be87c0657f4ecc8aa8e1cfe1658972f68
-Author: Ludovic Rousseau <ludovic.rousseau at free.fr>
-Date:   Sun Jun 12 20:37:51 2011 +0200
-
-    Fix PIN min and max sizes for pinpads
-    
-    Some pinpads do not support PIN size less than 4 or greater than 8.
-    PC/SC v2 part 10 allows to ask the driver/reader for the supported
-    values. This avoids to have the SECURE PIN CCID command rejected by the
-    reader.
-    
-    This should fix OpenSC ticket #361 "card-entersafe should ask the pinpad
-    reader for the maximum pin size"
-
-commit 3b63bf351e1cddcecfbd1ee876ee3aeff647c3f9
-Author: Ludovic Rousseau <ludovic.rousseau at free.fr>
-Date:   Sun Jun 12 20:36:43 2011 +0200
-
-    Add PCSCv2_PART10_PROPERTY_* values
-    
-    These are the tag values returned by PC/SC v2 part 10
-    FEATURE_GET_TLV_PROPERTIES command.
-
-commit 2ffa346eff4fe5de22dcd8d0fe23ad97cc7b19a2
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Tue Jun 14 14:56:49 2011 +0200
-
-    OpenSC.msi: install opensc.dll into the 'tools' directory
-    
-    Now the DLLs installed into the 'system' directory are static.
-    Only opensc tools depend on opensc.dll.
-
-commit c2abd9fd16401da7e56cea4b2553d7479991705c
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Tue Jun 14 14:38:58 2011 +0200
-
-    win32: build static version of the onepin PKCS#11 module
-
-commit 40cb1c9e35bc5efc8fd597277f7297261b6ae498
-Merge: 8936901 a6b7743
-Author: Ludovic Rousseau <ludovic.rousseau+github at gmail.com>
-Date:   Tue Jun 14 14:00:18 2011 +0200
-
-    Merge remote branch 'upstream/master'
-
-commit 8936901e2b8fade5d9831b224f3313b7b3255133
-Author: Ludovic Rousseau <ludovic.rousseau+github at gmail.com>
-Date:   Tue Jun 14 13:50:37 2011 +0200
-
-    Correctly wait for card event
-    
-    The timeout parameter of SCardGetStatusChange() is a DWORD (unsigned
-    int). An int timeout parameter was used instead.
-    The problem happens on 64-bits architectures where DWORD is 64-bits long
-    and int is only 32-bits long. The sign extension C mechanism transforms
-    the PC/SC value INFINITE into -1 instead of 4294967295.
-    
-    See http://www.opensc-project.org/pipermail/opensc-devel/2011-June/016831.html
-    "Kobil KAAN Advanced Reader, "waiting for card" timeout"
-
-commit 5a2306967175ea96eaf9d058224fb9c394791f74
-Author: Martin Paljak <martin at martinpaljak.net>
-Date:   Tue Jun 14 14:41:29 2011 +0300
-
-    pkcs11: only C_GetFunctionList needs to be exported, calling applicatinos must locate function pointers though it after dlopen()
-
-commit a7ea231989718de5e0977d79a7c1333aa3a8c238
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Tue Jun 14 11:51:21 2011 +0200
-
-    win32: build only static version of the OpenSC minidriver
-
-commit b9f05137440891887c9fb3e84371c64098d768ab
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Tue Jun 14 11:47:01 2011 +0200
-
-    win32: build only static version of the PKCS#11 module
-
-commit 6bddab7417d325a261be8e4b436f67d630777c5b
-Author: Viktor Tarasov <viktor.tarasov at gmail.com>
-Date:   Tue Jun 14 11:34:25 2011 +0200
-
-    win32: 'Minimal Size' code optimization
-
-commit a6b774308887a849b144c488951b3b28c3658c84
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jun 13 09:23:30 2011 +0000
-
-    pkcs15: add comments for the authentication object data type
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5569 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9ef95c71e684a7ce31fefa85de50a7135c730e78
-Merge: 3920417 00d9a5d
-Author: Ludovic Rousseau <ludovic.rousseau+github at gmail.com>
-Date:   Mon Jun 13 10:12:22 2011 +0200
-
-    Merge branch 'master' of https://github.com/LudovicRousseau/OpenSC
-
-commit ba64c5573ddca9e723f4356361793089ba3f876b
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Jun 11 20:17:30 2011 +0000
-
-    pkcs11: framework-pkcs15: invalid function name
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5568 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2faad4232573b9616921548425fff69a0540e468
-Author: Peter Marschall <peter at adpm.de>
-Date:   Thu Jun 2 19:47:50 2011 +0200
-
-    opensc-explorer: consolidate filename generation
-    
-    * add new function path_to_filename() that converts a path into
-      filename, and returns a static buffer to it
-    * convert all occurrences where file names get generated
-      to using this function
-    
-    Signed-off-by: Peter Marschall <peter at adpm.de>
-
-commit c03eedde5416e2894ec068f4b17d925e962be676
-Author: Peter Marschall <peter at adpm.de>
-Date:   Thu Jun 2 18:43:27 2011 +0200
-
-    opensc-explorer: use util_hex_dump() in do_info()
-    
-    Use standard function util_hex_dump() in do_info() instead of
-    enumerating lists of bytes ourselves.
-    
-    Signed-off-by: Peter Marschall <peter at adpm.de>
-
-commit 12fce0f3299c302340c2c644e78e3b540806c2c4
-Author: Peter Marschall <peter at adpm.de>
-Date:   Thu Jun 2 18:20:58 2011 +0200
-
-    opensc-explorer: replace if..else with ?:
-    
-    Use the easier to read & shorter expression
-      path->type = (is_id) ? SC_PATH_TYPE_FILE_ID : SC_PATH_TYPE_PATH;
-    nstead of the longer, but equivalent if () .. else construction.
-    
-    Signed-off-by: Peter Marschall <peter at adpm.de>
-
-commit 52b601ee53caa548c3597c50dda9e600becf2e1b
-Author: Peter Marschall <peter at adpm.de>
-Date:   Thu Jun 2 17:46:30 2011 +0200
-
-    opensc-explorer: re-factor do_apdu()
-    
-    * allow double-quoted strings besides hexdata in ADPU generation
-    * detect errors in parameter parsing
-    * use utility function to print bytes sent,
-      fixing an error that only showed parts of the APDU wheni
-      it was generated from multiple arguments
-    
-    Signed-off-by: Peter Marschall <peter at adpm.de>
-
-commit 81aa02d59808da712092a147dff5d0528779bc93
-Author: Peter Marschall <peter at adpm.de>
-Date:   Thu Jun 2 17:17:08 2011 +0200
-
-    opensc-explorer: convert all mapping tables to id2str_t
-    
-    Use type id2str_t for all mapping tables mapping IDs<->names.
-    
-    Signed-off-by: Peter Marschall <peter at adpm.de>
-
-commit 1c437c049caf8842ff9f3430eecc21894db3f3b3
-Author: Peter Marschall <peter at adpm.de>
-Date:   Thu Jun 2 16:40:24 2011 +0200
-
-    opensc-explorer: simplify arg parsing in do_change() & do_unblock()
-    
-    Simplify argument handling in do_change() and do_unblock(),
-    making the functions shorter and deasier to understand.,
-    
-    Signed-off-by: Peter Marschall <peter at adpm.de>
-
-commit 61855ebd225778b79dd89909304d272163ba774a
-Author: Peter Marschall <peter at adpm.de>
-Date:   Thu Jun 2 16:19:38 2011 +0200
-
-    opensc-explorer: remove unnecessary var's in do_update_*()
-    
-    The variables "in_str" in do_update_binary() & do_update_record()
-    do not serve a purpose: use argv[x] directly & remove them.
-    
-    Signed-off-by: Peter Marschall <peter at adpm.de>
-
-commit 291ec6bf1cd3cf1295871691674d9c00d16e591d
-Author: Peter Marschall <peter at adpm.de>
-Date:   Thu Jun 2 16:15:30 2011 +0200
-
-    opensc-explorer: remove hex2binary()
-    
-    With the last users gone, there's no need to keep hex2binary().
-    
-    Signed-off-by: Peter Marschall <peter at adpm.de>
-
-commit 4cc1ab41ffd859731eb229082672fb968e22d69e
-Author: Peter Marschall <peter at adpm.de>
-Date:   Thu Jun 2 16:13:04 2011 +0200
-
-    opensc-explorer: detect AID conversion errors in arg_to_path()
-    
-    Convert arg_to_path() to using the standard sc_hex_to_binary() instead of
-    the local hex2binary().
-    While at it, return erros on failed conversions.
-    
-    Signed-off-by: Peter Marschall <peter at adpm.de>
-
-commit c3ba355531697660c39dda74f3607cb7945c960e
-Author: Peter Marschall <peter at adpm.de>
-Date:   Thu Jun 2 16:02:17 2011 +0200
-
-    opensc-explorer: consolidate string parsing in do_update_record()
-    
-    Update do_update_record() to use parse_string_or_hexdata() instead of the old
-    hex2binary().
-    This change allows to use double-quoted strings in the "update_record" command.
-    
-    Signed-off-by: Peter Marschall <peter at adpm.de>
-
-commit aa7a5ae5f832c03c510f241aa3a10770e0ad66d0
-Author: Peter Marschall <peter at adpm.de>
-Date:   Thu Jun 2 15:51:30 2011 +0200
-
-    opensc-explorer: fix argc checks in do_update_*()
-    
-    do_update_binary() and do_update_record() expect a fixed number of parameters
-    each: adapt the checks for argc so that they do the right thing.
-    
-    Signed-off-by: Peter Marschall <peter at adpm.de>
-
-commit 081bf9fc7e3ece7178d0e3d8dceafba0aacbc79c
-Author: Peter Marschall <peter at adpm.de>
-Date:   Thu Jun 2 15:39:12 2011 +0200
-
-    opensc-explorer: consolidate string/hexdata parsing
-    
-    * add new function parse_string_or_hexdata() that parses
-      a double-quoted string or a hex-data string (e.g: AA:BB:CC)
-      into a buffer
-    * use parse_string_or_hexdata() wherever strings or hexdata
-      gets parsed into a buffer
-    
-    Signed-off-by: Peter Marschall <peter at adpm.de>
-
-commit 9c9317d11b88477007ad5ef4359db39daec6e4c0
-Author: Peter Marschall <peter at adpm.de>
-Date:   Thu Jun 2 13:21:25 2011 +0200
-
-    opensc-explorer: centralize usage
-    
-    * extend cmds struct by a new element args for a description of the arguments
-    * use args in help texts
-    * new function usage() for centralited dispaly of usage info
-    * harmonize argument strings for usage / help texts
-    * re-sort cmd list shown in help texts
-    * add function "help" to cwallow asking for for help
-    * space-police
-    
-    Signed-off-by: Peter Marschall <peter at adpm.de>
-
-commit 8780ddb2e19611f59250d0d14fbf6bf34412be2b
-Author: Peter Marschall <peter at adpm.de>
-Date:   Wed Jun 1 21:07:13 2011 +0200
-
-    opensc-tool: no unnecessary spaces around "DF"
-    
-    Signed-off-by: Peter Marschall <peter at adpm.de>
-
-commit 9abb39875075f5f68640cfced6926a8df4a29687
-Author: Peter Marschall <peter at adpm.de>
-Date:   Wed Jun 1 21:01:23 2011 +0200
-
-    opensc-tool: update EF structure names
-    
-    Use EF structure names that are more sensible & grammatically more correct.
-    
-    Signed-off-by: Peter Marschall <peter at adpm.de>
-
-commit 78838812fb586eb06de3a14fdb2b5158897886a8
-Author: Peter Marschall <peter at adpm.de>
-Date:   Wed Jun 1 19:58:55 2011 +0200
-
-    opensc-explorer: convert do_info() to using tables
-    
-    * use ID<->name tables instead of arrays of strings where
-      the index was treated like some "magic" constant.
-      With the new mapping tables, the meaning is obvious.
-    
-    * fix a bug with ac_ops_df[]: before the conversion, it was a list
-      of pointers to strings but was in one case treated like it was a mapping table.
-      With the conversion to a mapping table, and the adaption of other code parts
-      this bug got fixed "automagically" ;-)
-    
-    * use common code to cleanly print ACLs for DFs & EFs
-    
-    * harmonize EF structure names to the ones used in ISO 7816-4
-    
-    Signed-off-by: Peter Marschall <peter at adpm.de>
-
-commit 49394323043a1f4c37497c32c43a0633453fd645
-Author: Peter Marschall <peter at adpm.de>
-Date:   Thu Jun 2 10:10:48 2011 +0200
-
-    OpenPGP: unlink blob from blob tree in pgp_free_blob()
-    
-    Remove links pointing to the blob to be deleted from other blobs in the
-    blob tree structure, so that removing a subordinate blob does not hurt
-    its parent or siblings.
-    
-    Signed-off-by: Peter Marschall <peter at adpm.de>
-
-commit da5a223e2636493003f590efbd8d7bf344967b2f
-Author: Peter Marschall <peter at adpm.de>
-Date:   Tue May 31 18:34:41 2011 +0200
-
-    OpenPGP: use pgp_new_blob() to setup MF blob
-    
-    Use the standard way to create blobs, pgp_new_blob(), also for the MF.
-    
-    Signed-off-by: Peter Marschall <peter at adpm.de>
-
-commit 4ddec5d384ee95f4a968ca5c99d83cb3d08ddd49
-Author: Peter Marschall <peter at adpm.de>
-Date:   Wed Jun 1 13:33:23 2011 +0200
-
-    OpenPGP: add DO info entries for MF
-    
-    For consistency, add DO info entries for the MF 3F00.
-    
-    Signed-off-by: Peter Marschall <peter at adpm.de>
-
-commit 961a27c921a65698c4c08e59b945b45da0421ce5
-Author: Peter Marschall <peter at adpm.de>
-Date:   Wed Jun 1 13:17:26 2011 +0200
-
-    OpenPGP: update pgp_list_files()
-    
-    * fail if buffer passed as parameter is too small
-    * only list readable objects
-    
-    Signed-off-by: Peter Marschall <peter at adpm.de>
-
-commit 2e7406922f15ffade1872dad5f261787b9c01cac
-Author: Peter Marschall <peter at adpm.de>
-Date:   Tue May 31 21:00:42 2011 +0200
-
-    OpenPGP: re-factor gpg_new_blob()
-    
-    * get file as parameter & fail if it is NULL
-    * allow parent to be NULL
-    * do not rely on DO info to be passed as parameter,
-      search it yourself using the global DO info list for the card.
-    * infer file type automatically from DO info matching the file ID.
-    
-    Signed-off-by: Peter Marschall <peter at adpm.de>
-
-commit b6ee0e3d751acfbc8f24619a6c700a60749a24ec
-Author: Peter Marschall <peter at adpm.de>
-Date:   Wed Jun 1 13:41:25 2011 +0200
-
-    OpenPGP: immediately quit on allocation errors in init
-    
-    Signed-off-by: Peter Marschall <peter at adpm.de>
-
-commit e3fca4ac1195c25af01d9e88e49fb685ff54c5b4
-Author: Peter Marschall <peter at adpm.de>
-Date:   Wed Jun 1 13:29:07 2011 +0200
-
-    OpenPGP: remove DO info entry for DO FF
-    
-    DO FF is a "catch-all" DO that returns all the infos contained in the other
-    DOs in one hierarchy.
-    It is hence duplicate and not necessary.
-    
-    Signed-off-by: Peter Marschall <peter at adpm.de>
-
-commit 01e63424f57ef0f5413d8d3eb1585087fcf9553f
-Author: Peter Marschall <peter at adpm.de>
-Date:   Tue May 31 14:16:21 2011 +0200
-
-    OpenPGP: fix algorithms & key lengths calculation
-    
-    Also include forgotten DO C3 in keylength calculation.
-    It contains the parameters for the authentication key.
-    
-    Signed-off-by: Peter Marschall <peter at adpm.de>
-
-commit 986307284590b420dce2c29fd68ab519a4609cc3
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jun 10 16:46:41 2011 +0000
-
-    pkcs11: framework-pkcs15: OpenSC specific 'non-repudiation' cryptoki attribute ...
-    
-    In PKCS#11 there is no CKA_ attribute dedicated to the NON-REPUDIATION flag.
-    We need this flag in PKCS#15/libopensc to make dinstinction between 'signature' and 'qualified signature' key slots.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5567 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a7607b8f30b7b186ca7e159b1c9122dcbdfdc680
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jun 10 16:41:04 2011 +0000
-
-    pkcs11: framework-pkcs15: when storing private key, set the key usage from the object attributes
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5566 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 93cc9bef1a8a498c469f69d83148476b085a67ed
-Author: jps <jps at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jun 10 09:14:02 2011 +0000
-
-    For CardOS 4.3B and 4.4, the Verify Retry Counter Package
-    can be loaded at ADMINISTRATION life cycle phase to change
-    the behavior of the VERIFY command in regard to return codes.
-    When that package is loaded, the return code of the VERIFY
-    will be ISO7816-4 compliant (63Cx with x being the value of
-    the remaining retry counter when required verification has failed).
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5565 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 00d9a5d7ac4d03d0e135ff3538e629d92f9e5774
-Merge: 9027279 93baf13
-Author: Ludovic Rousseau <ludovic.rousseau at free.fr>
-Date:   Fri Jun 10 11:06:36 2011 +0200
-
-    Merge remote branch 'upstream/master'
-
-commit 93baf137c30bc509827c40aef6c4c28c9d06f887
-Author: andre <andre at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jun 9 10:59:04 2011 +0000
-
-    libopensc: Fix for drivers returning an error if a challenge of length zero was requested. Actually nothing is done when obtaining such a challenge, thus nothing could fail.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5564 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8a5961e970006a58e57c5aae7eb9e5cb0532afd3
-Author: andre <andre at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jun 8 08:50:42 2011 +0000
-
-    pkcs11-tool.c: At least CKS_RO_PUBLIC_SESSION is needed.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5563 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c5c2366a0b5317320df3eebcfccd548510a45b89
-Author: jps <jps at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jun 8 07:58:51 2011 +0000
-
-    Revert 5558
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5562 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a28bacf02c2ea83541c433796214721faace3ebc
-Author: andre <andre at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jun 8 07:35:03 2011 +0000
-
-    libopensc: Reveal another Belpic hack introduced in r2117.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5561 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7cc559ec39bfab3850c9753ce2eda67fe0549ed7
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jun 7 13:13:43 2011 +0000
-
-    MacInstaller: when building OpenSC.tokend, refresh remote branches before trying to switch.
-    
-    Old checkout is used by build slaves, where new branches might not be visible
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5560 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 203eb871d6547aa79ea6c3c6a5245c025804804e
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jun 7 13:06:41 2011 +0000
-
-    MacInstaller: when building the engine on 10.6, extent the pkg-config search path with freshly built libp11 location instead of replacing the path.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5559 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3920417e94a8b03045b6f482b726b1caad770cea
-Merge: 9027279 b422872
-Author: Ludovic Rousseau <ludovic.rousseau+github at gmail.com>
-Date:   Tue Jun 7 15:02:54 2011 +0200
-
-    Merge remote branch 'upstream/master'
-
-commit b422872813b72fe3e9d81c4f69fbbd0959f904b0
-Author: jps <jps at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jun 7 12:44:53 2011 +0000
-
-    For CardOS 4.3B and 4.4, the Verify Retry Counter Package
-    can be loaded at ADMINISTRATION life cycle phase to change
-    the behavior of the VERIFY command in regard to return codes.
-    When that package is loaded, the PIN can be created with this
-    "verifyRC" flag in cardos.profile if the return code must be
-    ISO7816-4 compliant (63Cx with x being the value of the remaining
-    retry counter when required verification has failed).
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5558 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f2da113f54d98553793da28187b2338086296445
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jun 7 10:49:04 2011 +0000
-
-    MacInstaller: r5550/[d888b3fd55053894dcc751b21301d53669e966ba] changed ABI, bump OpenSC.tokend branch revision.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5557 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 90272799f04997cb0ee72f96e123a68c85b51c65
-Author: Ludovic Rousseau <ludovic.rousseau+github at gmail.com>
-Date:   Tue Jun 7 10:23:56 2011 +0200
-
-    Fix compiler warning
-    
-    Declare the function static to fix:
-    pkcs15-lib.c:1069: warning: no previous prototype for 'sc_pkcs15init_encode_prvkey_content'
-
-commit ffdcad49c5cb1a4320e1a2aaee3baa729aac3cbb
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jun 7 07:08:08 2011 +0000
-
-    NEWS: add details to existing lines
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5556 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 947cdad80151e5106cffb00806b6f1387e4cd754
-Author: andre <andre at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jun 7 06:33:01 2011 +0000
-
-    pkcs15.c: In function ‘compare_obj_flags’:
-    pkcs15.c:1115: warning: unused variable ‘data’
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5555 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f0ab93203131da42e2af1fa043f88b5cc7cbe232
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jun 5 17:03:23 2011 +0000
-
-    minidriver: 'PinObject-info' data type is changed for the 'AuthenticatioObject-info' data type
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5554 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d5b8a6cd5feb638336e5ab3b71bf8f9d9113c5a7
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jun 5 16:53:07 2011 +0000
-
-    RuToken: 'use uninitialized variable' warning
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5553 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 226bfaac7413cc2139b9ba66ae44ba5dc36e393f
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jun 5 16:51:36 2011 +0000
-
-    pkcs15: add few attributes to the biometric authentication data type ...
-    
-    to make happy VS compiler
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5552 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit efc5760646a0592917de535916707333245b03d1
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jun 5 16:14:11 2011 +0000
-
-    win32: build also static version the pkcs11 module
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5551 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d888b3fd55053894dcc751b21301d53669e966ba
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jun 5 15:46:25 2011 +0000
-
-    pkcs15: use general 'AuthenticationObject' instead of 'PinObject'
-    
-    now the attributes of the previous 'pin-info' data type are included
-    as the sub-type attributes of the general 'auth-info' data .
-    It will allow to include support of the 'biometricTemplate' and 'authKey' authentication types.
-    
-    http://www.opensc-project.org/pipermail/opensc-devel/2011-May/016655.html
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5550 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 32d035a9adaff0e0dd9354e9a6acd8d94573dc03
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jun 5 15:13:06 2011 +0000
-
-    AuthentIC: when returning PIN info set the 'tries-left' data to the 'non-initialized' value
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5549 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f45f22ca73f2efc7e8a43f04577edb8c746f26d8
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jun 5 15:05:58 2011 +0000
-
-    westcos: resolve signed/unsigned comparison warning
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5548 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f9b1a1e10240532be9ce45c958dffc75863d95df
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jun 5 15:01:15 2011 +0000
-
-    pkcs15: in 'TokenInfo' data the 'serialNumber' attribut is optional
-    
-    If 'serialNumber' attribute is absent in the 'TokenInfo' data,
-    in the parsed data, this attribute will be set to the value of the card's serial.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5547 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a9eba2b20537ba03a9fb1bf405dc40c2fd2fe534
-Author: andre <andre at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jun 5 11:08:36 2011 +0000
-
-    libopensc: Remove unused parameter 'file_out' in function 'sc_pkcs15_read_file'.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5546 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c74d33d0b0aa3b701430de7819a9ba09158c2b0b
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jun 2 19:43:10 2011 +0000
-
-    coding style: tiny indent style issue
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5545 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f53b9521761dcad501da0daa3702fa20fa32dca9
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jun 2 19:29:15 2011 +0000
-
-    doc: pkcs11-tool: precise description of the options to select a slot
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5544 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a479c368a6523fa3125361a8d79792e35ffaf59f
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jun 2 19:20:11 2011 +0000
-
-    pkcs11-tool: allow non-interactive change of User/SO PIN
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5543 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 438cf4b2d4aee8f2ba4a4cffc3630360de3de7ec
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jun 2 19:06:43 2011 +0000
-
-    RuToken-ECP: profile option to allow the reset of User PIN with SoPIN
-    
-    http://www.opensc-project.org/pipermail/opensc-devel/2011-May/016716.html
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5542 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit da0a77b8c00fc50b169416ed32f7d9fbcb7a41be
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jun 2 18:22:42 2011 +0000
-
-    authentic: spelling of message
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5541 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d43e692e98e82d3b4fefb440123a8f26e973ed1a
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jun 2 18:17:02 2011 +0000
-
-    pkcs11: implement changing of SoPIN
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5540 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 35bd07ed5e31965f0c7064bd0620c6c4508ed666
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jun 2 18:05:02 2011 +0000
-
-    pkcs11: with 'init-pin-in-SO-session' PIN unblock style, try to set PIN when PUK value is not available
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5539 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 36a85ffe5b3aae5535c42df17b48016b4ffd9df0
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jun 2 17:28:37 2011 +0000
-
-    iso7816: resolve problem 'r5237 breaks support for Belgian eID', thanks to Jean-Pierre.
-    
-    http://www.opensc-project.org/pipermail/opensc-devel/2011-May/016703.html
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5538 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b3cbf5453e31d1a56491e73ff645907ff9880543
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jun 2 17:20:10 2011 +0000
-
-    pkcs11: resolve problem 'change 5421 breaks MIT Kerberos login', thanks to Douglas.
-    
-    http://www.opensc-project.org/pipermail/opensc-devel/2011-June/016734.html
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5537 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3095f5479fb71f9cac23d401ffddcbd7d749ba4f
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jun 2 17:12:12 2011 +0000
-
-    pkcs11-tool: resolve compiler warning '"OPENSSL_VERSION_NUMBER" is not defined', thanks to Ludovic
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5536 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d5679f58afb15cc83dfcdb1b85a16b64a9ad64b8
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jun 2 17:00:36 2011 +0000
-
-    warning: resolve 'suggest parentheses around operand' compiler warning
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5535 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f026db6f84694b761f58b2e1f8a8df790a1bd7dc
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jun 2 16:59:39 2011 +0000
-
-    compile warnings: resolve 'comparison between signed and unsigned' compiler warnings
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5534 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 31a56bb374cb61554ceb0650e7f5f10642646c9d
-Author: andre <andre at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jun 1 18:51:26 2011 +0000
-
-    pkcs11-tool.c: Remove useless parameter 'slot' from a lot of function prototypes.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5533 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9ac55871fbd56eb4a3f1f92a043fa1679b9fc41a
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jun 1 17:15:31 2011 +0000
-
-    pkcs15init: oberthur: cleanup compiler warnings
-    
-    http://www.opensc-project.org/pipermail/opensc-devel/2011-May/016724.html
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5532 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e966cc1e6ea8251e77268c89df7d7281cfcf7bc8
-Author: andre <andre at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jun 1 16:54:40 2011 +0000
-
-    dir.c: In function ‘update_single_record’:
-    dir.c:318: warning: unused parameter ‘file’
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5531 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit dfbb55777c3493e0bde995ce1cee6f2348bd3143
-Author: andre <andre at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue May 31 15:12:31 2011 +0000
-
-    pkcs15.c: In function ‘__sc_pkcs15_search_objects’:
-    pkcs15.c:981: warning: unused variable ‘ctx’
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5530 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7dff44ae53218fc8ded72468ae19bb75dbc56374
-Author: andre <andre at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue May 31 15:09:01 2011 +0000
-
-    framework-pkcs15.c: In function ‘set_gost_params’:
-    framework-pkcs15.c:1892: warning: comparison between signed and unsigned
-    framework-pkcs15.c:1902: warning: comparison between signed and unsigned
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5529 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 185e3f825968a1bb57e627ca0d3c67df91456155
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon May 30 14:47:50 2011 +0000
-
-    pkcs11-tool: replace 'slot-label' argument with the two new ones -- 'slot-description' and 'token-label'...
-    
-    the main difference between 'slot-description' and 'token-label' is that
-    the first one is unique in any case,
-    the second one can be the same for more then one slots.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5528 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8931231396e862d59e6e13dfa9e6ee5a99bac86d
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon May 30 13:28:16 2011 +0000
-
-    pkcs11-tool: show CKA_VALUE of the GOST public key object
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5527 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 40cf9a5ccaae1847f5fd311eda8021f2f565c677
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun May 29 19:23:18 2011 +0000
-
-    libopensc: reverse data to sign when signing with the GOST key
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5526 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2e8df6d22667cfc84779ecbfae459704f0fbadd0
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun May 29 18:50:33 2011 +0000
-
-    libopensc: eliminate repetetive debug messages
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5525 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b21e04f42a35df65ccf0763b7d24dea82220bb2a
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun May 29 18:47:44 2011 +0000
-
-    libopensc:  avoid warning "missing braces around initializer"
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5524 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit bf830d63daac2ab7bc1f44cea3442d88e381cd09
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun May 29 18:45:00 2011 +0000
-
-    gost: when decoding public key, add explicit key params
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5523 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a41a9c3f823af99df9da24819fe58cee87e0a6f8
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun May 29 18:35:34 2011 +0000
-
-    pkcs11: pkcs15 framework support for the import of the GOST key
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5522 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e81c17437250a3e6636dd9398ba8e3a5bc091f6b
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun May 29 18:25:04 2011 +0000
-
-    pkcs15-tool: encode GOST public key with the key parameters ...
-    
-    .. so that it can be used with the OpenSSL tools
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5521 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a9e9aaee787ac1c290e2421b047eb6b3d0211707
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun May 29 18:18:43 2011 +0000
-
-    gost: GOST key parameters data type, encode gost parameters procedure
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5520 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1dd7d1fdeb315e4b67ba70c7c09154afbe09c175
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun May 29 18:07:18 2011 +0000
-
-    pkcs11: debug title for GOSTRPARAMS
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5519 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4d2428378dbb83989e2297770ee53e9174bd7ab7
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun May 29 17:55:26 2011 +0000
-
-    pkcs11-tool: CKA_VALUE of imported GOST key has to be presented in the little endian order
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5518 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 71b1f55f7cf6254c8c0303ba2bdfc64c7a5b4c70
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun May 29 17:49:00 2011 +0000
-
-    pkcs15-init: use general function to reverse memory buffer
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5517 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit dce63c8bfc0eb0d389aa3a7836ac03df9438a527
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun May 29 17:47:54 2011 +0000
-
-    libopensc: new exported function to reverse memory buffer
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5516 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4f9924eae84ca004070ba4813cce738a37d0aa2e
-Author: pk <pk at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun May 29 12:04:18 2011 +0000
-
-    added news about TOCS-driver to NEWS-file
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5515 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a045543cc1593f279fbb707f7ae9085a1dc2dbd8
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun May 29 11:50:13 2011 +0000
-
-    minidriver: unused variable
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5514 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 319cb6f071c86bb62fa53e61a39f29ab3e077491
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun May 29 11:48:50 2011 +0000
-
-    minidriver: when reading 'cardid' file return the content of 'cardid' file ...
-    
-    'cardid' size is 16 bytes.
-    It's initialized by the 'empty-cardid' value (00-0F) overwritten (from left) by the last 16 (or less) bytes
-    of the card's serial.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5513 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ee4f346b075f77fc37e17068050aee944ec25150
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat May 28 22:47:05 2011 +0000
-
-    pkcs15init oberthur: avoid warnings 'signed/unsigned mismatch'
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5512 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2d43c601e9b8c728060381b41ea55b9cc1455a6c
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat May 28 22:14:14 2011 +0000
-
-    Remove unused code: sc_pkcs15init_get_label()
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5511 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 215c133ba078c12b783308d898ab7683917c2437
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat May 28 22:14:07 2011 +0000
-
-    libopensc: remove more traces of software token/non-native private key related code.
-    
-    pkcs15-wrap.c can be removed. Clarified/changed the meaning of "insecure" flag to pkcs15-init tool,
-    which will be needed to explicitly enforce the creation of a key which does not require a PIN.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5510 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7179778e228806a034a55858beac57ae6e055db1
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat May 28 19:30:26 2011 +0000
-
-    authentic: avoid warning C4018: signed/unsigned mismatch
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5509 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c97fc2e719f33d6750e6c9d6ff4e5fa9a98a167b
-Author: pk <pk at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat May 28 14:24:27 2011 +0000
-
-    support for TCOS3 IdKey cards and fix for bug #256
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5508 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 661cc0dd47238bc654f75b07cfdfe98fd9a055c2
-Author: andre <andre at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri May 27 12:33:52 2011 +0000
-
-    libopensc: Remove the somewhat mysterious flag SC_CARD_CAP_NO_FCI.
-    
-    It's solely purpose was to get opensc-explorer to work with card-belpic (r2118, r2119).
-    
-    Relates to #296.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5507 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 487a7ab372e38bc6cd6fb3581f4668dcd31ee25a
-Author: andre <andre at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri May 27 09:29:01 2011 +0000
-
-    sc-test.c: In function ‘sc_test_init’:
-    sc-test.c:80: warning: comparison between signed and unsigned
-    sc-test.c:94: warning: comparison between signed and unsigned
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5506 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4a2dfa6822d1a8b489ee90f8c034417eb33bc80b
-Author: andre <andre at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri May 27 09:24:09 2011 +0000
-
-    pkcs11-tool.c: In function ‘sign_data’:
-    pkcs11-tool.c:1253: warning: comparison between signed and unsigned
-    pkcs11-tool.c: In function ‘write_object’:
-    pkcs11-tool.c:1777: warning: unused variable ‘type’
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5505 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit bbcb867a8f8a89e47f9a38e52a56de0dba5ad7dd
-Author: andre <andre at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri May 27 08:49:43 2011 +0000
-
-    card-openpgp.c: In function ‘pgp_enumerate_blob’:
-    card-openpgp.c:584: warning: comparison between signed and unsigned
-    card-openpgp.c: In function ‘pgp_card_ctl’:
-    card-openpgp.c:1036: warning: unused variable ‘priv’
-    card-openpgp.c: In function ‘pgp_init’:
-    card-openpgp.c:272: warning: ‘child’ may be used uninitialized in this function
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5504 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2facf390427d6e94f7a1a3cd150cc087104ed496
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue May 24 20:46:14 2011 +0000
-
-    NightlyBuilds: add NEWS file entries for r5502 and r5468 to r5499
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5503 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit dffe79d55938c0fdcead7b90e385a3502b8946cf
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue May 24 19:08:55 2011 +0000
-
-    SetCOS/FinEID: add support for cards issued after 01.03.2011
-    
-    Thanks to Juha Tuomala & Tero Kivinen <kivinen at iki.fi> for the patch.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5502 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1bb6c706b9936efe2ef29b38080fa7d493ee0484
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue May 24 19:08:43 2011 +0000
-
-    pkcs15-crypt: remove extractable key support. Only native keys (operations on the card) are supported.
-    
-    This amends r4646 and related commits.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5501 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3655d1a1e4ceb15b9d8a2df9572d51a1c894c559
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue May 24 19:08:05 2011 +0000
-
-    pkcs15-tool: align access flags with the rest of output.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5500 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4899f70b4e7811347d130858f2fbb9bea91451b8
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon May 23 17:33:50 2011 +0000
-
-    OpenPGP: use updated ushort2bebytes() in pgp_get_pubkey()
-    
-    Signed-off-by: Peter Marschall <peter at adpm.de>
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5499 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 15cdf5367d191eee19facf18b61abe4457970c3b
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon May 23 17:33:45 2011 +0000
-
-    rewrite bebyte conversion functions: NULL check, return buffer
-    
-    Rewrite bebyte conversion functions:
-    * check whether the buffer passed is non-NULL
-    * for conversions to bebytes, return the buffer passed
-    
-    Signed-off-by: Peter Marschall <peter at adpm.de>
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5498 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit fa259c63d543dec68be9de7c5b54567030b6f9d9
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon May 23 17:33:38 2011 +0000
-
-    OpenPGP: re-factor pgp_list_files()
-    
-    Use ushort2bebytes instead of calculating the mapping to IDs ourselves.
-    
-    Signed-off-by: Peter Marschall <peter at adpm.de>
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5497 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e422a57449a9a4adedc5b2676103195819e3fbb8
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon May 23 17:33:33 2011 +0000
-
-    OpenPGP: re-factor pgp_get_blob()
-    
-    Instead of jumping out of the loop when the correct child is found,
-    and checking afterwards again if we found the correct object,
-    do everything directly in the loop and return from there.
-    
-    Signed-off-by: Peter Marschall <peter at adpm.de>
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5496 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 782b4efa734cf7be249445647f49b19385d68832
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon May 23 17:33:27 2011 +0000
-
-    OpenPGP: get flags & algorithms in pgp_get_card_features()
-    
-    Extend pgp_get_card_features() to get card's flags & supported algorithms
-    from the card:
-    * get algorith values from "algorithm attributes" DOs 0x00c1 - 0x00c3
-    
-    Signed-off-by: Peter Marschall <peter at adpm.de>
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5495 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c46152d89bd12da65953098b6b3a22c87ec71c5a
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon May 23 17:33:15 2011 +0000
-
-    OpenPGP: extend pgp_get_card_features()
-    
-    Extend pgp_get_card_features() with these features:
-    * get SC_CARD_CAP_RNG capability from "extended capabilities" DO 0x00c0
-    * for OpenPGP 2.0 cards get max_send_size / max_recv_size values
-      from "extended capabilities" DI 0x00c0
-    * get max_pin_len from "CHV status bytes" DO 0x00c4
-    
-    Signed-off-by: Peter Marschall <peter at adpm.de>
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5494 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1342648a89c31e34625cb8f1c7408c2d37207e75
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon May 23 17:33:04 2011 +0000
-
-    OpenPGP: new function to get card's features
-    
-    Add a new function pgp_get_card_features() to get the card's capabilities,
-    algorithms, features, ... instead of doing it all in pgp_init():
-    * get SC_CARD_CAP_APDU_EXT capability from ATR
-    * for openPGP 2.0 cards, if not found in ATR,
-      get SC_CARD_CAP_APDU_EXT capability from "historical bytes" DO 0x5f52
-    
-    Signed-off-by: Peter Marschall <peter at adpm.de>
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5493 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ee446adf09137ad57943d988b6af14d628bcdd5d
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon May 23 17:32:59 2011 +0000
-
-    OpenPGP: check for get_fn != NULL in pgp_read_blob()
-    
-    In pgp_read_blob(), check if the pointer to the function we want to call
-    is defined.
-    
-    Signed-off-by: Peter Marschall <peter at adpm.de>
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5492 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 19142ee9afe638c3ce0fa276e3ba84951d9ac4e2
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon May 23 17:32:54 2011 +0000
-
-    OpenPGP: deal with DOs depending on card version
-    
-    Have separate copies of pgp_objects[] data elements specific to the card's
-    version, and extend these structures with additional information:
-    * Some spec changes cannot be compatibly expressed in one common
-      simple data structure without making it too complex.
-    * depending on specification version, only deal with those DOs
-      that are legal within that version
-    * add information or read & write access conditions
-    * add information for non-toplevel and/or write-only DOs
-    * use symbolic names for constants
-    
-    Signed-off-by: Peter Marschall <peter at adpm.de>
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5491 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 88e88d931750716706484f30eb8a5330084d41a4
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon May 23 17:32:49 2011 +0000
-
-    OpenPGP: read BCD version from card
-    
-    Signed-off-by: Peter Marschall <peter at adpm.de>
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5490 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit cf3a34cbef269506b36331a14c1de352926e08de
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon May 23 17:32:43 2011 +0000
-
-    OpenPGP: re-factor pgp_select_file()
-    
-    * remove unnecessary copy operations with a temporary path object,
-      instead increase the start index.
-    * addd comments
-    
-    Signed-off-by: Peter Marschall <peter at adpm.de>
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5489 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4a3df984501d391e6436660b34af7259ec48527d
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon May 23 17:32:36 2011 +0000
-
-    OpenPGP: comment use of "current"
-    
-    Signed-off-by: Peter Marschall <peter at adpm.de>
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5488 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 101cf28766ac62564dd714388cecc7854258da37
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon May 23 17:32:31 2011 +0000
-
-    OpenPGP: clean up with pgp_finish()
-    
-    Use pgp_finish() wherever possible to clean up.
-    
-    Signed-off-by: Peter Marschall <peter at adpm.de>
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5487 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9aa73420004f0d0a1307cce2648035fbb883dd55
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon May 23 17:32:26 2011 +0000
-
-    OpenPGP: re-factor pgp_finish()
-    
-    Re-structure pgp_finish() for easier reading.
-    While at it, check for priv != NULL before free()ing it.
-    
-    Signed-off-by: Peter Marschall <peter at adpm.de>
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5486 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ec1f1bd8128f3f26452050252179bcc08983b664
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon May 23 17:32:21 2011 +0000
-
-    OpenPGP: sprinkle with LOG_... macros
-    
-    Instrument functions used in the card operations table pgp_ops[]
-    with log macros to ease debugging.
-    
-    Signed-off-by: Peter Marschall <peter at adpm.de>
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5485 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9c26b8f7d315f0b40b88ca9d57394111b51e2c4f
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon May 23 17:32:10 2011 +0000
-
-    OpenPGP: briefly document each function
-    
-    Write a short comment at the beginning of each function,
-    shortly sketching what the function does.
-    
-    Signed-off-by: Peter Marschall <peter at adpm.de>
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5484 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 70fa98232a084479ef9e915610f9090077c337ec
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon May 23 17:32:05 2011 +0000
-
-    OpenPGP: remove unused element from structure
-    
-    The element size in struct do_info is never used. Get rid of it.
-    
-    Signed-off-by: Peter Marschall <peter at adpm.de>
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5483 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9765eda21cc7366257ec489d2eb622fca882aa3d
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon May 23 17:32:00 2011 +0000
-
-    OpenPGP: implement card_ctl() command SC_CARDCTL_GET_SERIALNR
-    
-    Implement card_ctl(), crrently restricted only to SC_CARDCTL_GET_SERIALNR.
-    The card's serial number is copied from the respective bytes in the AID.
-    
-    Signed-off-by: Peter Marschall <peter at adpm.de>
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5482 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6e04d7f6bfb1024aaca5bb54239cc27efeb2d871
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon May 23 17:31:55 2011 +0000
-
-    OpenPGP: free memory when selecting the application fails
-    
-    free() the memory already reserved when the file identifying the OpenPGP
-    application fails & reset the pointers in the card strcuture back to NULL.
-    
-    Signed-off-by: Peter Marschall <peter at adpm.de>
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5481 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 56f6718bf2a705bb9849d17fecb8107eb08b08ca
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon May 23 17:31:50 2011 +0000
-
-    OpenPGP: allow extended APDUs in all functions
-    
-    Depending on the card's capabilities and the necessity (requested response
-    size > 256) allow extended APDUs in all functions talking to the card.
-    
-    Signed-off-by: Peter Marschall <peter at adpm.de>
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5480 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f32a8ff59c4808f170479f45e76aa2a87b6ef0a2
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon May 23 17:31:45 2011 +0000
-
-    OpenPGP: use card "extended Lc/Le" capabilities
-    
-    adapt pgp_get_pubkey() and pgp_read_blob() to make use of the information
-    about the "extended Lc/Le" capabilities.
-    
-    This allows reading OpenPGP Card v2.0 keys!
-    
-    Signed-off-by: Peter Marschall <peter at adpm.de>
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5479 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1911db7532c63519817d3258ab603a308ef4992b
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon May 23 17:31:39 2011 +0000
-
-    OpenPGP: update card capabilities from historical bytes
-    
-    According to OpenPGP card specs 1.1 & 2.0 historical bytes in the ATR
-    indicate capabilities:
-    * bit 0x40 of the 3rd byte of the compact-TLV entry with TL 0x73 tells
-      whether the card supports extended Lc/Le fields in APDUs.
-    
-    Signed-off-by: Peter Marschall <peter at adpm.de>
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5478 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1bb69cb8470c977408112c07dfc70c1190a395f9
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon May 23 17:31:31 2011 +0000
-
-    OpenPGP: catch calloc() errors in pgp_new_blob()
-    
-    Detect and react on out of memory errors in pgp_new_blob() and its callers.
-    
-    Signed-off-by: Peter Marschall <peter at adpm.de>
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5477 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6b7906f0a2e2c5a7dc8dab432b53c22b47854a12
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon May 23 17:31:24 2011 +0000
-
-    OpenPGP: use symbolic names for errors/success
-    
-    Signed-off-by: Peter Marschall <peter at adpm.de>
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5476 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 75a89e7c25e6e4802551086eb1a50eeaaaccd8ef
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon May 23 17:31:18 2011 +0000
-
-    OpenPGP: add some comments
-    
-    Signed-off-by: Peter Marschall <peter at adpm.de>
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5475 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4892af32c42b12f4d7133d9271d2616f2ab98582
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon May 23 17:31:09 2011 +0000
-
-    OpenPGP: re-factor pgp_set_blob()
-    
-    * NULL-ify freed data pointer
-    * avoid unnecessary malloc() calls
-    * cope with malloc() errors
-    * do not rely on blob->file for be set
-    
-    Signed-off-by: Peter Marschall <peter at adpm.de>
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5474 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ea64ba24af5c17c0a89f31dc4a3c78c8d5c4c573
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon May 23 17:31:02 2011 +0000
-
-    OpenPGP: NULL-ify free()'d pointer
-    
-    Signed-off-by: Peter Marschall <peter at adpm.de>
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5473 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d248026abca9ac016cd1b699fc006cb89a9d8fac
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon May 23 17:30:56 2011 +0000
-
-    OpenPGP: implement function to free the fake file system
-    
-    * pgp_iterate_blobs(): walk through the blob tree
-    * pgp_free_blob(): free a blob
-    
-    Signed-off-by: Peter Marschall <peter at adpm.de>
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5472 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 03381a25941f27049a621a641bdb72bcdf6a28d3
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon May 23 17:30:49 2011 +0000
-
-    OpenPGP: re-factor pgp_enumerate_blob()
-    
-    Leverage the fact that OpenPGP cards use TLV encoding according to
-    ASN.1 BER-encoding rules and use sc_asn1_read_tag() as the workhorse
-    within pgp_enumerate_blob().
-    
-    There's one peculiarity though:
-    OpenPGP cards expect 'cla' to be merged into 'tag'.
-    This is done manually after calling sc_asn1_read_tag().
-    
-    Signed-off-by: Peter Marschall <peter at adpm.de>
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5471 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 61bbb0f9042a77c3e77428522e6872f53364f8de
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon May 23 17:30:42 2011 +0000
-
-    OpenPGP: try to match flags with specification
-    
-    Signed-off-by: Peter Marschall <peter at adpm.de>
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5470 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e5bee3326092acf46b124df580b10dc3215edd34
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon May 23 17:30:36 2011 +0000
-
-    OpenPGP: add indication of 2048 RSA agorithm for OpenPGP 2.0 cards
-    
-    Signed-off-by: Peter Marschall <peter at adpm.de>
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5469 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 223f704b83d574121b3d4c6bfb6f35f89d3d2f13
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon May 23 17:29:09 2011 +0000
-
-    OpenPGP: fix top-level DOs according to spec
-    
-    Added:
-    * 00c4: new top-level DO in 2.0
-            can also be found inside constructed DOs 006E/0073 in 2.0 & 1.1
-    * 0101: new optional top-level DO starting in 1.1
-            for private use
-            max 254 bytes;
-            access: read - always; write - verify CHV2
-    * 0102: new optional top-level DO starting in 1.1
-            for private use
-            max 254 bytes;
-            access: read - always; write - verify CHV3
-    * 5f52: new top-level DO in 2.0
-            can also be found inside constructed DOs 006E in 2.0
-    * 7f21: new optional top-level DO in 2.0
-            use: card holder certificate (e.g. X.509) for the AUT key in the card
-    Removed:
-    * 0073: never a top-level DO, but part of top-level constructed DO 006E
-    Changed:
-    * 005e: not a constructed DO, but a simple/primitive DO
-    
-    Note:
-    Trying to read non-existent top-level DOs or top-level DOs that weren't defined
-    in a spec version later than the current card's version does not hurt.
-    They are returned as empty.
-    
-    Signed-off-by: Peter Marschall <peter at adpm.de>
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5468 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d139c2281bf23a112b8ea7c1a8fc640424836f3d
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun May 22 11:42:53 2011 +0000
-
-    pkcs15init: move the key type specific code to the dedicated procedure
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5467 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a7596cc72be505c29542203e38fe725d85f35455
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun May 22 11:35:42 2011 +0000
-
-    Fix compiler warning
-    
-    opensc-explorer.c: In function 'main':
-    opensc-explorer.c:1602: warning: declaration of 'argv' shadows a parameter
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5466 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit dd30eb19055f26cb4e7640edc73cf7bc58bed1c5
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun May 22 10:52:44 2011 +0000
-
-    pkcs11-tool: import GOST key; key to import in DER or PEM format
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5465 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8183732da812ae743fe69ffedc5ebd193988f9c8
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun May 22 10:21:59 2011 +0000
-
-    Fix compiler warning and potential bug
-    
-    pkcs15-piv.c:129: warning: 'fbyte' may be used uninitialized in this function
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5464 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c9fae6f6a153e9fa17c9ac036429d2ada54f5af5
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun May 22 10:19:35 2011 +0000
-
-    Fix typo in comment
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5463 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7124273dee11b4e65396b1f8236afc6b72b14c36
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun May 22 10:16:36 2011 +0000
-
-    Fix a bug and a compiler warning
-    
-    pkcs15-actalis.c: In function 'sc_pkcs15emu_actalis_init':
-    pkcs15-actalis.c:232: warning: dereferencing type-punned pointer will
-    break strict-aliasing rules
-    
-    Never cast a pointer between types of different sizes. On 64-bit Unix
-    (LP64) int is 32 bits long and long is 64 bits long.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5462 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 38e420bec3b45c8254c073089c6797e264e0e29f
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun May 22 10:10:21 2011 +0000
-
-    Fix compiler warning
-    
-    card-piv.c: In function 'piv_write_binary':
-    card-piv.c:1364: warning: signed and unsigned type in conditional expression
-    
-    count is a size_t and must be casted in an int since the fucntion
-    returns an int.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5461 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 96ff2bbe36850d30cf909fd08826c85f75469775
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun May 22 10:07:24 2011 +0000
-
-    Fix compiler warning
-    
-    sc.c: In function 'sc_remote_apdu_allocate':
-    sc.c:725: warning: unused variable 'counter'
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5460 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0dfe6331fa4d37e62d9f980ec9d17e699dfbdcef
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun May 22 10:00:12 2011 +0000
-
-    Fix compiler warning
-    
-    pkcs15-lib.c:167: warning: no previous prototype for 'sc_pkcs15init_empty_callback'
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5459 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit cb39b2dcc91943ca755661f35a954486b5d0fbde
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun May 22 07:13:09 2011 +0000
-
-    pkcs11-tool: when doing signature try at first the procedure for the short input data ...
-    
-    Not all PKCS#11 driver support the C_SignUpdate.
-    So, for the short data begin with procedure "C_SignInit & C_Sign".
-    If no success, try to applicate the procedure "C_SignInit & C_SignUpdate & ... & C_SignFinal".
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5458 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7e9f5b227069a4f0395db52ec85ecde659658b8f
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri May 20 11:24:46 2011 +0000
-
-    pkcs15: in 'compute-signature', when doing 'zero-padding', set properly the new input data length
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5457 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d2cc8f1364ca8a6db2d3aadde4497e45a13a3b1a
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu May 19 17:00:29 2011 +0000
-
-    ruToken-ECP: error in revert 'compute-signature' result procedure ...
-    
-    'comute-signature' can be called with length of output data greater then signature size
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5456 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 30eb1e989788033024a06b01b108023cfc5e8cb4
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu May 19 08:48:57 2011 +0000
-
-    ruToken-ECP: in compute-signature procedure limit Le to 256 bytes ...
-    
-    so that the APDU can pass the validity check
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5455 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5deeef69c9feeab320d3f45251abf5bd52c8f1e5
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed May 18 05:33:40 2011 +0000
-
-    MacInstaller: fix distribution style, which accidentially got changed in r5376.
-    
-    This only affects (corrects) Mac OS X binary packaging.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5453 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0dcab4abefe6b1231a33751d8bfaf680280f8b61
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue May 17 17:07:37 2011 +0000
-
-    NightlyBuilds: trunk shall be 0.12.2
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5452 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a449ab4d1b21a9e006aec01b109f7c13e576cf99
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue May 17 16:59:49 2011 +0000
-
-    Release r5449 as OpenSC 0.12.1
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5450 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b47263d463af831e1cf3bbcb2804883ab7ef9e47
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue May 17 14:04:24 2011 +0000
-
-    NEWS: add pkcs11-tool change to NEWS file
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5449 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6277099a2789a484ca462874600e2bbad6a97d26
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue May 17 13:27:13 2011 +0000
-
-    pkcs11-tool: correct typos about --login-type option, change id -> ID in help texts.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5448 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 18baf42780bb9aba2a93eba580db8a38b567deab
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue May 17 13:27:09 2011 +0000
-
-    pkcs11-tool: move --module to the first position in help text and make it mandatory.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5447 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ce79a61d30dca24c944d99cc46c462a2adcdf1de
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon May 16 08:32:07 2011 +0000
-
-    tools: print value of 'BOOLEAN' asn1 type
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5446 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 38473e1ea6c43d9928b30a07995d348592f4a2a6
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat May 14 18:00:08 2011 +0000
-
-    pkcs15-tool: for PIN object print 'Auth ID'
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5445 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a44ec385bdf340a3b040e3db6443483a332efdb7
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri May 13 16:11:06 2011 +0000
-
-    iasecc: no support for SHA256 in the OpenSSL previous to v0.9.8
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5444 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 65e10c29ad0dd1662df4e1f2e22d2af7f9437e8c
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri May 13 15:34:03 2011 +0000
-
-    libopensc: add description for the 'remote data' data types
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5443 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c3294c9f74ea02de9b9c96dbd346e600ef2d2f95
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri May 13 14:04:55 2011 +0000
-
-    suspend commit of SM support until the nearest release
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5442 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d04dd5c6490aaeacdae97981dc2314fd9ddd3b35
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri May 13 13:27:25 2011 +0000
-
-    configure: add configuration option for support of 'Secure Messaging', desabled by default
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5441 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c7ed3da50288e6ab73cf318136bd5362053c370c
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri May 13 12:57:18 2011 +0000
-
-    libopensc: authentIC: use macros; use common CPLC data type
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5440 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e6a3d92de7520c5c0130268dab566ef87d238d90
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri May 13 12:50:24 2011 +0000
-
-    libopensc: SM related errors
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5439 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4fbb37ae7e625ebe6501b7eb2122148b1675fb1a
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri May 13 12:44:31 2011 +0000
-
-    libopensc: 'remote data' related procedures: init, allocate, free
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5438 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 292d561882abaad1891887fbf844f4e4adc9f86a
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri May 13 12:19:29 2011 +0000
-
-    libopensc: move declaration of 'serial number' related data types from 'opensc.h' to 'types.h'...
-    
-    also define CPLC and 'remote_data' data types.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5437 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 07e0af59b0c5f8e3f243a5f2ef8f393467ac3c05
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed May 11 16:52:13 2011 +0000
-
-    minidriver: in CardAuthenticatePin() the PIN to verify is selected by ROLE_USER, thanks to HOURY William
-    
-    http://www.opensc-project.org/pipermail/opensc-devel/2011-May/016633.html
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5436 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit cbecf23395e19acd42076f752d4b2362e47a8616
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue May 10 08:24:27 2011 +0000
-
-    iasecc: when getting data for qualified signature, take the last SHAxx block from the input data ...
-    
-    ... and not from the SHAxx-CTX, to avoid big/little endian uncertainty
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5435 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 16abe7f3a7fff44f453bf09d3b4c209de8878762
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon May 9 17:11:13 2011 +0000
-
-    pkcs11: Ticket #353: in pkcs15init framework allocate only one slot with uninitialized token ...
-    
-    aldo, when allocating existing slot to the card, return an error if there is no more free virtual slot.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5434 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1e025a0ded44e3da3d5e6651f021b98e26250a28
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon May 9 15:31:02 2011 +0000
-
-    iasecc: support the digital signature with RSA scheme PKCS#1 SHA-256 ...
-    
-    in this mode the final digest (SHA-256) step has to be performed by card.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5433 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1f892af9eba435c3a87603b53b58740504d3510c
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun May 8 15:53:39 2011 +0000
-
-    pkcs15init: non-unique ID is forbidden for the public key objects
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5432 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 81dd8b77757b3a0ec965c3c0ad0f49a65b9af42b
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun May 8 08:10:16 2011 +0000
-
-    libopensc: export 'sc_do_log_noframe' instead of internal 'sc_do_log_va'
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5431 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1176c59370bdc6cec92d0e6d1b0ebd3fb46c6de0
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun May 8 08:07:03 2011 +0000
-
-    libopensc: export the wrapper for the internal log function dedicated to minidriver
-    
-    http://www.opensc-project.org/pipermail/opensc-commits/2011-May/011049.html
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5430 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8e75d971cb7eadfef9b5b50adb3cb6d18e641ed2
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun May 8 07:59:16 2011 +0000
-
-    asn1: when encoding the OID, make sure that unused part of input data is properly initialized
-    
-    it's a supplement to r5355.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5429 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 34302525fc50054a252773aa5d9e6149cc5fc28b
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu May 5 14:26:27 2011 +0000
-
-    MiniDriver: add two exports used by MiniDriver. PKCS#1 related functions could be exported, internal logging should be eventually fixed in MiniDriver instead.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5428 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e4711a485e810c6d6a404be7575e1cac5a5a34a3
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu May 5 14:03:36 2011 +0000
-
-    WindowsInstaller: don't link against winscard.lib, winscard.dll is loaded on runtime. Link minidriver against correct opensc.lib
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5427 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 79db5647324267d55105d3e30c61188b8bae18b7
-Author: andre <andre at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed May 4 17:17:28 2011 +0000
-
-    piv-tool.c: Leftover from r5412.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5426 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 85b40a553c8c24c194a1e68a7d955d85e804ed45
-Author: andre <andre at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed May 4 16:45:51 2011 +0000
-
-    pkcs11-tool.c:54: warning: missing initializer
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5425 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 03b4891c1e379cb0a62d1d970a982470e88345d9
-Author: andre <andre at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed May 4 16:45:01 2011 +0000
-
-    pkcs15-pubkey.c:975: warning: missing initializer
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5424 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1b7a320f459ffd49187bd7e2cce3a101468ff48e
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed May 4 16:28:34 2011 +0000
-
-    doc: pkcs11-tool: precise the usage of 'write-object' argument
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5423 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit fc07974be8351ca9a9b9081f09179f34d232da59
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed May 4 11:41:13 2011 +0000
-
-    iasecc: pkcs15init: test for the wrong error code was used ...
-    
-    in 'Delete SDO' procedure to ignore the 'SDO don not exist' error.
-    Thanks to Gilles Blanc.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5422 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit dc55351767ec68d92c09ee3278a865a5b8adbee2
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed May 4 07:17:28 2011 +0000
-
-    pkcs11: hide empty slots ...
-    
-    The list of slots returned by C_GetSlotList() contains:
-     - if present, virtual hotplug slot;
-     - any slot with token;
-     - without token(s), one empty slot per reader;
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5421 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 822fdc7f38003638240a122fb32c38265d77b4df
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue May 3 07:55:38 2011 +0000
-
-    pkcs15init: pkcs15init emulator for PIV card will not be commited
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5420 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0783ffd4c73f7fd634c48babed1dc2d21ccc7d1c
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue May 3 07:54:13 2011 +0000
-
-    iasecc: pkcs15init: when deleting SDO, do not try to overwrite 'non-updateable' SDO attribut
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5419 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2aa46735778452de94c3ad59918055fff9a11bc9
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue May 3 07:50:26 2011 +0000
-
-    iasecc: obsolete syntax of the 'Adele Common' card profile
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5418 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1f2acc5bcb9b0360bb2c243066f15f9347ff3b5b
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue May 3 05:39:24 2011 +0000
-
-    opensc-explorer: use relative addressing in do_asn1
-    
-    'asn1' takes a file_id as argument. This should be selected relative
-    to the currently selected DF instead of being treated as an ID.
-    (compare with 'get' & 'cat' that also take a file_id argument)
-    
-    Patch from Peter Marschall <peter at adpm.de>
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5417 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 59e3e659b5429b2c7b5c434b1be167b2d07d2929
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue May 3 05:38:59 2011 +0000
-
-    opensc-explorer: more room for commands in 'help'
-    
-    In the output of the interacive command 'help', leave more room
-    for the command names so that they do not flow into the descrition.
-    
-    Patch from Peter Marschall <peter at adpm.de>
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5416 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ab225db83d5f4654fda676485e75b8b1383e43e5
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun May 1 20:21:31 2011 +0000
-
-    pkcs15init: more of debug messages
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5415 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1e59a09dbd9f945e351ec4dd300a28be22f76e07
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun May 1 20:14:06 2011 +0000
-
-    pkcs15init: for the EC key put the EC specific data into the 'params' member of 'key-info' data ...
-    
-    ; more of debug messages;
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5414 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5e50a14b3f9b16a6461f53530506d843c3f2e43c
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun May 1 19:18:14 2011 +0000
-
-    libopensc: introduce 'key-params' data type that contains pointer, size and 'free' handler ...
-    
-    http://www.opensc-project.org/pipermail/opensc-devel/2011-April/016441.html
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5413 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 08c9328e6214a439646332b3532bbb1d61983376
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun May 1 18:44:53 2011 +0000
-
-    piv-tool: remove the Oberthur's specific features of the PIV card
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5412 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c70e0ae982e322ba5e3a836c7580444b932068e3
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Apr 30 17:51:43 2011 +0000
-
-    iasecc: use atr mask to accept the Gemalto's IAS/ECC card without MF
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5411 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3637d6024235498f475277e33f9d91f3aca699d0
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 29 12:15:54 2011 +0000
-
-    manpages: unify the look and feel of "See also" sections, removing references to missing manual pages.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5410 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 23bbe9e2038b1485ddb6942db6d2221408ca9283
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 29 09:47:06 2011 +0000
-
-    PreReleases: update NEWS file for 0.12.1-rc1
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5409 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e477d66d0751c74d22cb1d63dd44daa358c7725f
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 29 09:02:09 2011 +0000
-
-    NightlyBuilds: prepare for OpenSC 0.12.1-rc1 PreReleases
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5408 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e93dd598c2c898bcad88012a467bf3e0d5601e5b
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 27 15:01:38 2011 +0000
-
-    doc: describe the 'verify-pin' option in pkcs15-tool documentation ...
-    
-    Thanks to Juan Antonio.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5407 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 49fb08f92356c32ce234faf1e7c11d00883491ed
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 27 14:45:23 2011 +0000
-
-    pkcs15init: use macro for the maximal number of linked ACL for one operation ...
-    
-    Thanks to NdK.
-    http://www.opensc-project.org/pipermail/opensc-devel/2011-April/016448.html
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5406 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8098e82b16fba299801bf941cb62617ac5e4249c
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 27 14:37:57 2011 +0000
-
-    libopensc: in 'READ BINARY' ignore the 'FILE_END_REACHED' error ...
-    
-    see discussion
-    http://www.opensc-project.org/pipermail/opensc-devel/2011-April/016413.html
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5405 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5471aea023f07ec47575064e885135b2a94ad62e
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 27 14:28:03 2011 +0000
-
-    libopensc: new error code macros -- 'corrupted data' and 'file end reached'
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5404 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 670942a0b4a7034089a55187702db5c70eba1ede
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 27 14:12:40 2011 +0000
-
-    iasecc: when preparing data to update PRIVATE KEY SDO use index to enumerate the SDO components
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5403 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ad478eb9ccb42d75b83d68b5b751947712e3ac71
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 27 14:06:58 2011 +0000
-
-    iasecc: write 'compulsorily use' data for the new key slot ...
-    
-    Once written the 'compulsorily use' data cannot be changed.
-    Write this data immediately after a new key slot has been created.
-    It helps to avoid further confusion between 'use new key slot' and 'reuse existing slot'.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5402 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6c3b43f636334f10358e15ee52b4faba8347a6cd
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 27 13:56:31 2011 +0000
-
-    iasecc: when signing short data sequence with PSO_DST ...
-    
-    ... 'last-hash-step' APDU do not includes the 'pre-hash' and 'counter' data -- only the 'last-data-block'.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5401 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 06347f3a44453f5a16c46338bcbaf8b38a3ce4f4
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 27 13:45:27 2011 +0000
-
-    iasecc pkcs15init: when creating key slot, there is no needs to write zero value components
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5400 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 81e16761224c59486f599a1d4c524dca49a17616
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 26 17:32:34 2011 +0000
-
-    iasecc pkcs15init: create/delete SDO private/public RSA key
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5399 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c9bf9bc22c7dabe34168d894b12bf140121f0fea
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 26 17:29:08 2011 +0000
-
-    iasecc: 'DELETE SDO' card ctl ...
-    
-    to be used by Obertbur's IAS/ECC card.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5398 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 346490b9534ecd4204838ffbe357907121eff0d5
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 26 16:42:48 2011 +0000
-
-    iasecc: 'CREATE SDO' card ctl ...
-    
-    ; static function dedicated to emulate FCP data of application DF when it's not returned by card
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5397 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3b9f5b94ae449764333ba884c075bbe6885112ca
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 26 16:34:44 2011 +0000
-
-    iasecc: encode data for the SDO creation, ...
-    
-    ; dedicated function to parse ACLs from DOCP data;
-    ; when converting ACL chack and parse ACLs;
-    ; change prototype of the internal static functions.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5396 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5e6d310491fce4d35422dbb6d15ecaab32921cb8
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 26 16:27:42 2011 +0000
-
-    iasecc: pkcs15init profiles: add 'CREATE' acl for the Oberthur's application DF ...
-    
-    Obertbur's card do not returns FCP for selected application DF.
-    Newly introduced option will supply the missing ACL when creating new objects or files.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5395 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1cdb3fa9716bf287387020f06892a5f45cde98fc
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 26 07:29:53 2011 +0000
-
-    APDU parsing: switch to Frank Morgner's implementation
-    
-    Patch by Frank Morgner, proposed in
-    http://www.opensc-project.org/pipermail/opensc-devel/2011-April/016419.html and
-    http://www.opensc-project.org/pipermail/opensc-devel/2011-April/016420.html:
-    
-    * replace partly incorrect extended APU parsing implementation
-      with one factored-out in function sc_bytes2apdu() in apdu.c
-    * re-factor APDU parsing functions in
-      - opensc-explorer
-      - opensc-tool
-      - piv-tool
-      to make use of sc_bytes2apdu()
-    
-    Thanks to Peter Marschall and Frank Morgner
-    This fixes #260 and #351.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5394 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7d5ba618e0d7d1c1897154e80d5301ac6e1faf65
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Apr 25 09:45:25 2011 +0000
-
-    maintainer-clean cleanup, thanks to JONSITO
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5393 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 27cd40629e82e337523ce66960dd5997bf0591c7
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Apr 24 17:57:49 2011 +0000
-
-    iasecc: Oberthur's card strictly follows specification in 'IO buffer size' ...
-    
-    Most of the card producers interpret 'send' values in 'IO buffer size' data as "maximum APDU data size" .
-    The last Oberthur's card strictly follows specification and interpret these values as "maximum APDU command size".
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5392 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a14bbe7e32e7e8002f9204fcedece2f0d576cd78
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Apr 23 06:32:53 2011 +0000
-
-    opensc-explorer: DF_NAME type path value should not be appended by the file ID ...
-    
-    When composing path to file (for ex. to be read), if the type of parent DF is DF_NAME,
-    the value of the parent path is moved to the aid path member and
-    file ID takes place of the path value.
-    
-    ; 'cd ..' command takes into account the parent can be presented by DF_NAME
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5391 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 54f3e8c423498d8b8ddddf482bea89019199640b
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 22 14:02:45 2011 +0000
-
-    pkcs15init: little correction of r5386
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5390 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6b04ab76505e33292a9a0e7b247a8c671cae2708
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 22 14:00:47 2011 +0000
-
-    pkcs15init: in 'change-attribute' procedure use card specific 'update DF' handler ...
-    
-    ... when it's available.
-    'Change-attribute' is used by pkcs15 framework for PKCS#11.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5389 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4fa96794635c67d1967cb65ef8a9fc2607416984
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 22 13:50:01 2011 +0000
-
-    pkcs15init: use dedicated function to fix the EC parameters ...
-    
-    ; use pointQ data to calculate intrinsic ID for the EC keys/certs
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5388 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9376b73d14b6e31ff0d5952b9fa24edd37866125
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 22 13:35:57 2011 +0000
-
-    EC support: new exported function to fill up the EC parameters data ...
-    
-    for ex. with the given named curve fills the 'OID' and 'encoded OID' members
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5387 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 78d90c47655a98c185ced2616989a0f5e88bcb05
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 22 13:08:45 2011 +0000
-
-    EC support: introduce data type dedicated to EC parameters ...
-    
-    EC parameters can be presented in a three forms: namedCurve, OID and implicit data.
-    This new data type will facilitate manipulation of ec-parameters in the OpenSC tools and library.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5386 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3e9b88d6d6e8a8e0bd3b027e89173cc3b856e702
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Apr 21 17:20:39 2011 +0000
-
-    pkcs15init iasecc: old syntax in the profile of the Oberthur's generic application
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5385 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7db9532f00dade73a771f9c28bdaab8126dc1448
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Apr 21 16:29:13 2011 +0000
-
-    pkcs11 framework-pkcs15: add EC key generation mechanism
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5384 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e430fe9d870ee987f3c68568b0c1edefae564123
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Apr 21 16:18:23 2011 +0000
-
-    pkcs11-tool: add test procedure for EC keys ...
-    
-    ... for a while it includes key generation and data signing.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5383 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9758bb28bfc49fcddd6753b1fea063c9c89ba28b
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Apr 21 16:14:36 2011 +0000
-
-    pkcs11: copy&past issue in r5356
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5382 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c2a87ae2b10e2fd83b592a328d93307c60a0f623
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Apr 21 14:29:51 2011 +0000
-
-    pkcs11-tool: prepare 'gen_keypair' procedure to generate also the EC keys ...
-    
-    ... 'prime256v1' and 'secp384r1'
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5381 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 38103c64cf4bc3e19bbfc2933f87ae6f77289fb3
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Apr 21 14:12:03 2011 +0000
-
-    pkcs15: new function to encode an OID in DER format
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5380 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 669a10572a609373683dbf567886ee13eacdf104
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Apr 21 13:46:28 2011 +0000
-
-    asn1: now sc_der_copy() returns int value
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5379 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit df7d560c3539a46c184bbaf567add1b132fda213
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 20 14:53:07 2011 +0000
-
-    WindowsInstaller: Use OpenSC version information in Windows file version resource.
-     * Fix license information in file info (GPL->LGPL)
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5378 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9b4f1369c4720c4dba71192e07de564fccb3f410
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 20 13:41:04 2011 +0000
-
-    MacInstaller: fix 10.5 build script, broken with previous change.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5377 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a7934b307e453f72ed76e258a282e603fec9fc96
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 20 12:14:44 2011 +0000
-
-    MacInstaller: use autoconf to write the correct version to ReadMe files of installers.
-     * Better version tagging of generated files
-     * Bundle files necessary for OS X installer generation to the distribution targzip
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5376 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 094eb8697cc82c539ae328759925309a210ba835
-Author: andre <andre at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 19 13:45:30 2011 +0000
-
-    opensc-tool.c: Fixes literal names in 'const id2str_t alg_type_names[]'.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5375 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9026ea6f3fd9759d5a1565cb4c7b0d35f201d227
-Author: andre <andre at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 19 13:03:49 2011 +0000
-
-    pkcs11-tool.c: Avoid warning:
-    
-    pkcs11-tool.c:1978: warning: ‘getPUBLIC_EXPONENT’ defined but not used
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5374 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ff7bb8fbf440a5bbb542a6decc0ac9b6413f832a
-Author: andre <andre at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 19 12:59:23 2011 +0000
-
-    profile.c: Avoid warning:
-    
-    profile.c:1212: warning: comparison between signed and unsigned
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5373 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit fa8fd1602d02543ad02faf1f66e7e83e25948108
-Author: andre <andre at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 19 12:34:16 2011 +0000
-
-    types.h: Avoid warning:
-    
-    opensc-tool.c:356: warning: comparison between signed and unsigned
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5372 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f8665b44059e43a61a637bd02cd023fc06e5f913
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 19 11:19:47 2011 +0000
-
-    manpages: add a rudimentary manual page for eidenv command. Fixes #339
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5371 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8f0ba374f3651b0b0cca074c403fab016bdae8d2
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 19 10:51:27 2011 +0000
-
-    Add reminders to bytes2apdu style code blocks.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5370 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1932ce861f8c494681c6590abf2b806e683eccde
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 19 10:51:22 2011 +0000
-
-    opensc-{explorer,tool}: allow sending extended APDUs
-    
-    In do_apdu() resp send_apdu/(, flexibilize parsing the APDU string passed
-    so that extended APDUs are accepted a valid APDUs too.
-    
-    While at it, fix a bug where more data than available would have been copied,
-    potentially leading to a SIGSEGV.
-    
-    Signed-off-by: Peter Marschall <peter at adpm.de>
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5369 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9dc233163a7cbe29553e77dc0a871b5daedcab10
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 19 10:51:16 2011 +0000
-
-    opensc-tool: convert print_file() to using tables
-    
-    Use ID<->name tables in print_file() innstead of arrays of strings where
-    the index was treated like some "magic" constant. With the new mapping tables,
-    the meaning is obvious.
-    
-    While on it, fix a bug with ac_ops_df[]: before the conversion, it was a list
-    of pointers to strings but was in one case treated like it was a mapping table.
-    With the conversion to a mapping table, and the adaption of other code parts
-    this bug got fixed "automagically" ;-)
-    
-    Signed-off-by: Peter Marschall <peter at adpm.de>
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5368 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit be5456d3ca23a68c36bbb3fb329208480d0133ab
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 19 10:51:11 2011 +0000
-
-    opensc-tool: make list_algorithms() table driven
-    
-    Use easily extensible tables instead of explicit coding to display
-    algorithm names and options in list_algorithms.
-    
-    Leverage the new tables to add more RSA hashes.
-    
-    Signed-off-by: Peter Marschall <peter at adpm.de>
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5367 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e5a133d00cf9fb1cbc62017672c349d25311fdc4
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 19 10:51:06 2011 +0000
-
-    Fix a crash on Windows, where pkcs15-tool -E would always crash in sc_pkcs15_free_card()
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5366 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4f768fcdc5ad243e02441512e0609c010c1622eb
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 19 10:51:01 2011 +0000
-
-    WindowsInstaller: Fix warning CNDL1069 about deprecated attribute
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5365 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 404d84ae48dd7b3e2f231866956f02e9af62cc09
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 19 10:50:52 2011 +0000
-
-    WindowsInstaller: Fix Wix warning:
-    
-    Z:\opensc\win32\OpenSC.wxs(22) : warning CNDL1121 : Package/@InstallerVersion must be 200 or greater for a 64-bit package.
-    The value will be changed to 200. Please specify a value of 200 or greater in order to eliminate this warning.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5364 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6409755beaee348245fed5bd599fadcf0f7e060f
-Author: andre <andre at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 19 09:18:12 2011 +0000
-
-    pkcs11-tool.c: Avoid warning:
-    
-    pkcs11-tool.c:2000: warning: comparison between signed and unsigned
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5363 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 261d5269e5b54faf3d5c391bee686674cb0389f2
-Author: andre <andre at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 19 09:12:17 2011 +0000
-
-    pkcs15-init.h: Avoid warning:
-    
-    pkcs15-init.c:1473: warning: assignment discards qualifiers from pointer target type
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5362 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 90ffef6dc9161364aa7ab49f6514ed72532b52eb
-Author: andre <andre at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Apr 18 12:29:47 2011 +0000
-
-    asn1.c: Check boundaries __before__ accessing memory.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5361 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c0c0882a1e4aad2928a7afaac3851d00e787d453
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Apr 18 10:01:32 2011 +0000
-
-    WindowsInstaller: split the UpgradeCode for x86 and x64, so that both versions could be installed in parallel on x64
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5360 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 007d27feebe4a09ce9e02c501cefc8d83daa6e79
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Apr 18 10:01:27 2011 +0000
-
-    Introduce sc_ctx_log_to_file to set the debug file of libopensc.
-    
-    On Windows every DLL has their own file descriptor table, thus specifying
-    -v from any of the OpenSC tools resulted in a crash when the tool tried to override
-    ctx->debug_file with stderr.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5359 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1c244f86448db0cf9093ddb3d4e76d2aed700c55
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Apr 18 09:29:15 2011 +0000
-
-    WindowsInstaller: fix "parallel installs"
-    
-    Before this change, installing a new MSI would create a new OpenSC entry in "Add/Remove programs".
-    Now correctly a single instance exists and a seamless upgrade can be done.
-    
-    Make the URL-s for support information more specific and add the OpenSC icon to the programs list.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5358 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8de6b57882b55de3290599a2b839b57fe8b048f4
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Apr 17 18:48:12 2011 +0000
-
-    pkcs15init: different possible kinds of EC generate key parameters ...
-    
-    named curve, oid and der
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5357 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ef1726e7820ef871e8943f5010a5bcabea873a23
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Apr 17 18:45:27 2011 +0000
-
-    pkcs11: process the EC key generation type
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5356 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit caf3789439c7dfb91bcba7f8c30d13906750a434
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Apr 17 18:39:01 2011 +0000
-
-    asn1: in encode-object-id procedure do not stop on zero -- it's a valid value
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5355 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4072b2bc0d01ac64e93446812917e41e78fdac09
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Apr 17 16:58:09 2011 +0000
-
-    WindowsInstaller: fix x86 build after r5351
-    
-    error CNDL0150 : Undefined preprocessor variable '$(var.PlatformProgramFilesFolder)'.
-    NMAKE : fatal error U1077: '"C:\Program Files\Windows Installer XML v3.6\bin\candle.exe"' : return code '0x96'
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5354 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b0c200c8852a5e7635875ccf0229f5a854b9eefd
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Apr 17 16:12:03 2011 +0000
-
-    WindowsInstaller: Always use a canonical name for OpenSC related registry entries.
-    
-    This fixes the 64bit build looking for registry keys under "OpenSC (64 bit)" which is the name of the package.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5353 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 15d6ecddc6afaf760f3073f565ae773ff5a69497
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Apr 17 13:18:11 2011 +0000
-
-    WindowsInstaller: One more fix for x64 installer: opensc.conf
-    
-    c:\jenkins\workspace\OpenSC_win64_nightly\win32\OpenSC.wxs(61) : error LGHT0204 : ICE80: This 32BitComponent opensc.conf uses 64BitDirectory INSTALLDIR
-    NMAKE : fatal error U1077: '"C:\Program Files (x86)\Windows Installer XML v3.6\bin\light.exe"' : return code '0xcc'
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5352 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5ccfeddf46daf5e0fbf8a46bbd1d9f1e36600556
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Apr 17 13:05:47 2011 +0000
-
-    WindowsInstaller: Add win64 flag even to platform-independent files.
-     * Install to "System64Folder" on x64
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5351 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 82258b01f7ac1b151c3cd865a2736471eb555818
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Apr 17 12:50:30 2011 +0000
-
-    WindowsInstaller: fix typo, causing the x86 installer to claim to be x64
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5350 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2202614fdcdca5804ec9008ecd1ad2e576c407ee
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Apr 16 17:57:49 2011 +0000
-
-    pkcs15init setcos: no need of card specific 'delete-object' callback ...
-    
-    there is nothing specific inside and it's never called by pkcs15init
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5349 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 28ccae791888d4b9b64839a39ece59922e201b40
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Apr 16 17:35:56 2011 +0000
-
-    card-piv: store serial number into the 'serialnr' member of sc_card structure ...
-    
-    ... when serial number was asked for the first time.
-    Then return the stored value for the every next request of serial number.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5348 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e2aac209d249f5e0b31dac36ee322131380cad0f
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Apr 16 14:25:21 2011 +0000
-
-    WindowsInstaller: amend r5345, Win64 is a property of a Component, not File
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5347 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3e20fab5657cb02372a27d4272ce3f037400971d
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Apr 16 14:14:56 2011 +0000
-
-    Add back removed product name
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5346 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit af098605d7cd9b17d2f9248c87aba30ea8a51f3b
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Apr 16 14:10:07 2011 +0000
-
-    WindowsInstaller: set Win64 flag for binaries when building for win64 and use the right program files folder.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5345 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d673e5f109abf5e4234cad82968e7c58456fd6ee
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 15 17:11:38 2011 +0000
-
-    pkcs15init myEID: in profile increase size of xDF files, also ...
-    
-    during initialization add the all xxDF to the ODF
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5344 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 614e9fa566d050cbaac5abe147062d271cbd5532
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 15 16:50:04 2011 +0000
-
-    pkcs15init: sipmlify the 'delete-object' callaback prototype ...
-    
-    now it takes 'sc_pkcs15_object' argument instead of two arguments - object's type and object's data.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5343 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3aae1d39c2e1c7705ca19bc7463937462263a9a5
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 15 16:35:29 2011 +0000
-
-    framework-pkcs15: minor coding style issues
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5342 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit fb97d8b4b40afacc8eaa3928d157dccdd4e96173
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 15 16:34:22 2011 +0000
-
-    pkcs15-tool: print title and size of the EC public keys
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5341 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 99fac2685afd02e79a4c2054a78ed7e313d05afb
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 15 16:33:18 2011 +0000
-
-    piv-tool: increase receive buffer for the 'send-apdu' command
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5340 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 461721cf6d6ac844a556cbf55b642b47e49cb592
-Author: dengert <dengert at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Apr 14 16:51:25 2011 +0000
-
-    PIV piv_get_uid to derive a better guid from the
-    FASCN or the GUID so that most of the uniquness
-    is maintained.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5339 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9ca350f409e8c6e25325ac9b4a98242169704f74
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 12 21:58:04 2011 +0000
-
-    Use check target for tests
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5338 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 49da421ac0340f74ea5be6cd6dac89b4e4d9415e
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 12 18:08:18 2011 +0000
-
-    pkcs15init: prepare pkcs15-lib for the EC key type ...
-    
-    use keygen consistency procedure to return the EC key size;
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5337 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7b6cf4219e5cc46e1edc83053dd2dab8d68c47e8
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 12 17:59:59 2011 +0000
-
-    pkcs15init: when deleting object, do not try to select object file without valid path
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5336 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 622570a28e91d207b0f401575d0d88b584fb007d
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 12 17:55:20 2011 +0000
-
-    pkcs15-init tool: in keygen parameters use 'curve' name without leading separators
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5335 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d611dcc9ed3c5f2ee17f0da5d7e5e14ea5116159
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 12 17:51:08 2011 +0000
-
-    piv-tool: add containers discovery
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5334 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6705e2506b431ccc25bbadb75aae8e17fcbd2bcf
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 12 13:23:05 2011 +0000
-
-    pkcs15init: remove useless function, use OpenSC standard convention for return value
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5333 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2fecaa73bd12d1e7e3724c9f3c85fbc1daa81399
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 12 11:36:40 2011 +0000
-
-    pkcs15init: introduce EC key generation parameters
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5332 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit cdf88a895b98f108590370a1933f4839298a187b
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 12 07:49:07 2011 +0000
-
-    WindowsInstaller: amend r5329, object name is not the target name.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5331 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7c17247446e4a6481f4740403056d1dd3b421c4b
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 12 07:48:53 2011 +0000
-
-    WindowsInstaller: enable zlib by default.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5330 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 44cf3d06aea96d8867e0b6ee26c9ab2616174fa5
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 12 07:40:12 2011 +0000
-
-    MiniDriver: rename cardmod to minidriver in source.
-    Also change some grammar, whitespace (reported by git) and wording (Opensc->OpenSC) issues.
-    Add some comments here and there.
-    
-    See http://www.opensc-project.org/pipermail/opensc-devel/2011-April/016261.html
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5329 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 577ccdbf26af120dcf0badc836c2e645817c7781
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Apr 11 14:42:55 2011 +0000
-
-    Fix #337 rutoken-tool is obsolete and can be removed, thus no manpage is needed.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5328 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 639ca655b62d9e721c635fa9794cb4490ff48526
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Apr 11 14:42:48 2011 +0000
-
-    WindowsInstaller: Correct support for x64 builds
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5327 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 771aeb32af3b02aec1c54c26c2ea5171773b3ca8
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Apr 11 13:07:34 2011 +0000
-
-    pkcs15-tool: print EC key label
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5326 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e8f6a3e407c289448c6e9823d3e353c352a5f293
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Apr 11 13:00:57 2011 +0000
-
-    pkcs11-tool: now it's possible to show only the objects of a given type ...
-    
-    when 'type' option is used with the 'list-objects' actions
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5325 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b85e1a798fe481903c4e8c8fd2134d8aa0d02e38
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Apr 11 12:02:47 2011 +0000
-
-    piv-tool: new action to print the key slots properties
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5324 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit eb7bc552b145020fc2656f0630c74dcef43a7802
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Apr 11 11:55:00 2011 +0000
-
-    piv: no 'usepin' authentication mode in PIV tools
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5323 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 54fb4228311f1d12863b7288c52de7a3babd9c90
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Apr 11 11:30:45 2011 +0000
-
-    pkcs15: include EC private/public key types into the pkcs#15 object search procedures
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5322 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 383d6e83625b6639f6848f5642a4754d03ee322b
-Author: andre <andre at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Apr 11 10:34:55 2011 +0000
-
-    ctx.c: Replaces magic integer -1 with defined constant value.
-    
-    See [http://www.opensc-project.org/opensc/browser/trunk/src/libopensc/cards.h?rev=5320#L32 cards.h]
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5321 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f1dec64630ac0b638787659650f74bcb9b81fd1f
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Apr 10 20:08:09 2011 +0000
-
-    piv-tool: in 'send-apdu' command increase size of response buffer ...
-    
-    'GET DATA' apdu can return the code 'data still available'
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5320 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 848180ab5026d83b0748ce009747a7c0043e8c9a
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Apr 10 09:20:15 2011 +0000
-
-    libopensc: use short debug macros in card.c
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5319 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b614444aae50fe00caa818495ddc540d342b98fa
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Apr 10 09:18:25 2011 +0000
-
-    libopensc: use short debug macros in pkcs15.c
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5318 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5102e4d88293f292bd581e2eb9d875a71f3e8af8
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Apr 10 08:47:35 2011 +0000
-
-    card-piv: 'emulate' MF selection by selection of the PIV applet ...
-    
-    so that, PIV card can be used with the 'opensc-explorer' interactive tool
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5317 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3169f14b32dc7b332ca85f9bf34b20dc670a8380
-Author: andre <andre at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Apr 10 04:09:33 2011 +0000
-
-    libopensc: Removes useless attribute 'file' in 'struct sc_pkcs15_df'
-    
-    There is no need to carry around that attribute, because it's easy to look up the 'file' as needed. This is done by issuing a single sc_select_file command in sc_pkcs15init_update_any_df (pkcs15-lib.c).
-    
-    The parameter 'file' of sc_pkcs15_add_df (pkcs15.c) became useless too and was removed in turn.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5316 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 86af8eed3d2425a6d6c3735cd334a8392fb8583e
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Apr 9 19:26:34 2011 +0000
-
-    card-pin: make working 'external authenticate' ...
-    
-    'key-ref' and 'algo' arguments of the piv_general_external_authenticate() function
-    were not used
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5315 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 004c08b6a0b0412d728bda393ed70830b6029b7f
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 8 15:16:47 2011 +0000
-
-    card-piv: invalid arguments for SC_TEST_RET macro
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5314 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit be2c17c7e94e1f6d3b9e89b06944658295b97fb0
-Author: andre <andre at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 8 13:50:02 2011 +0000
-
-    pkcs11: Fixes leftover from r4646.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5313 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 69c846f90487e5b62fa81712f514beb46fb3a0b6
-Author: andre <andre at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 8 13:30:32 2011 +0000
-
-    libopensc: Re-defines SC_CARD_FLAG_ONBOARD_KEY_GEN to be local to the file card-flex.c, because that flag is used nowhere else. In principle, this patch only reverts some changes made by r2192.
-    
-    Relates to #296.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5312 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit cfffb7f5dd4ffa1dd96adcadb87c27a9685845c9
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 8 12:28:59 2011 +0000
-
-    piv-tool: 'admin' and 'genkey' options need an argument ...
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5311 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a5d1058157ac02236d2e8116e16d48908cb9a17c
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 8 10:03:42 2011 +0000
-
-    pkcs15-tool: print GUID for private key
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5310 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b8b4c74d07f38d1b974e21e76a28141827ceca5b
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 8 09:57:38 2011 +0000
-
-    pkcs15-tool: print key reference in a decimal and hexadecimal formats
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5309 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b21eeb46b9f7f6b3897fffb998adc0c69b1b2762
-Author: andre <andre at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Apr 7 18:16:40 2011 +0000
-
-    libopensc: Removes unused flag SC_CARD_CAP_RSA_2048.
-    
-    Relates to [http://www.opensc-project.org/opensc/ticket/296#comment:1 #296].
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5308 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4ec415f605c037fe677433de41f95f5964c4dcb4
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Apr 7 17:14:56 2011 +0000
-
-    msi: no need backslash after [INSTALLDIR]
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5307 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6c1862eea6a9ada7cf35c2b2bb7a107957ea9e75
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Apr 7 16:58:01 2011 +0000
-
-    minidriver: use common routines to get serialized GUID
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5306 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 74208f1814f140410369bf9dc526161f6dd462ff
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Apr 7 16:55:07 2011 +0000
-
-    minidriver: resolve 'unreferenced variable' and 'comparaison signed with unsigned' warnings
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5305 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit be46a660e7e832422d6d6dff5de642b21bd9d2e2
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Apr 7 16:46:38 2011 +0000
-
-    libopensc: export names of the 'get GUID' routines
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5304 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 17fea1f65fcc2ac09df23d0e6f35c43920212d87
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Apr 7 16:43:54 2011 +0000
-
-    pkcs15-tool: include GUID to the printed certificate info
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5303 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f8ba3ea76d976056a21e672f7f334ca555c7bb52
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Apr 7 16:42:23 2011 +0000
-
-    libopensc: general routines to get serialized GUID
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5302 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 89b975022ca1512eda66c44a5e0c66926cc9b5d2
-Author: andre <andre at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Apr 7 16:18:56 2011 +0000
-
-    opensc.h: Removes unused flag SC_CARD_CAP_EMV.
-    
-    Relates to [http://www.opensc-project.org/opensc/ticket/296#comment:1 #296].
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5301 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 213fa68ea002c6b85038c2dcccb26bb19c9c56b6
-Author: andre <andre at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Apr 7 15:38:22 2011 +0000
-
-    card-setcos.c: Fixes misuse of SC_CARD_FLAG_ONBOARD_KEY_GEN. From [http://www.opensc-project.org/opensc/browser/trunk/src/libopensc/opensc.h?rev=5299#L411 opensc.h]:
-    
-    #define SC_CARD_FLAG_ONBOARD_KEY_GEN    0x00000001
-    #define SC_CARD_CAP_APDU_EXT            0x00000001
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5300 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ac3a48d7caa812b960efa2788d589d63657485ce
-Author: andre <andre at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 6 22:46:46 2011 +0000
-
-    pkcs15.h: Fixes type inconsistency, because in [http://www.opensc-project.org/opensc/browser/trunk/src/libopensc/opensc.h?rev=5190#L148 opensc.h] algo_ref is defined as unsigned int.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5299 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 93deff01616759b38bc0a7f94ceb92f93d528c99
-Author: andre <andre at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 6 15:11:18 2011 +0000
-
-    dir.c: Avoid warnings:
-    
-    dir.c:212: warning: comparison between signed and unsigned
-    dir.c:220: warning: comparison between signed and unsigned
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5298 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d3215b67df90f2ffe5aaf61f8f3911b067e85748
-Author: andre <andre at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 6 15:06:02 2011 +0000
-
-    asn1.c: Avoid warnings:
-    
-    asn1.c:747: warning: comparison between signed and unsigned
-    asn1.c:785: warning: comparison between signed and unsigned
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5297 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0961818a8f379f782d86aa10e614fd5365517c9e
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 6 08:22:15 2011 +0000
-
-    WindowsInstaller: remove variable, added too early.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5296 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 25c2d497b2dcc11a45375d06d3413333c2897f4e
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 6 08:10:25 2011 +0000
-
-    WindowsInstaller: reduce the warning level, parsing error output on level 4 takes Jenkins warnings plugin 25 minutes.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5295 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit dbaad0ab941194b7e97ae28d0557bce91008eaab
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 6 08:07:57 2011 +0000
-
-    WindowsInstaller: Simplify the wix script even further. Thanks to Kalev Lember.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5294 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit db3ebb1514dbafcf03a7a8c622bd0d67c3d046b8
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Apr 4 10:35:28 2011 +0000
-
-    WindowsInstaller: set the product version programmatically for MSI
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5293 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1f5534323e3f877d88d6b4296ae5d41becf4e30c
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Apr 4 08:29:30 2011 +0000
-
-    WindowsInstaller: display the LGPL license in the installer.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5292 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5162ec06346b3bde85a46716e85d6cef696142aa
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Apr 4 08:04:16 2011 +0000
-
-    WindowsInstaller: re-work WiX installer file for OpenSC. Add meaningful components.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5291 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2c5583513b264bbaf22510295aea79d60dc2e06d
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Apr 4 08:04:10 2011 +0000
-
-    WindowsInstaller: Using /Wall was a bad idea, use /W4 instead.
-    
-    http://stackoverflow.com/questions/4001736/what-with-the-thousands-of-warnings-in-standard-headers-in-msvc-wall
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5290 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 282f6dc6db4a29a1f4ecefea9e3f202b3c21debc
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Apr 4 07:44:19 2011 +0000
-
-    Enable all warnings on MSVC
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5289 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ccee81d8a261ab4ed49fe5739eb01dd94abb0a86
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Apr 4 06:42:34 2011 +0000
-
-    WindowsInstaller: create an internet shortcut to start menu. Wix invocation change.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5288 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d0639e077627f9012b065b37c7272f6f5061dcc1
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Apr 3 07:41:56 2011 +0000
-
-    WindowsInstaller: Separate makefile changes for building for x64 and building on x64.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5287 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ea7eb699e52156dc8edd76e3288f432cffa3618f
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 1 08:06:25 2011 +0000
-
-    WindowsInstaller: build for x64 with nmake -f Makefile.mak BUILD_TYPE=WIN64
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5286 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5ab9919610ebcc47fad1cf47351d701275b45c3f
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Mar 31 12:04:57 2011 +0000
-
-    WindowsInstaller: link against crypt32.lib
-    
-    libeay32MT.lib(e_capi.obj) : error LNK2019: unresolved external symbol __imp__CertFreeCertificateContext at 4 referenced in function _capi_free_key
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5285 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 223a8b90e5e53b87d09c79d1e808bf153b480d41
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Mar 31 11:28:29 2011 +0000
-
-    WindowsInstaller: tune for default build
-     * remove opensc-msi folder, everything related to building on/for Windows is in /win32
-     * OpenSC shall be built in static mode
-     * set default paths for OpenSSL Win32 installer locations
-     * build with OpenSSL by default
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5284 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b6c606ad91355249fac0283e9e007a281f83f61b
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Mar 31 10:34:12 2011 +0000
-
-    WindowsInstaller: opensc.conf is (incorrectly) generated with make. This is not run on Windows. Use opensc.conf.in as the template for the *example* config file on Windows.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5283 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f6ac8b6f5678407353cd49cd88aeeb8fb97e192c
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Mar 31 10:24:28 2011 +0000
-
-    WindowsInstaller: fix .ico path. Everything related to building on/for Windows is in win32/
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5282 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f2fac5b7b512264886f573dfbbd016067ec4a670
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Mar 31 09:18:23 2011 +0000
-
-    WindowsInstaller: Build MSI by default on native Windows build.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5281 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 19aff30b03b69981e86424892a59547c43d24328
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Mar 31 07:45:19 2011 +0000
-
-    opensc-explorer: use relative addressing in do_cat
-    
-    'cat' takes a file_id as argument. This should be selected relative
-    to the currently selected DF instead of being treated as an ID.
-    (compare with 'get' that also takes a file_id argument)
-    
-    See http://www.opensc-project.org/pipermail/opensc-devel/2011-March/016172.html
-    
-    Signed-off-by: Peter Marschall <peter at adpm.de>
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5280 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 71daf094de720e8bd0bf1b227f479d5ddb1d91a2
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Mar 31 07:45:13 2011 +0000
-
-    opensc-explorer: re-factor do_cat()
-    
-    * use strlen(..) instead of sizeof(..)-1
-      - easier to read
-      - avoids errors if string is defined with explicit size
-    * bring sfi:-related code closer together
-    
-    See http://www.opensc-project.org/pipermail/opensc-devel/2011-March/016172.html
-    
-    Signed-off-by: Peter Marschall <peter at adpm.de>
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5279 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7939d8b72371e5759b01a7c51e6d56977df031ce
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Mar 31 07:45:08 2011 +0000
-
-    opensc-explorer: re-factor print_file()
-    
-    See http://www.opensc-project.org/pipermail/opensc-devel/2011-March/016172.html
-    
-    Signed-off-by: Peter Marschall <peter at adpm.de>
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5278 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f63c85d4cddbecf68cf0dd1c7a91106c1561c794
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Mar 31 07:44:59 2011 +0000
-
-    opensc-explorer: support writing to stdout in 'get'
-    
-    Treat the value '-' of the second parameter to get special.
-    If it is given, use stdout as the file to write to.
-    
-    See http://www.opensc-project.org/pipermail/opensc-devel/2011-March/016172.html
-    
-    Signed-off-by: Peter Marschall <peter at adpm.de>
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5277 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d26d23ccfcc77e05a497cdcf28a05bf8ca470924
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 30 10:36:17 2011 +0000
-
-    man pages: fix piv-tool XML syntax
-    
-    tools/piv-tool.xml:28: parser error : Opening and ending tag mismatch: refsect1 line 21 and para
-    		</para>
-    		       ^
-    
-    Thanks to Juan Antonio for noticing: http://www.opensc-project.org/pipermail/opensc-devel/2011-March/016227.html
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5276 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d77f1576ad7dde2bd4ad14c68e4d48641f142b99
-Author: dengert <dengert at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Mar 29 18:11:45 2011 +0000
-
-    Add piv-tool.xml to list of man pages to be built
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5275 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6701d063c30db9a5c44e38cae1f98e9bbacd0eec
-Author: dengert <dengert at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Mar 29 18:08:22 2011 +0000
-
-    Add a piv-tool.xml for man page. See #338
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5274 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit cd3012f55e30c79798971d10afe8f2ffcda58f1a
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Mar 29 11:36:45 2011 +0000
-
-    Fix #340: ignore pinpad properties of readers known to be broken.
-    
-    On Mac OS X the HP smart card keyboard claims secure PIN entry support but the PIN is transmitted to host.
-    Disregard the pinpad flag for this reader. Other readers claiming pinpad support but having problems to follow in this list.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5273 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4393f7231ea0230624885d879e2f6680d687bd52
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Mar 29 11:36:39 2011 +0000
-
-    eidenv: update copyright and correct used license to match the rest of OpenSC.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5272 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit eae680501a3f3d2833fe0d663739b28bc9968daa
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Mar 25 18:19:28 2011 +0000
-
-    cardmod: when getting serial number use GET_SERIAL ctl call ...
-    
-    rather then card->serialnr value. Not all card drivers initialize this member.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5271 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0d9b40fc04ec66f0c36f76907950ab9cf077b6d8
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 23 18:37:46 2011 +0000
-
-    cardmod: adopt classic form for container's GUID ...
-    
-    also:
-    - debug function to dump the objects;
-    - function to get pin by role, used in CardAuthenticateEx();
-    - CALG_* flags are not translated into the SC_ALGORITHM_RSA_HASH_* flags
-      (http://www.opensc-project.org/pipermail/opensc-devel/2011-March/016130.html);
-    - minor changes to the procedure to find the keys.
-    
-    tested with 'ruToken ECP' and 'IAS/ECC' from Sagem
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5270 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit fe630c884fbb9570b67510149c7bebddbd11a8d2
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 23 17:17:07 2011 +0000
-
-    Fix a real bug (and a compiler warning)
-    
-    pkcs15-oberthur.c: In function 'sc_pkcs15emu_oberthur_add_pubkey':
-    pkcs15-oberthur.c:585: warning: statement with no effect
-    pkcs15-oberthur.c: In function 'sc_pkcs15emu_oberthur_add_cert':
-    pkcs15-oberthur.c:654: warning: statement with no effect
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5269 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 04154504a1340024192d082af03b860f6e00d21c
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 23 16:12:21 2011 +0000
-
-    Fix compiler warning
-    
-    pkcs15-init.c: In function 'verify_pin':
-    pkcs15-init.c:2840: warning: declaration of 'r' shadows a previous local
-    pkcs15-init.c:2836: warning: shadowed declaration is here
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5268 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b435f6007a2e4872b48cd04b2d6073256e602a2f
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 23 16:05:24 2011 +0000
-
-    Fix compiler warning
-    
-    pkcs15-itacns.c: In function 'itacns_add_data_files':
-    pkcs15-itacns.c:478: warning: declaration of 'list_size' shadows a global declaration
-    ../../src/common/simclist.h:497: warning: shadowed declaration is here
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5267 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8c0dbf4b022bfc8606e3db46c29eceb2a0cd97b9
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 23 16:02:42 2011 +0000
-
-    Fix compiler warning
-    
-    card-iasecc.c: In function 'iasecc_get_serialnr':
-    card-iasecc.c:2218: warning: declaration of 'ii' shadows a previous local
-    card-iasecc.c:2165: warning: shadowed declaration is here
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5266 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0e6b87b135de4a838c376e2b4aaec220f95f63e3
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 23 16:01:45 2011 +0000
-
-    Fix compiler warning
-    
-    card-iasecc.c: In function 'iasecc_select_file':
-    card-iasecc.c:647: warning: declaration of 'rv' shadows a previous local
-    card-iasecc.c:635: warning: shadowed declaration is here
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5265 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 161678d8a62cc6ffb8b998409dd4261337a61e77
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 23 16:00:56 2011 +0000
-
-    Fix compiler warning
-    
-    card-iasecc.c:1529: warning: declaration of 'ffs' shadows a global declaration
-    /usr/include/string.h:121: warning: shadowed declaration is here
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5264 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 11ae160d5548b473823e79802243da1d5ffad04d
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 23 15:58:17 2011 +0000
-
-    Fix compiler warning by commenting dead code
-    
-    card-authentic.c:510: warning: 'authentic_resize_file' defined but not used
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5263 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 577499f80cecb346e0980e2ce6eb2bc1f49a1bd2
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 23 15:57:20 2011 +0000
-
-    Fix compiler warning
-    
-    card-authentic.c: In function 'authentic_chv_verify_pinpad':
-    card-authentic.c:1255: warning: declaration of 'ffs' shadows a global declaration
-    /usr/include/string.h:121: warning: shadowed declaration is here
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5262 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4410ae03974babcec6e6e14f08fd7a23d62132ab
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 23 15:55:06 2011 +0000
-
-    Fix compiler warning
-    
-    card-westcos.c: In function 'westcos_init':
-    card-westcos.c:255: warning: declaration of 'priv_data' shadows a previous local
-    card-westcos.c:210: warning: shadowed declaration is here
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5261 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 902e4b139afb973fc0c5ffd17355486cbd7a6748
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 23 15:53:15 2011 +0000
-
-    Fix compiler warning by commenting dead code
-    
-    card-piv.c:179: warning: 'oid_prime256v1' defined but not used
-    card-piv.c:180: warning: 'oid_secp384r1' defined but not used
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5260 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1f2c8211adf8ed95ee9d09f4e13de7ca6b86bd1a
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 23 15:51:29 2011 +0000
-
-    Fix compiler warnings
-    
-    card-oberthur.c: In function 'auth_pin_verify_pinpad':
-    card-oberthur.c:1581: warning: declaration of 'ffs' shadows a global declaration
-    /usr/include/string.h:121: warning: shadowed declaration is here
-    card-oberthur.c: In function 'auth_pin_reset_oberthur_style':
-    card-oberthur.c:1802: warning: declaration of 'ffs' shadows a global declaration
-    /usr/include/string.h:121: warning: shadowed declaration is here
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5259 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f1170e009a562efdbdccc9555db81c533c3df138
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 23 15:46:51 2011 +0000
-
-    Fix compiler warning
-    
-    reader-pcsc.c: In function 'refresh_attributes':
-    reader-pcsc.c:339: warning: declaration of 'rv' shadows a previous local
-    reader-pcsc.c:273: warning: shadowed declaration is here
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5258 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f7f6213d24add5d4b0f0816e8015dde00ccd5a77
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 23 15:45:41 2011 +0000
-
-    Fix compiler warning
-    
-    reader-pcsc.c: In function 'refresh_attributes':
-    reader-pcsc.c:337: warning: declaration of 'state' shadows a previous local
-    reader-pcsc.c:272: warning: shadowed declaration is here
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5257 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 842550ae20002ee458a851c7c79b1bce556d6fb6
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 23 15:43:00 2011 +0000
-
-    Fix compiler warning
-    
-    pkcs15-pubkey.c: In function 'sc_pkcs15_pubkey_from_spki_filename':
-    pkcs15-pubkey.c:944: warning: 'buflen' may be used uninitialized in this function
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5256 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 88a07de60d5d4a704d6cda0a3f5a25234f8dadf0
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 23 15:41:20 2011 +0000
-
-    Fix compiler warning
-    
-    ctx.c: In function 'sc_context_create':
-    ctx.c:646: warning: implicit declaration of function 'lt_dlinit'
-    ctx.c:646: warning: nested extern declaration of 'lt_dlinit'
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5255 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6fe27b2c4a9f1a0031907eee1675409c67914f20
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 23 15:19:15 2011 +0000
-
-    Fix compiler warning
-    
-    pkcs15-iasecc.c:63: warning: no previous prototype for 'iasecc_reference_to_pkcs15_id'
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5254 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c824662a03de8d9e73f84949b2ff780810081b1f
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 23 15:16:52 2011 +0000
-
-    Fix compiler warning
-    
-    pkcs15-lib.c: In function 'prkey_fixup_rsa':
-    pkcs15-lib.c:1936: warning: declaration of 'ctx' shadows a previous local
-    pkcs15-lib.c:1911: warning: shadowed declaration is here
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5253 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit de196fa205162b180544d3439d8a409c69bae78c
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 23 15:15:30 2011 +0000
-
-    Fix compiler warning
-    
-    pkcs15-lib.c: In function 'sc_pkcs15init_store_private_key':
-    pkcs15-lib.c:1339: warning: declaration of ‘ctx’ shadows a previous local
-    pkcs15-lib.c:1278: warning: shadowed declaration is here
-    
-    The ctx variable was already declared with the correct value.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5252 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f88bbe117fcbd0ff8e9fef67499b1a2a5032fd39
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 23 15:12:40 2011 +0000
-
-    Remove typedef file_info to complete the change/cleanup in revision 5250
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5251 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 99bbc06bcb794315948aa1baab76275d4715bba1
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 23 15:10:10 2011 +0000
-
-    Fix compiler warning
-    
-    profile.c: In function 'sc_profile_get_pin_id_by_reference':
-    profile.c:785: warning: declaration of ‘pin_info’ shadows a global declaration
-    profile.c:217: warning: shadowed declaration is here
-    
-    Avoid using a typedef with a "common" name
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5250 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 18ca8b94e12463746dbf3b8ece2c08d2c730d5b7
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 23 15:02:18 2011 +0000
-
-    Fix compiler warning
-    
-    ibscdl.c:30: warning: no previous prototype for 'sc_dlopen'
-    libscdl.c:35: warning: no previous prototype for 'sc_dlsym'
-    libscdl.c:40: warning: no previous prototype for 'sc_dlerror'
-    libscdl.c:45: warning: no previous prototype for 'sc_dlclose'
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5249 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a88972b36a5d3fed494e51fb16de2f0cd4e38bff
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 23 15:00:04 2011 +0000
-
-    Fix compiler warning
-    
-    libscdl.c: In function 'sc_dlerror':
-    libscdl.c:38: warning: old-style function definition
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5248 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e2c1756a1cf67144a24e156bd2df7e9bcf55de09
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 23 14:58:45 2011 +0000
-
-    Fix compiler warning
-    
-    libpkcs11.c: In function 'C_LoadModule':
-    libpkcs11.c:37: warning: implicit declaration of function 'lt_dlinit'
-    libpkcs11.c:37: warning: nested extern declaration of 'lt_dlinit'
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5247 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c1bd559f991ddb568b31ef0cd5d230ea822076fd
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 23 14:56:22 2011 +0000
-
-    Fix compiler warning
-    
-    cards.h:221: warning: function declaration isn’t a prototype
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5246 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5fd2ef4b12969a59a3d768876be0d77301c13e83
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 23 14:55:23 2011 +0000
-
-    Fix compiler warning
-    
-    libscdl.h:24: warning: function declaration isn’t a prototype
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5245 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b0b5da2ab6f80ba94c800d210c9b1bed3df47156
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Mar 21 06:54:16 2011 +0000
-
-    Fix building CT-API after r5061, noticed by Jenkins autobuild
-    
-    reader-ctapi.c:255: error: ‘sc_reader_t’ has no member named ‘atr_len’
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5244 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8ef19c4ad2f1ee0958d3a433f42517f896434b87
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Mar 20 14:50:44 2011 +0000
-
-    typo: dont -> don't
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5243 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4dde0476b15d9453864c97f06ce211041dec2b77
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Mar 20 13:17:29 2011 +0000
-
-    Fix some of the spelling errors in westcos-tool man page and utility, triggered by lintian
-    
-    I: opensc: spelling-error-in-manpage usr/share/man/man1/westcos-tool.1.gz authentification authentication
-    I: opensc: spelling-error-in-binary ./usr/bin/westcos-tool attemps attempts
-    
-    Make text in westcos-tool manpage more readable, harmonize PIN/PUK capitalization.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5242 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit db66f696580bb4793619b40a45119a265d8fd083
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Mar 20 12:19:11 2011 +0000
-
-    Fix a typo reported by lintian
-    
-    I: opensc: spelling-error-in-binary ./usr/bin/pkcs15-init dont don't
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5241 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 719bc293a1972fc20c8c19ff9faab319a1e4cfc2
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Mar 20 12:19:06 2011 +0000
-
-    Fix a typo reported by lintian
-    
-    I: opensc: spelling-error-in-manpage usr/share/man/man1/netkey-tool.1.gz diplay display
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5240 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7406d844159fffb1fd5243cd28a753cf914b00d4
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Mar 20 12:19:01 2011 +0000
-
-    Fix a typo reported by lintian
-    
-    I: libopensc3: spelling-error-in-binary ./usr/lib/libopensc.so.3.0.0 enviroment environment
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5239 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7ab9b7f10d726c99de952d015ab665c1c6dd8ced
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Mar 20 12:18:55 2011 +0000
-
-    Fix a typo reported by lintian
-    
-    I: libopensc3: spelling-error-in-binary ./usr/lib/libopensc.so.3.0.0 extention extension
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5238 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a55f2f098b3670f74762c65e3cdf1b710c9947aa
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Mar 15 12:18:51 2011 +0000
-
-    iso7816: try to read full amount of the requested data ...
-    
-    actually, if an error 'Wrong Le' happens, the APDU with the reduced size is re-transmitted
-    (http://www.opensc-project.org/opensc/browser/trunk/src/libopensc/apdu.c#L401) .
-    iso7816_read_binary() returns this reduced amount of data and do not trying to read the missing part .
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5237 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3c5d61716ca34413609d2524d67ad1ff62c53da7
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Mar 15 09:39:04 2011 +0000
-
-    pkcs15init: EnterSafe: increase size of the xDF files
-    
-    http://www.opensc-project.org/pipermail/opensc-devel/2011-February/016051.html
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5236 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b8fcfa8a1fca1a7d77d71011c0cfddbd1aa08344
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Mar 14 20:18:01 2011 +0000
-
-    openct: Wrong size
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5235 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1a19093b421439d6c009904de139b72b5ce1b07f
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Mar 14 19:45:02 2011 +0000
-
-    Make openct compile again
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5234 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 39f3c2b7c68eee3b4f14e153a6512e03a2749dea
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Mar 14 18:19:07 2011 +0000
-
-    rtecp: in non-extended APDUs the 'Le' value cannot be more then 256 bytes ...
-    
-    after r5186 the SC_MAX_APDU_BUFFER_SIZE has been increased
-    and so existing defintion of Le value became invalid.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5233 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a0763976715817c7a14c390b33da29a78ef5f6f3
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Mar 14 18:13:38 2011 +0000
-
-    pkcs15: without AID specified return the first available PKCS#15 application ...
-    
-    revert accidential commit, thanks to Pierre Ossman.
-    http://www.opensc-project.org/pipermail/opensc-devel/2011-March/016149.html
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5232 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b1a1dc245a4f09a4bf1cf2985e4f37daa4930906
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Mar 14 18:09:48 2011 +0000
-
-    pkcs15: accept more then one xDF file of the same type ...
-    
-    partial revert of r4096, thanks to Pierre Ossman
-    http://www.opensc-project.org/pipermail/opensc-devel/2011-March/016148.html
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5231 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 27f493e6d82a1c1b0c584c68a28845e7e63e7003
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Mar 14 18:02:50 2011 +0000
-
-    libopensc: fix debug message
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5230 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 42aee0f4d54f594bbb617f2f688a8fa6792da55d
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Mar 14 18:01:40 2011 +0000
-
-    pkcs15-tool: use dedicated function to free the object memory
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5229 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a067bf35a34371ed2cb88348d37224732a5e6851
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Mar 13 18:11:07 2011 +0000
-
-    pkcs15: more of the debug messages
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5228 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d174edf1d2328eaf12b6b6bd72c7b018c9606953
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Mar 12 15:17:02 2011 +0000
-
-    msi: fix component ID of the rutoken profiles
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5227 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit dda747f8fc42cca8210fcce00a021b6a6fb17f0d
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Mar 12 14:20:13 2011 +0000
-
-    msi: include 'cardmod.dll' and 'rutoken' PKCS#15 profiles into MSI
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5226 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d7c0ad71ff9c1efd5aa32718804ea68a0ef39f9a
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Mar 11 17:57:46 2011 +0000
-
-    ruToken: in non-extended APDUs the 'Le' value cannot be more then 256 bytes ...
-    
-    in r5186 the SC_MAX_APDU_BUFFER_SIZE has been increased
-    and so the previous defintion of Le value became invalid.
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5225 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 10e5a18ec9a48d703c1a78f65c238715efe0c29f
-Author: andre <andre at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Mar 7 18:14:31 2011 +0000
-
-    pkcs15-tool.c: Avoid compiler warnings:
-    
-    pkcs15-tool.c:1111: warning: comparison between signed and unsigned
-    pkcs15-tool.c:1117: warning: comparison between signed and unsigned
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5224 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 12df79c14b54fb5df3055e4c0e390e236c3a244d
-Author: andre <andre at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Mar 7 18:10:11 2011 +0000
-
-    pkcs15.c: Avoid compiler warning:
-    
-    pkcs15.c:286: warning: unused variable ‘conf_block’
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5223 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3442649b4278903597f9d2ae6e5dbffa78badfdd
-Author: andre <andre at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Mar 7 16:15:41 2011 +0000
-
-    pkcs15-pin: Fixing the method of obtaining objects protected by a particular PIN. Now it's in accordance with PKCS15. See [http://www.opensc-project.org/pipermail/opensc-devel/2011-January/015818.html discussion].
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5222 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 39db52640721353867d773fc9f9192bcb66ccf20
-Author: andre <andre at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Mar 7 16:00:23 2011 +0000
-
-    pkcs15-piv: Remove unused functionality.
-    
-     These lines made use of the attribute card->flags which is mostly unused in the whole framework. That attribute becomes nearly obsolete without these lines. See [http://www.opensc-project.org/pipermail/opensc-devel/2011-March/016104.html discussion].
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5221 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 33f44f8dc1b92eaa20716680a566830592e5b009
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Mar 6 12:35:35 2011 +0000
-
-    pkcs15: pin references are always positive integers ...
-    
-    In the OpenSC versions previous to 0.11.5 the references greater then
-    127 were erroneously encoded by one byte (negative value ecording to the
-    ASN.1 rules).
-    Actually some other proprietary PKCS#15 cards have also this infirmity.
-    
-    Actual commit makes general the application of the hack used for 'starcos' card.
-    
-    http://www.opensc-project.org/pipermail/opensc-devel/2011-February/016062.html
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5220 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 763c0bcefe80a7f6c49a1e4b7d82cd59d9a93d76
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Mar 6 11:34:58 2011 +0000
-
-    pkcs15init: #327: unique ID for the private key objects. Thanks a Diego (NdK) ...
-    
-    http://www.opensc-project.org/opensc/ticket/327
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5219 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8ff3d5d6476764feea94797bf99303f1191900a8
-Author: andre <andre at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Mar 4 16:23:07 2011 +0000
-
-    Fixing misuse of SC_CARD_FLAG_RNG. From opensc.h :
-    
-    [http://www.opensc-project.org/opensc/browser/trunk/src/libopensc/opensc.h?rev=5190#L88 #define SC_ALGORITHM_RSA_PAD_PKCS1      0x00000002]
-    [http://www.opensc-project.org/opensc/browser/trunk/src/libopensc/opensc.h?rev=5190#L413 #define SC_CARD_FLAG_RNG                0x00000002]
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5218 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 711cbda2e0a06fa587e2f02f973735e01a78eddc
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 2 14:18:09 2011 +0000
-
-    PC/SC: Add "PIN length not in range" interpretation to PC/SC pinpad code.
-    
-    This way this condition won't get translated to a generic -1200 error, as 0x6403 is not a known SW.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5217 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d59197748ce5bd39f5cbf7d3a33589bef30c028e
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Mar 1 11:19:45 2011 +0000
-
-    EstonianEid: Force T=0 for the newest ATR as well.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5216 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d4bcba58084a43188dbe59272afb314eaefa8ff9
-Author: dengert <dengert at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Feb 25 17:20:52 2011 +0000
-
-    Allow a key to be used to sign a certificate request
-    even if the normal usage does not allow sign.
-    This is need when initializing a card when called by
-    OpenSSL req -engine
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5215 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit dc7cde4d791abd61ce342ce0abddf87db6bdde14
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Feb 23 08:57:30 2011 +0000
-
-    ias/ecc: do not throw an error when there is SM or Auth.Ext protection
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5214 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c55a581b5a4406f0c093275bccc76357029e7ae3
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Feb 22 19:00:22 2011 +0000
-
-    cardmod: fix log printing into the 'debug_file' ...
-    
-    compiled with VS 10.0 and tested on Vista,
-    probably can be extended for mingw32
-    http://www.opensc-project.org/opensc/browser/trunk/src/cardmod/cardmod.c#L131
-    
-    also fix warning C4715: 'check_reader_status' : not all control paths return a value'
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5213 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c5b2b021be642e7d0f7363e5771d8c7426455ac1
-Author: dengert <dengert at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Feb 18 20:48:22 2011 +0000
-
-    opensc-cardmod.dll can now by built as "static"
-    using the VS. The dll will contain all of OpenSC,
-    OpenSSL and zlib in a single dll, and thus can
-    reside anywere. Without this, winlogin would require
-    it to reside in system32.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5212 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 432a89c18b19f6a544002753b26f56b17f1db00f
-Author: dengert <dengert at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Feb 18 20:37:50 2011 +0000
-
-    Fix malloc warning by using stdlib.h
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5211 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8f4dfe2c859d1d75f6cbdd1346838d167ad97645
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Feb 17 20:46:13 2011 +0000
-
-    Amend r5201: put libscdl.h/libpkcs11.h to distribution package and link against libltdl where needed.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5210 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 47b1c9a86d2a558ceb6e51fc6a195f61a794bb80
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Feb 17 17:26:43 2011 +0000
-
-    opensc-msi: do not install libltdl
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5209 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7ca921fc4a0ba7fa3aac07290bbb02a8102eec3d
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Feb 17 17:24:31 2011 +0000
-
-    ias/ecc: use extended path in the 'include' macros
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5208 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6ef7366074070ffa4b8529bfc3d88980023dbe86
-Author: dengert <dengert at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Feb 17 14:50:33 2011 +0000
-
-    void issues with ssize_t See r5135 and r5195
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5207 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4f266b6099afea8e08f3f6ce620ba89a5b6a5141
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Feb 17 13:35:25 2011 +0000
-
-    libopensc: include 'scdl' library when linking with Visual Studio ...
-    
-    missing 'scdl' header file in 'pkcs15-lib'
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5206 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 16ca4b05f842af9c9b75087356f44871a84cb383
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Feb 17 09:36:36 2011 +0000
-
-    opensc.conf: by default comment out all IAS/ECC specific configuration lines ...
-    
-    http://www.opensc-project.org/pipermail/opensc-devel/2011-February/016013.html
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5205 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6dd928bdfb83a3cda60ec94820a65ccb08f289e8
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Feb 17 09:28:40 2011 +0000
-
-    libopensc: fix name of 'LTDL' macro
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5204 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2ea78bf7411787bf652960fa77453eeb2a6be64c
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Feb 17 07:45:36 2011 +0000
-
-    Amend r5201: also move libltdl build properties to the right Makefile and other leftovers.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5203 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c6eb3a3085394f56f1be1309f9a63a0f4cc45e0e
-Author: dengert <dengert at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Feb 16 21:05:52 2011 +0000
-
-    Allow use of seperate build and source dir when building
-    common/libpkcs11
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5202 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ffb46d25733bb517611861a03916887beecb5446
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Feb 16 19:02:11 2011 +0000
-
-    core: reanimate the sc_dlopen API for dynamic loading
-     * shift libpkcs11 from src/pkcs11 to src/common as it is not used to implement the OpenSC PKCS#11 module
-     * invent a "libscdl" mini library that implements either libltdl based dynamic loading or uses native interfaces
-     * drop hard requirement for libltl to build OpenSC
-     * native Windows build does not need libltdl any more
-     * specify CNGSDK include dir to find cardmod.h. CNGSDK only registers with a handful of compilers
-    
-    Deals with #323
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5201 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 53dd2ceafa6940a90de608df4e335ee280db50af
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Feb 16 14:05:17 2011 +0000
-
-    IAS/ECC: remove dead code and '//' coments, resolve some warnings ...
-    
-    to be continued, thanks to Martin
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5200 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e02becc6e2d0a2b230b022fc70d7e23792c3719c
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Feb 16 11:01:46 2011 +0000
-
-    IAS/ECC: for the IAS/ECC cards include into the OpenSC configuration the 'card_atr' sections
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5199 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 69b7f200eb23780415abdba0b7c98e27a48847b0
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Feb 16 10:59:10 2011 +0000
-
-    IAS/ECC: include support of the IAS/ECC v1.0.1 cards ...
-    
-    http://www.opensc-project.org/pipermail/opensc-devel/2011-January/015756.html
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5198 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 57b7a81c3a3233e93e9b60927103b26f9a20463e
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Feb 16 10:55:05 2011 +0000
-
-    IAS/ECC: add IAS/ECC card specific files ...
-    
-    as it was announced in
-    http://www.opensc-project.org/pipermail/opensc-devel/2011-January/015756.html
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5197 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ce116f42b641e0f5297b8e1055dcdb79e13fa6fc
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Feb 16 10:46:06 2011 +0000
-
-    pkcs15init: for MyEID card set tokenInfo flags ...
-    
-    it's a part of demand of the card driver's maintainer
-    http://www.opensc-project.org/pipermail/opensc-devel/2011-February/015994.html
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5196 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d953d4ade48e428f6640fe0b50862acb16be404b
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Feb 16 10:31:59 2011 +0000
-
-    card-piv: 'ssize_t' is not defined when compiling with Visual Studio
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5195 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 43be49b4a325964a3ebf510c56b67779f6e13e0c
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Feb 10 20:31:34 2011 +0000
-
-    libopensc: correct ASN.1 parsing of EF(TokenInfo).
-    
-    Two fields should be optional. This also fixes #322
-    
-    Thanks to Toni for finding and Andre for fixing the problem.
-    See http://www.opensc-project.org/pipermail/opensc-devel/2011-January/015613.html
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5194 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f73eb87fedf689b4b93b64f7d8c809723fcf7928
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Feb 10 13:40:35 2011 +0000
-
-    MacInstaller: use the pre-built libopensc.dylib for building OpenSC.tokend
-    
-    This way it can be built without installing OpenSC on a clean machine.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5193 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0a9d5075562f2aac1d9421f20c7ce2c2f2aea23e
-Author: dengert <dengert at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Feb 9 17:52:00 2011 +0000
-
-    Fixes to cardmod:
-        The registry in no longer used to pass the
-        handles provided by BaseCSP. sc_ctx_use_reader
-        is used instead.  (uses r5190)
-    
-        A decryption routine was added as it is needed by login.
-    
-        Key container names are based on the card serial
-        number and cert ID. The must be unique as they
-        are searched for in the certificate store to
-        find the card to insert in some situations.
-    
-        If the handles change, the association to the reader
-        and card is refreshed as it may be a different card
-        or reader.  (uses r5127)
-    
-        Extra low lowel debugging was added. To use
-        it the CARDMOD_LOW_LEVEL_DEBUG but be defined in
-        cardmod.c This can log entries before and sc_context
-        is established.
-    
-        The use of "texte" was replaced, as it looked like there
-        could be buffer overflows. It was replaced with a
-        loghex routine.
-    
-        SC_ALGORITHM_RSA_HASH_MD5_SHA1 can now be used
-        (IE uses this.)
-    
-        Several other bugs were fixed.
-    
-    The code can now bue used for AD login, and was tested
-    with swaping cards duirng login, and with several readers.
-    The code is still experimental, and for login to work,
-    the dlls were moved to system32.
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5192 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0180a969dbed180cd10a96fbf108f49f9f1a109f
-Author: dengert <dengert at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Feb 9 14:45:51 2011 +0000
-
-    Remove dependency on sc_establish_context, and provide appname
-    via sc_ctx_create_context and ctx_param.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5191 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d3b3faa91af06ce27bed3ab580a16e9b54a90c5a
-Author: dengert <dengert at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Feb 9 14:33:52 2011 +0000
-
-    Add sc_ctx_use_reader as a reader driver operation.
-    It is used by cardmod to pass in pointers to the PC/SC handles
-    provided by the caller of cardmod. Other drivers will return
-    an error if this routine called.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5190 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 025da6d0f548e197bcc209c66a36b2cdf4c2fa6e
-Author: dengert <dengert at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Feb 8 15:49:35 2011 +0000
-
-    Fix #325 add SC_PKCS15_PRKEY_USAGE_ENCRYPT and SC_PKCS15_PRKEY_USAGE_DECRYPT
-    to PIV KEY Management keys and certificates, includeing the Retired keys.
-    This applies to 0.12.0 and needs to be in 0.12.1
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5189 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 98aa4cb5712d07cfb428b17484ef5b0d8fd74a9c
-Author: dengert <dengert at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Feb 7 16:23:54 2011 +0000
-
-    Fix uninitialized variables and warning messages.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5188 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c209e3a7570f4c1cccfa7bf7654e655da1f90753
-Author: andre <andre at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Feb 6 22:43:12 2011 +0000
-
-    Allow hex-strings to be separated by space characters:
-    
-    opensc-tool -s "00 A4 00 00 02 3F 00 00"
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5187 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1008062844367e9bd0bdd8a15f0ea3d90a127db5
-Author: andre <andre at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Feb 6 22:33:13 2011 +0000
-
-    Adjust SC_MAX_APDU_BUFFER_SIZE to maximum size of Short APDU.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5186 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8b76cee5727d8f3d5842a88de24b23e5f2f7f830
-Author: andre <andre at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Feb 6 17:28:30 2011 +0000
-
-    Revert r5137, because size_t is defined as unsigned integer type (without further qualification).
-    
-    http://www.opengroup.org/onlinepubs/000095399/basedefs/stddef.h.html
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5185 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2f186bee8be0bd823c52ff79aded8a5909c67d09
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Feb 5 22:40:08 2011 +0000
-
-    Remove unused variables
-    
-    card-authentic.c: In function ‘authentic_init_oberthur_authentic_3_2’:
-    card-authentic.c:423: warning: unused variable ‘resp’
-    card-authentic.c: In function ‘authentic_process_fci’:
-    card-authentic.c:1042: warning: unused variable ‘acls_NEVER’
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5184 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9afa56f740d7c3bd4433cedb98f5b0598340d796
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Feb 5 22:37:51 2011 +0000
-
-    card-piv.c:564: warning: unused variable ‘buf_len’
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5183 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit fe31597e4d13d4781de3210037081090710f7149
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Feb 5 22:17:57 2011 +0000
-
-    Remove dead code
-    
-    p15card-helper.c:263:22: warning: Although the value stored to 'r' is used in
-          the enclosing expression, the value is never actually read from 'r'
-      ...!= (r = sc_pkcs15emu_add_x509_cert(p15card, &cert_obj, &cert_info))) {
-             ^   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-    p15card-helper.c:237:22: warning: Although the value stored to 'r' is used in
-          the enclosing expression, the value is never actually read from 'r'
-      ...if(SC_SUCCESS != (r = sc_select_file(card, &cert_info.path, NULL))) {
-                           ^   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-    p15card-helper.c:224:3: warning: Value stored to 'r' is never read
-                    r = SC_SUCCESS;
-                    ^   ~~~~~~~~~~
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5182 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit fc40ad754cd78a9d8dbb527b9f793de1abe11d67
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Feb 5 22:14:19 2011 +0000
-
-    Remove dead code
-    
-    pkcs15-oberthur.c:353:3: warning: Value stored to 'len' is never read
-                    len = sizeof(label) - 1;
-                    ^     ~~~~~~~~~~~~~~~~~
-    pkcs15-oberthur.c:587:3: warning: Value stored to 'sz' is never read
-      ...sz = len > sizeof(key_obj.label) - 1 ? sizeof(key_obj.label) - 1 : len;
-         ^    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-    pkcs15-oberthur.c:669:2: warning: Value stored to 'offs' is never read
-            offs += 2 + len;
-            ^       ~~~~~~~
-    pkcs15-oberthur.c:656:3: warning: Value stored to 'sz' is never read
-      ...sz = len > sizeof(cobj.label) - 1 ? sizeof(cobj.label) - 1 : len;
-         ^    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5181 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9c03435cc97a05730302bf7a2cd6ffdea0ded385
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Feb 5 22:12:14 2011 +0000
-
-    Remove dead code
-    
-    pkcs15-westcos.c:198:3: warning: Value stored to 'usage' is never read
-                    usage =
-                    ^
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5180 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7789948e4db5926795d1a597f3023591730df79b
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Feb 5 22:11:03 2011 +0000
-
-    Remove dead code
-    
-    pkcs15-tccardos.c:253:3: warning: Value stored to 'pinType' is never read
-                    pinType   = key_descr & TC_CARDOS_PIN_MASK;
-                    ^           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5179 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f8fc900c2091e8c3192149cc6a330996d3c8d301
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Feb 5 22:09:20 2011 +0000
-
-    Remove dead code
-    
-    pkcs15-openpgp.c:110:2: warning: Value stored to 'length' is never read
-            length = r;
-            ^        ~
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5178 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7c81ad9aa3dd859d4446ddb9bde8bee2df37d700
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Feb 5 22:08:13 2011 +0000
-
-    Fix typo in error message
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5177 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 034cdb11512be18f911bc8a42f8ef1da21bf1474
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Feb 5 22:07:52 2011 +0000
-
-    Add missing checks for NULL before dereferencing
-    
-    card-authentic.c:913:33: warning: Field access results in a dereference of a
-          null pointer (loaded from variable 'apdus')
-                    rv = sc_check_sw(card, apdus->sw1, apdus->sw2);
-                                           ~~~~~  ^
-    card-authentic.c:958:33: warning: Field access results in a dereference of a
-          null pointer (loaded from variable 'apdus')
-                    rv = sc_check_sw(card, apdus->sw1, apdus->sw2);
-                                           ~~~~~  ^
-    card-authentic.c:1001:33: warning: Field access results in a dereference of a
-          null pointer (loaded from variable 'apdus')
-                    rv = sc_check_sw(card, apdus->sw1, apdus->sw2);
-                                           ~~~~~  ^
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5176 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 52251f931cf07c8ac11b5a7278c1fb67f943e582
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Feb 5 22:02:42 2011 +0000
-
-    Remove dead code
-    
-    card-authentic.c:440:2: warning: Value stored to 'resp_len' is never read
-            resp_len = sizeof(resp);
-            ^          ~~~~~~~~~~~~
-    card-authentic.c:1053:4: warning: Value stored to 'acls' is never read
-                            acls = acls_NEVER;
-                            ^      ~~~~~~~~~~
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5175 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4d8fdd103c18b92b737a3c0ef9967bbada7affc9
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Feb 5 22:01:21 2011 +0000
-
-    Remove dead code
-    
-    card-ias.c:132:32: warning: Although the value stored to 'ins' is used in the
-          enclosing expression, the value is never actually read from 'ins'
-            r = len = pad = use_pin_pad = ins = p1 = 0;
-                                          ^     ~~~~~~
-    card-ias.c:132:2: warning: Value stored to 'r' is never read
-            r = len = pad = use_pin_pad = ins = p1 = 0;
-            ^   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-    card-ias.c:366:2: warning: Value stored to 'ctx' is never read
-            ctx = card->ctx;
-            ^     ~~~~~~~~~
-    card-ias.c:361:6: warning: Although the value stored to 'pathlen' is used in the
-          enclosing expression, the value is never actually read from 'pathlen'
-            r = pathlen = stripped_len = offset = 0;
-                ^         ~~~~~~~~~~~~~~~~~~~~~~~~~
-    card-ias.c:361:2: warning: Value stored to 'r' is never read
-            r = pathlen = stripped_len = offset = 0;
-            ^   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-    card-ias.c:361:31: warning: Although the value stored to 'offset' is used in the
-          enclosing expression, the value is never actually read from 'offset'
-            r = pathlen = stripped_len = offset = 0;
-                                         ^        ~
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5174 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 75ef203f27046bd6002ecf6ff9e8fed8c33193c1
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Feb 5 21:58:40 2011 +0000
-
-    Remove dead code
-    
-    card-westcos.c:1066:4: warning: Value stored to 'r' is never read
-                            r = SC_ERROR_INVALID_ARGUMENTS;
-                            ^   ~~~~~~~~~~~~~~~~~~~~~~~~~~
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5173 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6473a883d415711cdba262bab558c80a435799db
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Feb 5 21:57:51 2011 +0000
-
-    Remove dead code
-    
-    card-asepcos.c:446:19: warning: Value stored to 'p' during its initialization is
-          never read
-            u8     buf[64], *p = buf;
-                             ^   ~~~
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5172 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d8cc0e41da7712d9d74132098fcb267aba2f02d0
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Feb 5 21:57:16 2011 +0000
-
-    Add a missing check for NULL before dereferencing
-    
-    card-asepcos.c:312:52: warning: Dereference of null pointer
-                    r = asepcos_parse_sec_attr(card, *file, (*file)->s...
-                                                                     ^
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5171 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8f68f4440dd8155cb990cada17342609135fc44e
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Feb 5 21:54:36 2011 +0000
-
-    Remove dead code
-    
-    card-piv.c:614:2: warning: Value stored to 'buf_end' is never read
-            buf_end = rp + buf_len;
-            ^         ~~~~~~~~~~~~
-    card-piv.c:1129:3: warning: Value stored to 'r' is never read
-                    r = 0;
-                    ^   ~
-    card-piv.c:1478:2: warning: Value stored to 'q' is never read
-            q = rbuf;
-            ^   ~~~~
-    card-piv.c:1628:2: warning: Value stored to 'q' is never read
-            q = rbuf;
-            ^   ~~~~
-    card-piv.c:2456:4: warning: Value stored to 'certobjlen' is never read
-                            certobjlen = 0;
-                            ^            ~
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5170 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8a1431a56d036ee0a9db1d025a78fed5169122e5
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Feb 5 21:51:48 2011 +0000
-
-    Remove dead code
-    
-    card-atrust-acos.c:548:2: warning: Value stored to 'keyID' is never read
-            keyID = env->key_ref[0];
-            ^       ~~~~~~~~~~~~~~~
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5169 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 870a00cc8ad8dd27397e7334fb16b897a93fe1d9
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Feb 5 21:50:48 2011 +0000
-
-    Remove a useless test
-    
-    If card is NULL we can't dereference card->ctx to log an error
-    We must assume card i snever NULL
-    
-    card-oberthur.c:1537:3: warning: Field access results in a dereference of a null
-          pointer (loaded from variable 'card')
-      ...SC_FUNC_RETURN(card->ctx, SC_LOG_DEBUG_NORMAL, SC_ERROR_INVALID_ARGUMENTS)...
-         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-    card-oberthur.c:1537:24: note: instantiated from:
-                    SC_FUNC_RETURN(card->ctx, SC_LOG_DEBUG_NORMAL, ...
-                                   ~~~~  ^
-    card-oberthur.c:2258:3: warning: Field access results in a dereference of a null
-          pointer (loaded from variable 'card')
-      ...SC_FUNC_RETURN(card->ctx, SC_LOG_DEBUG_NORMAL, SC_ERROR_INVALID_ARGUMENTS)...
-         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-    card-oberthur.c:2258:24: note: instantiated from:
-                    SC_FUNC_RETURN(card->ctx, SC_LOG_DEBUG_NORMAL, ...
-                                   ~~~~  ^
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5168 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit dd55567cf96d5509d9166c1237cb0c0de0310e79
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Feb 5 21:45:17 2011 +0000
-
-    Remove dead code
-    
-    card-oberthur.c:1539:2: warning: Value stored to 'prv' is never read
-            prv = (struct auth_private_data *) card->drv_data;
-            ^     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5167 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 28b6b60870a4b5a69164eeb309e7690a93adc59f
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Feb 5 21:44:14 2011 +0000
-
-    Remove dead code
-    
-    card-starcos.c:657:5: warning: Value stored to 'p' is never read
-                            *p++ = file->record_length & 0xff;
-                             ^~~
-    card-starcos.c:652:5: warning: Value stored to 'p' is never read
-                            *p++ = file->record_length & 0xff;
-                             ^~~
-    card-starcos.c:647:5: warning: Value stored to 'p' is never read
-                            *p++ = file->size & 0xff;
-                             ^~~
-    card-starcos.c:609:4: warning: Value stored to 'p' is never read
-                    *p++ = tmp;     /* SM ISF */
-                     ^~~
-    card-starcos.c:572:4: warning: Value stored to 'p' is never read
-                    *p++ = tmp;
-                     ^~~
-    card-starcos.c:1024:2: warning: Value stored to 'keyID' is never read
-            keyID = env->key_ref[0];
-            ^       ~~~~~~~~~~~~~~~
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5166 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9d490bc2739f5bab30a3c1a7db5ef12aad529418
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Feb 5 21:41:24 2011 +0000
-
-    Remove dead code
-    
-    card-mcrd.c:1023:20: warning: Value stored to 'linep' during its initialization
-          is never read
-                    char line[256], *linep = line;
-                                     ^       ~~~~
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5165 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 81581ff6e87e219adde85da07ab98e9a109cb758
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Feb 5 21:39:15 2011 +0000
-
-    Remove dead code
-    
-    card-cardos.c:304:3: warning: Value stored to 'r' is never read
-                    r = 256;
-                    ^   ~~~
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5164 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e46c4ccd1ff1b938f9440a1d4869a2478f5ce0f1
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Feb 5 21:35:17 2011 +0000
-
-    Remove dead code
-    
-    card-flex.c:358:2: warning: Value stored to 'left' is never read
-            left = *p++;
-            ^      ~~~~
-    card-flex.c:358:10: warning: Value stored to 'p' is never read
-            left = *p++;
-                    ^~~
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5163 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 451121f9b5057aca60ab0d46e5ee32d93d04a8d1
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Feb 5 21:34:04 2011 +0000
-
-    Remove dead code
-    
-    card-setcos.c:506:3: warning: Value stored to 'bKeyNumber' is never read
-                    bKeyNumber = 0;
-                    ^            ~
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5162 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a4e314e453c2a06868ef866aa0a5d9c0eda4e8d2
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Feb 5 21:32:28 2011 +0000
-
-    Add missing check code for NULL before dereferencing
-    
-    reader-pcsc.c:1076:3: warning: Dereference of null pointer (loaded from variable
-          'event_reader')
-                    *event_reader = NULL;
-                    ^~~~~~~~~~~~~
-    reader-pcsc.c:1098:3: warning: Dereference of null pointer (loaded from variable
-          'event')
-                    *event = 0;
-                    ^~~~~~
-    reader-pcsc.c:1137:6: warning: Dereference of null pointer (loaded from variable
-          'event_reader')
-                                            *event_reader = ...
-                                            ^~~~~~~~~~~~~
-    reader-pcsc.c:1112:6: warning: Dereference of null pointer (loaded from variable
-          'event_reader')
-                                            *event_reader = NULL;
-                                            ^~~~~~~~~~~~~
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5161 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 67d0a41ed27afaf549dcc87b6b371e1b1cc521e1
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Feb 5 21:18:34 2011 +0000
-
-    Remove dead code
-    
-    muscle.c:417:2: warning: Value stored to 'ptr' is never read
-            ptr += newPinLength;
-            ^      ~~~~~~~~~~~~
-    muscle.c:918:2: warning: Value stored to 'inPtr' is never read
-            inPtr += toSend;
-            ^        ~~~~~~
-    muscle.c:917:2: warning: Value stored to 'left' is never read
-            left -= toSend;
-            ^       ~~~~~~
-    muscle.c:1012:26: warning: Value stored to 'p' is never read
-            ushort2bebytes(p, use); p+=2;
-                                    ^  ~
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5160 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ab589d7c99492ae4be273554aa4f5b639baa72d9
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Feb 5 21:16:10 2011 +0000
-
-    Remove dead code
-    
-    pkcs15-gemsafeV1.c:262:5: warning: Value stored to 'endptr' is never read
-        endptr = (char *)(apdu.resp + apdu.resplen);
-        ^        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5159 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3da2a84b0d98ddaa982e5f0883f58866ea18f1ed
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Feb 5 21:11:59 2011 +0000
-
-    Remove dead code
-    
-    pkcs15.c:1033:3: warning: Value stored to 'r' is never read
-                    r = sc_pkcs15_parse_df(p15card, df);
-                    ^   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-    pkcs15.c:1677:3: warning: Value stored to 'obj_len' is never read
-                    obj_len = p - oldp;
-                    ^         ~~~~~~~~
-    pkcs15.c:1948:4: warning: Value stored to 'r' is never read
-                            r = len;
-                            ^   ~~~
-    pkcs15.c:1942:6: warning: Value stored to 'record_len' is never read
-                                            record_len = head[2] * 256 + head[3];
-                                            ^            ~~~~~~~~~~~~~~~~~~~~~~~
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5158 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f76600b90111e4480613af25d86e650a9b3c4357
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Feb 5 21:09:15 2011 +0000
-
-    Remove dead code
-    
-    apdu.c:166:5: warning: Value stored to 'p' is never read
-                            *p++ = (u8)apdu->le;
-                             ^~~
-    apdu.c:156:4: warning: Value stored to 'p' is never read
-                            p += apdu->lc & 0xff;
-                            ^    ~~~~~~~~~~~~~~~
-    apdu.c:147:5: warning: Value stored to 'p' is never read
-                            *p++ = (u8)apdu->le;
-                             ^~~
-    apdu.c:139:3: warning: Value stored to 'p' is never read
-                    p += apdu->lc;
-                    ^    ~~~~~~~~
-    apdu.c:118:3: warning: Value stored to 'p' is never read
-                    p += apdu->lc;
-                    ^    ~~~~~~~~
-    apdu.c:112:5: warning: Value stored to 'p' is never read
-                            *p++ = (u8)apdu->le;
-                             ^~~
-    apdu.c:107:5: warning: Value stored to 'p' is never read
-                            *p++ = (u8)apdu->le;
-                             ^~~
-    apdu.c:102:4: warning: Value stored to 'p' is never read
-                    *p++ = (u8)apdu->le;
-                     ^~~
-    apdu.c:99:5: warning: Value stored to 'p' is never read
-                            *p++ = (u8)0x00;
-                             ^~~
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5157 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 46946f285f18b8682a14ebeecd6f3a92ea8ccc87
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Feb 5 21:04:28 2011 +0000
-
-    Remove dead code
-    
-    ef-atr.c:41:16: warning: Value stored to 'category' during its initialization is
-          never read
-            unsigned char category = *buf;
-                          ^          ~~~~
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5156 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9906e5af66a6b893478f43330b5abb8a6fa14023
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Feb 5 21:03:28 2011 +0000
-
-    Remove dead code
-    
-    asn1.c:1321:3: warning: Value stored to 'r' is never read
-                    r = 0;
-                    ^   ~
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5155 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 49f19fecb0b9eada4c8f118e0b17dadcc803dbc0
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Feb 5 21:01:35 2011 +0000
-
-    Remove dead code
-    
-    log.c:107:2: warning: Value stored to 'left' is never read
-            left -= r;
-            ^       ~
-    log.c:106:2: warning: Value stored to 'p' is never read
-            p += r;
-            ^    ~
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5154 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f4af7743f144b7e5b89bda706f3d89e023103a38
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Feb 5 21:00:38 2011 +0000
-
-    Remove dead code
-    
-    ctx.c:550:25: warning: Value stored to 'count' is never read
-                            ctx->conf_blocks[count++] = blocks[0];
-                                             ^~~~~~~
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5153 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c8f5ab4fe5ad38bedc0bf2f302842bb354a0c4ea
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Feb 5 20:59:28 2011 +0000
-
-    Fix analyzer warnings. The code looked good.
-    
-    sc.c:667:12: warning: The left operand of '>=' is a garbage value
-            if (tx[2] >= 0)
-                ~~~~~ ^
-    sc.c:656:12: warning: The left operand of '>=' is a garbage value
-            if (tx[0] >= 0) {
-                ~~~~~ ^
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5152 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b6ea61fcf5b031446a3855e3451bb425ee8887f0
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Feb 5 20:54:31 2011 +0000
-
-    Remove dead code
-    
-    pkcs15-authentic.c:692:2: warning: Value stored to 'caps' is never read
-            caps = card->caps;
-            ^      ~~~~~~~~~~
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5151 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 28bf3bf02e036ba8c4721bc874c23adb595f92e5
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Feb 5 20:53:08 2011 +0000
-
-    Remove dead code
-    
-    pkcs15-oberthur-awp.c:143:3: warning: Value stored to 'desc' is never read
-                    desc = "Oberthur AWP container list";
-                    ^      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-    pkcs15-oberthur-awp.c:138:3: warning: Value stored to 'desc' is never read
-                    desc = "Oberthur AWP private object list";
-                    ^      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-    pkcs15-oberthur-awp.c:133:3: warning: Value stored to 'desc' is never read
-                    desc = "Oberthur AWP public object list";
-                    ^      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-    pkcs15-oberthur-awp.c:128:3: warning: Value stored to 'desc' is never read
-                    desc = "Oberthur AWP token info";
-                    ^      ~~~~~~~~~~~~~~~~~~~~~~~~~
-    pkcs15-oberthur-awp.c:122:3: warning: Value stored to 'desc' is never read
-                    desc = "Oberthur AWP private data object info";
-                    ^      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-    pkcs15-oberthur-awp.c:117:3: warning: Value stored to 'desc' is never read
-                    desc = "Oberthur AWP data object info";
-                    ^      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-    pkcs15-oberthur-awp.c:112:3: warning: Value stored to 'desc' is never read
-                    desc = "Oberthur AWP public key info";
-                    ^      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-    pkcs15-oberthur-awp.c:106:3: warning: Value stored to 'desc' is never read
-                    desc = "Oberthur AWP private key info";
-                    ^      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-    pkcs15-oberthur-awp.c:100:3: warning: Value stored to 'desc' is never read
-                    desc = "Oberthur AWP certificate info";
-                    ^      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-    pkcs15-oberthur-awp.c:338:2: warning: Value stored to 'rec_offs' is never read
-            rec_offs = 0;
-            ^          ~
-    pkcs15-oberthur-awp.c:1369:2: warning: Value stored to 'offs' is never read
-            offs += len;
-            ^       ~~~
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5150 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 12a0613da2b9650f58e6c4c96ff83fbd405a72c7
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Feb 5 20:51:02 2011 +0000
-
-    Remove dead code
-    
-    pkcs15-oberthur.c:457:4: warning: Value stored to 'type' is never read
-                            type = SC_PKCS15INIT_USER_PIN;
-                            ^      ~~~~~~~~~~~~~~~~~~~~~~
-    pkcs15-oberthur.c:452:4: warning: Value stored to 'type' is never read
-                            type = SC_PKCS15INIT_USER_PUK;
-                            ^      ~~~~~~~~~~~~~~~~~~~~~~
-    pkcs15-oberthur.c:445:4: warning: Value stored to 'type' is never read
-                            type = SC_PKCS15INIT_SO_PIN;
-                            ^      ~~~~~~~~~~~~~~~~~~~~
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5149 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 041a1449f53a267de9a4682e686ff38d1b283452
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Feb 5 20:50:00 2011 +0000
-
-    Remove dead code
-    
-    pkcs15-myeid.c:251:4: warning: Value stored to 'type' is never read
-              type = SC_PKCS15INIT_USER_PIN;
-              ^      ~~~~~~~~~~~~~~~~~~~~~~
-    pkcs15-myeid.c:244:4: warning: Value stored to 'type' is never read
-              type = SC_PKCS15INIT_SO_PIN;
-              ^      ~~~~~~~~~~~~~~~~~~~~
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5148 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d3a5a1389f5e429b57530ef2db5b43664e0cfcc4
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Feb 5 20:48:56 2011 +0000
-
-    Remove dead code
-    
-    pkcs15-muscle.c:101:3: warning: Value stored to 'type' is never read
-                    type = SC_PKCS15INIT_USER_PIN;
-                    ^      ~~~~~~~~~~~~~~~~~~~~~~
-    pkcs15-muscle.c:99:3: warning: Value stored to 'type' is never read
-                    type = SC_PKCS15INIT_SO_PIN;
-                    ^      ~~~~~~~~~~~~~~~~~~~~
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5147 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b4bdb7274522f8856e5a1a117dedafdb542e250c
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Feb 5 20:47:40 2011 +0000
-
-    Remove dead code
-    
-    pkcs15-incrypto34.c:133:7: warning: Although the value stored to 'r' is used in
-          the enclosing expression, the value is never actually read from 'r'
-      ...r = sc_pkcs15init_authenticate(profile, p15card, file, SC_AC_OP_DELETE)...
-         ^   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5146 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 80ed46d6891523345a5f715ee3837e90a59fb1b1
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Feb 5 20:46:24 2011 +0000
-
-    Remove dead code
-    
-    pkcs15-starcos.c:158:3: warning: Value stored to 'p' is never read
-            *p++ = ipf_file->size & 0xff;
-             ^~~
-    pkcs15-starcos.c:128:3: warning: Value stored to 'p' is never read
-            *p++ = 0x00;    /* SM ISF: no */
-             ^~~
-    pkcs15-starcos.c:239:3: warning: Value stored to 'p' is never read
-            *p++ = ipf_file->size & 0xff;
-             ^~~
-    pkcs15-starcos.c:206:3: warning: Value stored to 'p' is never read
-            *p++ = 0x00;            /* SM ISF: no */
-             ^~~
-    pkcs15-starcos.c:636:4: warning: Value stored to 'p' is never read
-                    *p++ = 0x00;
-                     ^~~
-    pkcs15-starcos.c:613:4: warning: Value stored to 'p' is never read
-                    *p++ = (u8) kinfo->key_reference;       /* CHA byte */
-                     ^~~
-    pkcs15-starcos.c:699:3: warning: Value stored to 'p' is never read
-            *p++ = (u8) kinfo->key_reference;       /* CHA */
-             ^~~
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5145 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 98dd13f44feca3162d1bb10aa27d5431a335f930
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Feb 5 20:45:05 2011 +0000
-
-    Remove dead code
-    
-    pkcs15-jcop.c:118:17: warning: Value stored to 'type' is never read
-                    type = SC_PKCS15INIT_USER_PIN;
-                    ^      ~~~~~~~~~~~~~~~~~~~~~~
-    pkcs15-jcop.c:112:17: warning: Value stored to 'type' is never read
-                    type = SC_PKCS15INIT_SO_PIN;
-                    ^      ~~~~~~~~~~~~~~~~~~~~
-    pkcs15-jcop.c:171:9: warning: Value stored to 'pub_len' is never read
-            pub_len = 2 + mod_len + exp_len;
-            ^         ~~~~~~~~~~~~~~~~~~~~~
-    pkcs15-jcop.c:284:6: warning: Value stored to 'bytes' is never read
-         bytes   = mod_len / 2;
-         ^         ~~~~~~~~~~~
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5144 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 18c144603a489970be7836ddc8b9b0ab668542d5
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Feb 5 20:42:50 2011 +0000
-
-    Remove dead code
-    
-    pkcs15-cflex.c:747:3: warning: Value stored to 'key' is never read
-            *key++ = 0;
-             ^~~~~
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5143 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9df8712b9e5fc1c976696b8ee09efc0f5a5fc262
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Feb 5 20:41:51 2011 +0000
-
-    Remode dead code
-    
-    pkcs15-gpk.c:213:3: warning: Value stored to 'type' is never read
-                    type = SC_PKCS15INIT_USER_PIN;
-                    ^      ~~~~~~~~~~~~~~~~~~~~~~
-    pkcs15-gpk.c:207:3: warning: Value stored to 'type' is never read
-                    type = SC_PKCS15INIT_SO_PIN;
-                    ^      ~~~~~~~~~~~~~~~~~~~~
-    pkcs15-gpk.c:853:3: warning: Value stored to 'pe' is never read
-                    pe++;
-                    ^~~~
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5142 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b8a9abe314947340be5b877c279adaf0d34d3401
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Feb 5 20:38:49 2011 +0000
-
-    Remove dead code
-    
-    pkcs15-lib.c:727:4: warning: Value stored to 'pin_type' is never read
-                            pin_type = SC_PKCS15INIT_USER_PIN;
-                            ^          ~~~~~~~~~~~~~~~~~~~~~~
-    pkcs15-lib.c:1011:3: warning: Value stored to 'pin_type' is never read
-                    pin_type = SC_PKCS15INIT_SO_PIN;
-                    ^          ~~~~~~~~~~~~~~~~~~~~
-    pkcs15-lib.c:1009:3: warning: Value stored to 'pin_type' is never read
-                    pin_type = SC_PKCS15INIT_USER_PUK;
-                    ^          ~~~~~~~~~~~~~~~~~~~~~~
-    pkcs15-lib.c:1505:2: warning: Value stored to 'usage' is never read
-            usage = SC_PKCS15_PRKEY_USAGE_SIGN;
-            ^       ~~~~~~~~~~~~~~~~~~~~~~~~~~
-    pkcs15-lib.c:1507:3: warning: Value stored to 'usage' is never read
-                    usage = sc_pkcs15init_map_usage(args->x509_usage, 0);
-                    ^       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-    pkcs15-lib.c:2560:3: warning: Value stored to 'file' is never read
-                    file = df->file;
-                    ^      ~~~~~~~~
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5141 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit fb9e21d8232fa0960008bed92e2a07919b867f99
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Feb 5 20:29:52 2011 +0000
-
-    Fix a memory leak
-    The initializations are already done a few lines below
-    
-    pkcs15-lib.c:1938:11: warning: Value stored to 'ctx' during its initialization
-          is never read
-                    BN_CTX *ctx = BN_CTX_new();
-                            ^     ~~~~~~~~~~~~
-    pkcs15-lib.c:1937:11: warning: Value stored to 'aux' during its initialization
-          is never read
-                    BIGNUM *aux = BN_new();
-                            ^     ~~~~~~~~
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5140 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 19343c77e26b24df465e773cb37641b8bb6244f2
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Feb 5 20:25:08 2011 +0000
-
-    Remove dead code
-    
-    scconf.c:195:2: warning: Value stored to 'ret' is never read
-            ret = scconf_put_str(block, option, !value ? "false" : "true");
-            ^     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-    scconf.c:585:3: warning: Value stored to 'r' is never read
-                    r = 0;
-                    ^   ~
-    scconf.c:711:3: warning: Value stored to 'r' is never read
-                    r = 0;
-                    ^   ~
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5139 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a8da1aa8866b23a814e77e6367e77bef4bb095e0
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Feb 5 17:47:09 2011 +0000
-
-    Fix compiler warning
-    
-    card-piv.c:2014:7: warning: unused variable 'outp' [-Wunused-variable]
-            u8 * outp = out;
-                 ^
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5138 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 63c293e9630a6dab62497cd0d430cc29b9bf5477
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Feb 5 17:44:56 2011 +0000
-
-    Fix a compiler warning
-    
-    opensc-explorer.c:1440:22: warning: conversion specifies type 'unsigned int' but
-          the argument has type 'size_t' (aka 'unsigned long') [-Wformat]
-                    printf("expecting %u, got only %d bytes.\n", len, r);
-                                      ~^                         ~~~
-                                      %lu
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5137 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1b192154d0b2ef777d372f974112058275017bc4
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Feb 5 17:42:49 2011 +0000
-
-    Fix compiler warning
-    
-    pkcs15-westcos.c:247:8: warning: initializing 'char *' with an expression of
-          type 'char const [8]' discards qualifiers
-            char *name = "WESTCOS";
-                  ^      ~~~~~~~~~
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5136 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b3aee43e96458d814c46662aa480b23aa2b49fb1
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Feb 5 17:34:29 2011 +0000
-
-    Fix a bug. read(2) returns a signed value. read(2) errors were not detected in
-    the previous code.
-    
-    card-piv.c:833:10: warning: comparison of unsigned expression < 0 is always
-          false [-Wsign-compare]
-            if (len < 0) {
-                ~~~ ^ ~
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5135 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6ccb540185f3917e91d8adefa27237f04abbfa54
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Feb 5 17:20:43 2011 +0000
-
-    Fix compiler warning
-    
-    ctx.c:56:1: warning: control may reach end of non-void function [-Wreturn-type]
-    }
-    ^
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5134 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4459b3df6c230eb927a9dce195a85bdd61429a5b
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Feb 5 17:16:54 2011 +0000
-
-    Fix compiler warnings
-    
-    sc.c:406:39: warning: missing field 'usage' initializer
-          [-Wmissing-field-initializers]
-                    SC_AC_NEVER, SC_AC_KEY_REF_NONE, {{0}}, NULL
-                                                        ^
-    sc.c:409:38: warning: missing field 'usage' initializer
-          [-Wmissing-field-initializers]
-                    SC_AC_NONE, SC_AC_KEY_REF_NONE, {{0}}, NULL
-                                                       ^
-    sc.c:412:41: warning: missing field 'usage' initializer
-          [-Wmissing-field-initializers]
-                    SC_AC_UNKNOWN, SC_AC_KEY_REF_NONE, {{0}}, NULL
-                                                          ^
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5133 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9811426bc5274ad4f58ab8e3b400244c125ac3ad
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Feb 5 17:11:18 2011 +0000
-
-    Fix compiled warnings
-    
-    card-authentic.c:1770:1: warning: no previous prototype for function
-          'authentic_manage_sdo_encode_prvkey' [-Wmissing-prototypes]
-    authentic_manage_sdo_encode_prvkey(struct sc_card *card, struct ...
-    ^
-    card-authentic.c:1832:1: warning: no previous prototype for function
-          'authentic_manage_sdo_encode' [-Wmissing-prototypes]
-    authentic_manage_sdo_encode(struct sc_card *card, struct ...
-    ^
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5132 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e2bd5b1cc65a4f7eb329564ace9dbebe71a08ace
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Feb 5 17:05:33 2011 +0000
-
-    Fix compiler warning
-    
-    pkcs15-pubkey.c:787:5: warning: no previous prototype for function
-          'sc_pkcs15_read_der_file' [-Wmissing-prototypes]
-    int sc_pkcs15_read_der_file(sc_context_t *ctx, char * filename,
-        ^
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5131 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c17eb11d41243daf0ca8b3feb61b168df9c9f3d7
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Feb 5 17:04:02 2011 +0000
-
-    Fix compiler warning
-    
-    pkcs15-authentic.c:97:1: warning: no previous prototype for function
-          'authentic_reference_to_pkcs15_id' [-Wmissing-prototypes]
-    authentic_reference_to_pkcs15_id (unsigned int ref, struct sc_pkcs15_id *id)
-    ^
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5130 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 65b65e588b2f04166b3f9b969d52dd26a58712fb
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Feb 5 16:54:28 2011 +0000
-
-    Use & for logical and
-    
-    pkcs15-asepcos.c:518:23: warning: use of logical && with constant operand; switch to bitwise & or remove constant [-Wconstant-logical-operand]
-            *p++ = (fileid >> 8) && 0xff;
-                                 ^  ~~~~
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5129 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 689ac169d485a99fda361e13600b7c01bb6edbe1
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Feb 5 16:37:11 2011 +0000
-
-    Fix compiler warning
-    
-    cards.h:215: warning: function declaration isn’t a prototype
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5128 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1adcc611c2545dfcf2b0b426e917b6d901259c75
-Author: dengert <dengert at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Feb 3 21:18:26 2011 +0000
-
-    Add _sc_delete_reader to allow for a single reader to be
-    deleted from the ctx->readers list. This will be used
-    by cardmod and for consistence by sc_release_context.
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5127 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d57395173cc2cfda46babadf54a50457c5c458e3
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Feb 1 17:32:03 2011 +0000
-
-    EstonianEid: better detection and workaround for the double tag bug with v3.0 cards
-    
-    See wiki:EstonianEid for the description of known issues with the card.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5126 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 13dd0041980bf74d2d94b988d3b8485a4fa355b0
-Author: andre <andre at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jan 27 22:18:16 2011 +0000
-
-    pkcs15.c: Check info->label for NULL before calling strdup(). Avoids segmentation fault in the case where info->label == NULL. Fixes #318.
-    
-    Thanks lmamane.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5125 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 03be5942438957c5ae0cbb3cdb7c7a617b22c5ef
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jan 27 14:25:35 2011 +0000
-
-    core: Fix PIN caching for PIN codes protecting user consent keys, broken in r4048
-    
-    Such PIN codes were erroneously cached in memory, even though not used with revalidation..
-    User consent relates to private keys, not PIN codes.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5124 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9afbc558835685e001ae90b6011817ea4faa768d
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jan 27 14:25:30 2011 +0000
-
-    pkcs15-tool: check for remaining PIN tries before changing a PIN.
-    
-    If the card supports it, changing a blocked PIN will result in an error before PIN entry, not when the card re-states that the PIN is already blocked.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5123 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1ed93af035d6a6ea31068c1730c5923ff88522cc
-Author: ep <ep at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jan 27 08:43:32 2011 +0000
-
-    Amend and update register of IC manufacturers for itacns
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5122 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e033245ad1b41216c7d8c90f76a2a50d452fb7cb
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jan 24 10:59:20 2011 +0000
-
-    MacInstaller: track Tokend branch in Git based on OpenSC release.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5121 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2b04b0c328fc14668e4a6272a5fb761a122d6278
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Jan 22 12:53:09 2011 +0000
-
-    libopensc: calling sc_context_create without parameters is not allowed
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5120 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit dac7b9f7500548d77e2c738b97d4947c75f19717
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jan 20 13:02:50 2011 +0000
-
-    MiniDriver: MS Visual Studio is identified by _MSC_VER not VISUAL_STUDIO
-    
-    http://predef.sourceforge.net/precomp.html#sec35
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5119 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0c263bd234ceb577d5c0128047403cbb831f6904
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jan 20 12:58:39 2011 +0000
-
-    MiniDriver: change cardmod.h include style to help building with compilers which don't have cardmod.h registered in the search path.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5118 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8c51f4212148887810eef435f3944ecb3bf2a072
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jan 20 12:58:30 2011 +0000
-
-    MiniDriver: embed the manifest into minidriver DLL
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5117 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c44ad2c028f0725751c18d6458d6118f55656578
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jan 19 15:06:29 2011 +0000
-
-    MiniDriver: Create cardmod DLL with nmake as well.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5116 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8e81e3912b20932d66b25e9c61a9b5465c84a9a7
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jan 19 14:47:54 2011 +0000
-
-    MyEID: pkcs15init: create all xDF files at the stage of the card initialisation ...
-    
-    it was discussed in
-    http://www.opensc-project.org/pipermail/opensc-devel/2011-January/015620.html
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5115 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6ce28a6adbbcfcc1956cdc224d841a1988686651
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jan 19 14:22:57 2011 +0000
-
-    libopensc: initialize 'sc_ef_atr' type variable
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5114 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2fff7a1e91c657462581f1f82dd0aa019cc0096e
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jan 19 14:16:12 2011 +0000
-
-    pkcs15init: profile: unused variables
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5113 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit bc5ddb7d95b48d773b0185d9600704fc9e372dd4
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jan 19 08:37:07 2011 +0000
-
-    EstonianEid: add new 2011 card ATR (18.01.2011+)
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5112 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e7790508f631eca546bc28c274fde0137d3440d5
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jan 18 16:31:41 2011 +0000
-
-    pkcs15: when setting object data's path, use, if available, the AID from 'DiscretionaryDataObject'
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5111 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 47f997983e1379324649655abd58eddf1af8387c
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jan 18 16:17:15 2011 +0000
-
-    pkcs15: simplify PIN's path assignement
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5110 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 04f9c46d159eef8746b67ac1eb4ba930c8638d7b
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jan 18 16:06:29 2011 +0000
-
-    pkcs15-tool: do not print empty path, print path also when it only has 'aid' member
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5109 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 41c00903219be30f87d56db6ccc352f89a2df44a
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jan 18 16:02:09 2011 +0000
-
-    pkcs15: redesign sc_pkcs15_make_absolute_path() ...
-    
-    - do nothing if child has 'aid';
-    - child inherit the parents's 'aid' if this one exists;
-    - child inherit parents's path of type 'DF NAME' as  'aid';
-    - return if child path is zero length;
-    
-    - finaly concatenate parent and child paths.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5108 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b560561755a1e9efc40bcb7fb2b55d25928fcd3e
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jan 18 10:39:08 2011 +0000
-
-    pkcs15init: when deleting object ignore the object data file selection error 'FILE_NOT_FOUND' ...
-    
-    just update the xDF content.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5107 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5ab90b921924285b3db8c81317f323cb68fca2fa
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jan 18 09:48:26 2011 +0000
-
-    libopensc: avoid using of the not completely initialized 'sc_path' variables
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5106 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5405d74d1970416efbe18239e5a8eaee66b7199f
-Author: andre <andre at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jan 18 04:43:32 2011 +0000
-
-    opensc.conf.in: clean up white spaces
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5105 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 752af86f2b5a9064fde1fe9fc1add04d69f85f49
-Author: andre <andre at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jan 17 21:09:48 2011 +0000
-
-    pkcs15-pin.c: fixes segmentation fault in the case where p15card->app == NULL
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5104 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3efe35d246b9018d2013b2039a99a88e15240107
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jan 17 19:00:52 2011 +0000
-
-    libopensc: avoid the using of not completely initialized 'sc_path' variables
-    
-    to be continued...
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5103 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d1f7e7b8c8aa17880260a5b5bf81ab19e1ee5c05
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jan 17 16:52:04 2011 +0000
-
-    pkcs15init: profile: little fix of the previous commit
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5102 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2adfa05ac88327f649252c0abba4871da37bff5b
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jan 17 16:49:56 2011 +0000
-
-    pkcs15init: profile: use short form of the log message call
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5101 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4c183b2b380ebfe8755e11e6d9f164de6c599789
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jan 17 16:28:44 2011 +0000
-
-    pkcs15init: function to finalize profile when binding to the application of the multi-application PKCS#15 card.
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5100 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 51ab68db83eb9f11639da6586b858ba05fb209a2
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jan 17 16:05:43 2011 +0000
-
-    pkcs15init: profile: redesign 'sc_profile_find_file_by_path()' ...
-    
-    to take into account the non-zero 'aid' member in the 'path' parameter
-    or in the path of the file's instance
-    
-    also take into account the non-zero 'aid' when getting 'file-id'
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5099 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c65bc9023be346098e270f81fdb52e9bccd7a674
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jan 17 15:51:47 2011 +0000
-
-    pkcs15init: profile: new function 'get_parent' ...
-    
-    to get profile instance of the parent of some file presented by it's profile name.
-    
-    ;accept hexadecimal values presented in 'xAB' form;
-    ;coding style issues;
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5098 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1519cb38a16004356151ec07d140b866b3f1280c
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jan 17 15:18:11 2011 +0000
-
-    pkcs15init: profile: handles for 'profile-extention' and 'exclusive-aid' ...
-    
-    'profile-extention' profile parameter used to load from the separate file
-    the AID dependent profile part.
-    
-    'exclusive-aid' profile parameter used to introduce the AID for the DF
-    that do not have file-id and that can be selected only by 'DF-NAME' selection.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5097 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 35a54b511ca4ab8d4b2717dc0dafc4ee8cef009b
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jan 17 14:51:10 2011 +0000
-
-    pkcs15init: profile: sc_profile_finish() accept additional parameter 'application info' ...
-    
-    Each application of the multi-application PKCS#15 card has it's own associated pkcs15init profile file.
-    Profile of the multi-application card contains an association between the ID of the on-card application
-    and associated profile name.
-    
-    When sc_profile_finish() is called
-     - sc_card is connected,
-     - information on the preset on-card applications is available;
-     - AID of the applicaition to be binded is known.
-    thus allowing to sc_profile_finish() to load the final part of the profile.
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5096 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 41731ce56f5dd994bafe3e5c89c089b734f8c9ff
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jan 17 14:03:01 2011 +0000
-
-    pkcs15init: profile: parse new AC operation types ...
-    
-    debug messages and some coding style issues
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5095 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2c6d3ee9fa27e27fa4e29b527dda43a9cd5d5fcb
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jan 17 13:11:21 2011 +0000
-
-    pkcs15: comments and debug messages
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5094 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3fdb9f9e71d91def231c041239df428717fed11e
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jan 17 12:54:15 2011 +0000
-
-    pkcs15: when getting public key data, return 'direct' object value if available
-    
-    add debug messages
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5093 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit fd670f2dce712ad234f8ac2be96490221f824fc1
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jan 14 17:12:04 2011 +0000
-
-    pkcs15: initialize 'supported algorithms' in SE data by the ones from tokenInfo
-    
-    for some cards to prepare security environment for the PSO operation
-    card driver may need the value of 'algRef' attribut of tokenInfo.supportedAlgorithm.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5092 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5e13c7d0835143901b98306d5d1ac1e794b05969
-Author: flc <flc at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jan 14 09:59:42 2011 +0000
-
-    remove unset sc_pkcs15init_finalize_profile function from libopensc.exports
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5091 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 71bfc87282f7820dea18d19fb13feac6b54af22f
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jan 13 15:06:12 2011 +0000
-
-    asn1: spelling of the debug messages
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5090 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2a8fc564027a759fa08aa99c0c9c10ccfa5bf1bc
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jan 13 14:05:19 2011 +0000
-
-    pkcs15: add array with supported algos references to the key info data type ...
-    
-    and imlement API to access it
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5089 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 66412d6e53cd40a31e25d8120aee6acba6788ad1
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jan 13 13:59:22 2011 +0000
-
-    asn1: accept long tag ...
-    
-    According to X.690-0207 ch.8.1.2.4
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5088 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7f5ea5b01370baf6a1207dc1e57b3a0069d4991d
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jan 12 17:41:10 2011 +0000
-
-    libopensc: export sc_find_app(), remove debug message, ...
-    
-    avoid double '::' separator in path_print();
-    touch authentic profile file
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5087 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4c57c899b3f2257798bd7909cdece19ea085832c
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jan 11 16:50:30 2011 +0000
-
-    pkcs15init: add 'aid' argument to prototype of sc_pkcs15init_erase_card() ...
-    
-    used to indicate application to erase
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5086 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a798b2dc0c92992b132c5dac5642223a01c1443c
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jan 11 16:40:49 2011 +0000
-
-    pkcd15init: get PIN reference from SE number when verifying 'SE' secret type ...
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5085 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 76b0a73a80c286e748f33e14622e02689048d952
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jan 11 10:46:09 2011 +0000
-
-    tools: reserve more place for the print path and AID buffer ...
-    
-    to insert the '::' indicator of 'AID' or 'DF_NAME' path type
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5084 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 772ab4cefbfb48cb544c0959fe60ef51723b40c4
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jan 11 10:29:23 2011 +0000
-
-    libopensc: parse EF.ATR: redefine 'STATUS' macros ...
-    
-    thanks to Andre Zepezauer for his precious remarks
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5083 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 56c05c6a6a8d777af1b02eb402eba85034102c8a
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jan 11 10:19:57 2011 +0000
-
-    pkcs15: asn1: extend DDO with 'ddoAID' and 'ddoIIN' ...
-    
-    This extension is used by multi-applications cards when EF.ODF with EF.tokenInfo
-    and xDF with (secure) data objects are placed in a different applications.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5082 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e98dee0092eaf0f2b089f500018f5697ae86c784
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jan 11 10:12:42 2011 +0000
-
-    pkcs15: asn1: local PIN should have a path defined ...
-    
-    if there is no 'path' in the 'PinAttributes', use DDO.AID or application path as a PIN's path.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5081 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a1c3191ba198bfba75a1b33b63ea4a672e990434
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jan 11 10:08:05 2011 +0000
-
-    libopensc: parse EF.DIR: no need to check the presence of mandatory AID after success of ASN1 decoding
-    
-    use "struct sc_aid"
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5080 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8f5f0b684a5de79d4f9660f49dc6bef6059c5a23
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jan 10 14:15:37 2011 +0000
-
-    libopensc: remove non-ISO7816 members from the EF.ATR data, thanks to Andre Zepezauer
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5079 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit fa9ed3add0adee1257d0ca6142a14ce29ec955e2
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jan 10 10:44:52 2011 +0000
-
-    asn1: invalid detection of AID presence in ASN1 path data
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5078 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 40cb9c99b849ab3b077e5389d0ad9ec3e802041e
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jan 9 17:25:09 2011 +0000
-
-    asn1: decode 'extendedPath'
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5077 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit aaa92eeb3de8a8ff1569bfb8d88d4b873730e1b8
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jan 9 17:23:10 2011 +0000
-
-    libopensc: adapt 'make_absolute_path' to the path with valid 'aid' member ...
-    
-    use make_absolute_path() to compose path to 'ODF' and 'tokenInfo'
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5076 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a808379756de0dee41db51e6ff1ec0f125c8c125
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jan 9 17:17:01 2011 +0000
-
-    libopensc: when printing 'path', print also the value of 'aid' if available.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5075 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0fefb0b07842e54da740418908d9da99f842e53c
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jan 9 17:13:14 2011 +0000
-
-    pkcs15-tool: do not print non-relevant to the 'list-applications' context information
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5074 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4ab8018781bab426c99ca6be4e54ed0dd47ff768
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jan 9 10:42:40 2011 +0000
-
-    iso7816: use already defined local variable 'ctx' instead of 'card->ctx'
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5073 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 75c1254e22cee73dfc43ffd762dda9d84a55c30b
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jan 9 10:17:16 2011 +0000
-
-    Initial modifications to support OpenPGP v2.0 (CryptoStick)
-     * Correct naming: openpgp not opengpg
-     * Set the card name from ATR table
-     * Add card type enums
-     * Currently OpenPGP is read-only.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5072 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2d5c76d3d1b6472c2e328ba86f6eab2d606e7724
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jan 9 10:17:08 2011 +0000
-
-    iso7816: Don't translate a returned FCP template from SELECT FILE to "unknown data received"
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5071 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2b47d90dafcf0a604cbf3b69ed2662c1153be492
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jan 9 10:02:43 2011 +0000
-
-    libopensc: to be compiled with Visual Studio
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5070 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2244d0c96f80fc51ed01ba96dbc9166784f2ec09
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jan 9 09:32:34 2011 +0000
-
-    libopensc: procedure to log the card's cache
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5069 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8ee55a38b328edb9780274c3873969b2ca327a6d
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jan 9 09:29:39 2011 +0000
-
-    libopensc: extend DDO data type with the parsed 'aid', 'oid' and 'iid' members
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5068 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b2d885fe34ab5e88d265b439e92f4d9d54c3b49b
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jan 9 09:25:22 2011 +0000
-
-    libopensc: extend serial number to the ISO/IEC 7812 PAN definition
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5067 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f304fed517659d4c7e853294a975e63f8834415e
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jan 9 09:13:47 2011 +0000
-
-    libopensc: add 'crts' array to 'struct sc_acl_entry' ...
-    
-    For some cards the acl bytes, retrived from 'select' response, can reference
-    a SE (and not directly PIN).
-    In such case, to proceed an authentication for the card operation
-    the information about the SE's CRTs is needed.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5066 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8f2c96863a0f6b4876a1d498ba200800fbeebac9
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jan 9 08:51:55 2011 +0000
-
-    libopensc: do not return 'SUCCESS' if EF.ATR do not exist ...
-    
-    debug messages
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5065 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5a7f8a2d6071216174a64d5a503ff70d90b05bb3
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jan 9 08:49:15 2011 +0000
-
-    libopensc: initialize 'sc_path' type variables ...
-    
-    it's needed to initialize the 'aid' member of 'struct sc_path'
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5064 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 42fbe85a5259667f1662719d89ec675c45f0a6f5
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jan 9 08:31:06 2011 +0000
-
-    libopensc: use 'calloc' to allocate application info ...
-    
-    remove unused variable
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5063 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ca382fd93bd7b2d073577dabdf6e9f420f0ac673
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jan 9 08:28:38 2011 +0000
-
-    iso7816: accept 'FCP' tag when processing FCI
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5062 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a57658270121d8e1e0bd2d0803fa9924eb9b05ef
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jan 7 17:18:58 2011 +0000
-
-    libioensc: use 'struct sc_atr' instead of 'u8 *atr, size_t atr_len'
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5061 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit eb4f283c6a6773c7d6ba1c98106cb24c06e8fc69
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jan 7 16:09:39 2011 +0000
-
-    pkcs15: do not call sc_parse_ef_atr() ...
-    
-    it should be called in the 'init' handle of the card driver
-    when EF.ATR is present
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5060 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit bf4aa793af8bdbeca37af02bdb7614ababe7cad4
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jan 7 15:49:10 2011 +0000
-
-    libopensc: parse content of the EF(ATR) file
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5059 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 65cd4562562a47b8157b5f78ca2513b612d99022
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jan 7 15:47:58 2011 +0000
-
-    opensc-explorer: print raw content of 'CONTEXT' tag
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5058 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit cb5b1413914a9a138ebccf61c21ebcc483b3f60b
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jan 7 15:44:13 2011 +0000
-
-    pkcs15: remove unused variables
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5057 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 82adc9361e223fa6de967663d139a5ed0671140d
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jan 7 13:31:30 2011 +0000
-
-    pkcs15: in sc_pkcs15_card include the pointer to the application that the card was binded to
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5056 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e600a1e0ace1d1f06cc36a5f9720868e47d7482c
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jan 7 09:00:39 2011 +0000
-
-    opensc-explorer: in 'asn1' command print raw content of the ASN1_APPLICATION data
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5055 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6af2bc07c3aaf4b66c353622db5a8181f778bc5c
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jan 7 08:55:12 2011 +0000
-
-    PC/SC: don't try to use SCARD_SHARE_DIRECT if there is a card in the reader. This can confuse some card/reader combos.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5054 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit bbcc78046071c7eca90a185047a451213c7bc633
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jan 7 08:50:41 2011 +0000
-
-    pkcs15-tool: in help message move 'list-applications' action to the head of the actions group
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5053 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2f0b83eecd9402def16a8b47440e34d3381294c6
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jan 6 16:21:15 2011 +0000
-
-    pkcs15-tool: new action 'list-applications'
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5052 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 209224816a7a71314ad899c918ba630fb88e3496
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jan 6 16:16:24 2011 +0000
-
-    libopensc: introduce TLV and LV data type, use it to store DDO data
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5051 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b9e25370ab4517c8bec329cf4a16d09a6aad2bcd
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jan 6 14:39:19 2011 +0000
-
-    tools: use 'aid' as the name of option to specify the on-card PKCS#15 application
-    
-    ; update documentation;
-    ; debug messages;
-    ; cleanup the authentic card profile.
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5050 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f2dc077c591c74e825fdcbab9af90b8063f53ea7
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jan 5 16:04:15 2011 +0000
-
-    pkcs15init: use short debug message call
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5049 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0761a61a65403efd86f560341c5f1448c2f6b8a6
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jan 5 15:42:36 2011 +0000
-
-    libopensc: use 'struct sc_aid' instead of 'u8 *aid, size_t aid_len'
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5048 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0611b6260fe6fd30193251a93071b34ee37092ae
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jan 5 15:39:43 2011 +0000
-
-    libopensc: add 'sc_aid' member to 'sc_path' ...
-    
-    not all application DF have and can be selected by its file-id.
-    So, new member in 'sc_path' will help to describe the full path to some EF(DF) inside a card.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5047 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4d81ffcea673f4892bfb908371ffb8e4ea942268
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jan 5 15:22:12 2011 +0000
-
-    pkcs15-tool: new 'bind-to-aid' argument ...
-    
-    to indicate application to bind when more then one on-card application detected
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5046 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 121260b84620f3b04fda162cfaeebe2b5ec67c92
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jan 5 14:53:52 2011 +0000
-
-    pkcs15: some changes to the discovery on-card applications code ...
-    
-    ; 'known' pkcs#15 applications are moved to the head of the card applications array;
-    ; card specific 'bind finalization' code moved to the dedicated procedures;
-    ; remove unused sc_application member, procedures;
-    ; remove commented code;
-    ; add debug messages;
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5045 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ffcc58baf35062f62614ba44648012abb271496e
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jan 5 14:33:32 2011 +0000
-
-    pkcs15init: debug messages
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5044 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7a14e97794db41d0d891786c77244a95bad468b8
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jan 5 14:32:38 2011 +0000
-
-    cardmon: 'bind' prototype has been changed
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5043 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4914b022d10f3128a59e210cbeac613036cd985c
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jan 5 14:29:49 2011 +0000
-
-    pkcs15-tool: new 'bind-to-aid' argument ...
-    
-    indicate application to bind when multi-application card is used
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5042 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f2924672d83fd625f13a2e5ed6cec940d0085369
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jan 5 14:21:04 2011 +0000
-
-    pkcs15: add 'aid' parameter to the prototype of the 'bind' functions ...
-    
-    prepare for the multi-application support
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5041 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 103af724fee340af83e9c1eac7c64b49eaffe1c9
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jan 4 11:33:03 2011 +0000
-
-    liopensc: log: use 'normal' as default debug level ...
-    
-    and make shorter short call to insert debug message
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5040 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3a2e88ce4d3517ebca0655b7c8613aafebacbfd1
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jan 4 10:52:50 2011 +0000
-
-    AuthentIC: remove unused members of the SDO structure
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5039 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 392e6eff98b6cafe268017c8cc2ccb0a4dae5182
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jan 4 09:19:09 2011 +0000
-
-    AuthentIC: use short form to insert 'normal' debug messages
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5038 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit cf7c9fd7262886c5ec6a3572035e22ef202b44cf
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jan 4 09:17:37 2011 +0000
-
-    libopensc: log: short form to insert 'normal' debug message
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5037 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1b7585480cb8a25557a20941111fc6331a24c982
-Author: andre <andre at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jan 3 16:20:19 2011 +0000
-
-    openssl.c: Fixes comparsion between signed and unsigned
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5036 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit be3e50aa9654bf4743211c254c38592648b9054b
-Author: andre <andre at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jan 3 15:10:18 2011 +0000
-
-    framework-pkcs15.c: Fixes two warnings:
-    
-    1 x comparsion between signed und unsigned
-    1 x unused parameter 'flags'
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5035 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 84b93e409988b6749d4df4266a27096f9ecaad34
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jan 3 09:55:14 2011 +0000
-
-    Oberthur: replace 'SC_ERROR_MEMORY_FAILURE' return code by the 'SC_ERROR_OUT_OF_MEMORY'
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5034 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit df92ba16841adc888e2658b661ebfd5cffcce5e8
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jan 3 09:45:51 2011 +0000
-
-    pkcs15init: when deleting file by path, try to get 'DELETE' authentication of the file itself ...
-    
-    then 'DELETE' authentication of parent
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5033 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4fbe00862381f7b2bd5c974cff926c5271c94cff
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jan 3 09:44:10 2011 +0000
-
-    pkcs15init: more of debug messages in profile.c
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5032 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 89d47696dd0898b4aea4abd3b9ad587c7e59e28c
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jan 2 16:26:41 2011 +0000
-
-    AuthentIC: remove unused macros, code layout
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5031 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f8f38e7d8606e9569618d6a3cc98cb53cce1ea09
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jan 2 15:05:42 2011 +0000
-
-    Reject creating files bigger than 64K.
-    
-    Most smart cards currently have only 64K or 128K of EEPROM. This will give better errors earlier for people trying to import huge keyfiles with TrueCrypt.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5030 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0056eeb34c1c2a8f70efb82314496b6dbee8c9cc
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jan 2 15:01:03 2011 +0000
-
-    AuthentIC: memory allocation errors, thanks to Martin
-    
-    for memory allocation errors use SC_ERROR_OUT_MEMORY instead of SC_ERROR_MEMORY_FAILURE
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5029 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 898b62bf5615de6133f709e7e2df269cb3dcd986
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jan 2 14:32:11 2011 +0000
-
-    libopensc: more of debug messages, code layout
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5028 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0b618ab144671d1e0c3764447a094e3b08ad5c82
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jan 2 14:31:35 2011 +0000
-
-    pkcs15-init: AuthentIC: user PIN reference in card profile
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5027 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c7422df6b53d03f5ecdd4d1155bebebc9454cee2
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jan 2 14:31:15 2011 +0000
-
-    opensc-tool: make --list-algorithms know about GOST keys
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5026 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ae9854d7bc7517ed489ce2f85e31d2bd87339c29
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jan 2 14:27:42 2011 +0000
-
-    pkcs15-init: profile: instantiate 'BSO' file
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5025 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 971d643a0aa1f637c08871ae7dc286ea22548f3b
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jan 2 14:25:48 2011 +0000
-
-    libopensc: encode/decode 'direct' public key value
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5024 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d45fb4ca1bdd1bbc1b925a539c058e77a13009c0
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jan 2 14:22:38 2011 +0000
-
-    libopensc: set 'enumerated' flag for xDF if corresponding EF file was successfully read ...
-    
-    it's an extention of r4983, that was not properly working for the existing but empty xDF files.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5023 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4b5bc9900c7d5457d22757e5594d3c5c51e3c75a
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jan 2 14:14:24 2011 +0000
-
-    libopensc: asn1: allow empty path
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5022 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit aec6e175f5164a9d3d87d8bd1419990ac5ffd1e8
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jan 2 14:11:00 2011 +0000
-
-    AuthentIC: read/write/update binary card handles can use the 'WAITING-AREA' reader facility ...
-    
-    when used with virtual reader, the APDUs can be buffered in the reader's
-    internal buffer, before sending it to the distant card.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5021 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6cc1134fac1e692f13c90ac299d713bde28252d0
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jan 2 14:02:47 2011 +0000
-
-    pkcs15-init: 'PSO-*' ACL names in profile
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5020 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a7c75182a1c14b403408f92f3be91a378c52e97a
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jan 2 13:55:03 2011 +0000
-
-    pkcs15-init: no more 'SPLIT-KEY' flag ...
-    
-    more of debug messages
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5019 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3e18e0838d4a842571a8573a7020278304e1823f
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jan 2 12:55:10 2011 +0000
-
-    Fix compiler warning
-    
-    util.c: In function ‘util_getpass’:
-    util.c:348: warning: comparison between signed and unsigned
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5018 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f10d2908a55c9bfe039f33180b4bb49a1a2b4ec1
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jan 2 12:55:03 2011 +0000
-
-    opensc-tool: combined with --verbose, --list-readers will show tha ATR and name of the card, together with extra reader flags
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5017 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 16726a55b5a8380ff227d0aed1dabdbf941f0fcd
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jan 2 12:54:57 2011 +0000
-
-    tools: allow to specify an ATR in the --reader option.
-    
-    This facilitates automated testing on a single machine with several identical readers with inserted cards.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5016 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c911c2ffebd12dab44abe9fffd12ebf8192c78cd
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jan 2 12:54:51 2011 +0000
-
-    PC/SC: add additional flags to indicate readers which are in use and readers which are in exclusive mode.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5015 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d1d64f9dfed286fa3d641560f0da655cdeb26b9e
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jan 2 12:54:44 2011 +0000
-
-    AktivRutokenECP: make opensc-tool -n show the actual token name, based on ATR
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5014 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 83453633b724c5d1bd4b1cf7d33a7f4dd01aed88
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Dec 31 11:09:21 2010 +0000
-
-    libopensc: remove '\n' from the debug message ...
-    
-    'sc_do_log_va' takes care of line ending
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5013 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6aaf1a79e3e651e034a211e96ff997f2646a9f60
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Dec 31 10:52:15 2010 +0000
-
-    AuthentIC: cleanup dead code
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5012 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 682c464540478cb77672c7ab8563bcb82f8c9833
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Dec 31 08:54:07 2010 +0000
-
-    AuthentIC: "now there is no way to build without OpenSSL" (Andre Zepezauer)
-    
-    Thanks for patch.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5011 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7743f6944a8b360077e51dc27e39f6bacbcdf045
-Author: andre <andre at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Dec 31 00:50:30 2010 +0000
-
-    opensc-explorer.c: Fixes usage of size_t variables. According to ANSI C the type of size_t is always an unsigned type.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5010 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5481e61dadbacbff67157635509f086c929df558
-Author: andre <andre at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Dec 31 00:00:00 2010 +0000
-
-    cardos-tool.c: According to ANSI C the type of size_t is always an unsigned type.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5009 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3dce2e08d4753a7caade6088a6372e9924dabe25
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Dec 30 15:10:06 2010 +0000
-
-    WindowsInstaller: generate OpenSC.iss with autotools
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5008 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d644441f5c1e64b49a2ef01d846ef5e789eabd84
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Dec 30 14:42:30 2010 +0000
-
-    AuthentIC:  add profile
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5007 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1a58c429cbed13bed30e561896e747e3051a6d15
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Dec 30 14:40:28 2010 +0000
-
-    'AuthentIC': basic support of Oberthur's 'COSMO.v7/AuthentIC.v3.2' ...
-    
-    it's the natively PKCS#15 card
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5006 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8b270205cce824615ca7128e820ebac2bb51c040
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Dec 30 13:25:09 2010 +0000
-
-    libopensc: API for the 'erase-binary' card operation
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5005 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ee907b7a698041d0921a208de77bb359fbbc305b
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Dec 30 13:20:19 2010 +0000
-
-    libopensc: add new authentication methods, add ACLs to PIN info, ...
-    
-    add 'next' member to 'sc_apdu' structure
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5004 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2804395cf4bd1c62a812822de15a2e380e15a81e
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Dec 30 13:10:28 2010 +0000
-
-    libopensc: revert erroneous commit
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5003 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 92c3e59e16131bbedff1d257f304fc070820b997
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Dec 30 13:04:55 2010 +0000
-
-    libopensc: Now 'cache-valid' flag is a member of 'sc_card_cache' ...
-    
-    add 'current_ef' and 'current_df' member to 'sc_card_cache'.
-    The main purpose of this is to reduce number of APDU transactions.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5002 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 891f98363be6fc0185579c287c7564623bcdbaed
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Dec 30 12:50:35 2010 +0000
-
-    pkcs15init: new 'emulation-store-data' operation ...
-    
-    the first usage is to update the public key PKCS#15 object attributes
-    and to encode it's direct value.
-    (support of the Oberthur's AuthentIC V3.2 card)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5001 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5a9e4b1ca68af405f2d3396253716542df26658d
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Dec 30 12:29:29 2010 +0000
-
-    pkcs15-tool: minor change of the private key info layout
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5000 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f694bbf597b3d61a23ad96f8ecdc97e6458fc811
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Dec 29 10:45:08 2010 +0000
-
-    libopensc: correctly use HAVE_MALLOC_H to include malloc.h
-    
-    See http://www.freebsd.org/cgi/cvsweb.cgi/ports/security/opensc/files/patch-src_libopensc_card-piv.c#rev1.1
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4999 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit abcdb86c4ef93bd664f07c58eef499c1c6b626c3
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Dec 29 10:45:01 2010 +0000
-
-    Fix #302: in C_Logout silently ignore missing card specific logout hooks.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4998 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 33a67cac5bd8f85f4e81d2e679e11ee016bbe68d
-Author: andre <andre at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Dec 22 21:45:43 2010 +0000
-
-    pkcs15.c: Fixes a bug that occurs in the situation where a PKCS15 EF contains partially invalid data. I.e. the last object in the EF is broken and thus can't be decoded successfully. In that case the whole EF becomes never flagged as enumerated. This in turn results in endless processing of that EF. Thereby the first valid objects became attached to the internal obj_list over and over again.
-    
-    That patch prevents the repeated attachment of objects to obj_list, because it marks an EF as enumerated as soon the first object was successfully appended.
-    
-    Left over from #266.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4983 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c514da444ea82d7ca03c864259cd11c0c383ec2a
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Dec 22 17:42:41 2010 +0000
-
-    Move towards 0.12.1
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4982 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 72c0474dde3602f99599aa3b59ca3d83c25f9bf1
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Dec 22 17:12:11 2010 +0000
-
-    Prepare for 0.12.0
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4980 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 791cbd7f53ad2157aa93afac77c175182c5b02f4
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Dec 20 08:57:07 2010 +0000
-
-    Fix r4977: C89 style to support MS Visual Studio
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4979 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ab40e70e04794923d6e83a89a86e3d257671c7ca
-Author: ep <ep at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Dec 19 11:18:43 2010 +0000
-
-    Wrong structure size calculation in pkcs15-itacns.c; thanks to Matteo Nastasi for the heads-up.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4978 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c14831eebdc03985c15c416ae1a0f8adddbcaf9a
-Author: ep <ep at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Dec 19 11:18:40 2010 +0000
-
-    Modified patch for Actalis smart cards. Closes #235.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4977 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 02c4f1ec770fcd05094784305a2877f2791cb0c2
-Author: andre <andre at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Dec 18 00:44:12 2010 +0000
-
-    pkcs11-tool.c: Avoid compiler warning 'may be used uninitialized in this function'.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4968 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b7fad04e10e9266e901fefe0385cfced08d89eee
-Author: andre <andre at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Dec 17 23:02:03 2010 +0000
-
-    pkcs11-tool.c: Simplifies interface to show_key() and avoids more compiler warnings.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4967 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 30bf0f17a84ba76d444b0c5b6e55ac3894bd6c20
-Author: andre <andre at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Dec 17 19:09:24 2010 +0000
-
-    pkcs11-object.c: Add missing initializers.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4966 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b58592d29761a323f07730e6ba82525a9db7a697
-Author: andre <andre at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Dec 17 18:47:41 2010 +0000
-
-    mechanism.c: Removal of unused variables.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4965 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1a5c0aea24e900197d26de5cb106259ce847473d
-Author: andre <andre at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Dec 17 17:54:07 2010 +0000
-
-    framework-pkcs15.c: Avoid some warnings if the macro USE_PKCS15_INIT is undefined. That is always the case if build without OpenSSL.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4964 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit bf28607dd30be57279519da66a255cbb7cdd07db
-Author: dengert <dengert at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Dec 17 17:12:22 2010 +0000
-
-    More ENABLE_OPENSSL changes so sc_pkcs11_register_sign_and_hash_mechanism
-    will not fail.
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4963 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 82824402f4526792a88c10b0f0fc7b6d641d3111
-Author: andre <andre at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Dec 17 16:30:12 2010 +0000
-
-    framework-pkcs15init.c: Add missing initializers.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4962 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7f32e7a0794e09a30fff2eb5402faeae2575dee5
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Dec 17 10:15:11 2010 +0000
-
-    Build 0.12.0-rc2
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4961 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 50567141f028f319ed3eabb7f783cc5a13498c97
-Author: andre <andre at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Dec 16 05:04:37 2010 +0000
-
-    Rename of SC_NO_ERROR to SC_SUCCESS.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4954 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6b10272caabcf69a46c4ecd194e4d695596fc1b4
-Author: andre <andre at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Dec 16 03:56:49 2010 +0000
-
-    framework-pkcs15.c: More specific log messages. Enables better tracking of errors.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4953 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5c6afb6bed6fcd5cfc19390878116337cbf04657
-Author: andre <andre at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Dec 16 01:47:03 2010 +0000
-
-    Add missing initializers. Left over from r4508.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4952 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f9acbf9073db7f48d96d479ca9839c34d6a1122a
-Author: andre <andre at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Dec 15 13:47:58 2010 +0000
-
-    pkcs15.h: Fixing type of parameter to avoid compiler warning: 'comparison between signed and unsigned'
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4951 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 83f393ff0d579db33254982bfe60486504ca35cb
-Author: andre <andre at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Dec 14 03:16:37 2010 +0000
-
-    opensc.conf: Better wording of comments on max_x_size.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4950 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8defdf9aeda9987476823d33832a6eb46f321049
-Author: andre <andre at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Dec 14 03:11:31 2010 +0000
-
-    pkcs15-algo.c: Just making the compiler happy.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4949 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3cfe542813ff9aae7ca9249247484b0d690dee71
-Author: andre <andre at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Dec 14 03:08:17 2010 +0000
-
-    Textual output of SC_ERROR_* return codes in debug messages.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4948 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit eeee3f926fffcc55d77ad1cb62a3fdbe047f18d9
-Author: andre <andre at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Dec 14 01:30:03 2010 +0000
-
-    opensc.conf: Lower the level of emphasise on the max_x_size options. Users with USB devices really shouldn't care about them.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4947 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1b030f5d735e3d9e4d002ad67f9dcba223682802
-Author: andre <andre at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Dec 14 01:19:46 2010 +0000
-
-    pkcs11-pubkey.c: Minor corrections related to r4874 and r4902.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4946 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2eca7061b4ff747634dc40b0c991902c4fc38f5d
-Author: andre <andre at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Dec 14 01:09:44 2010 +0000
-
-    iso7816.c: Fixes #301.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4945 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 05137b7cc181105c1ad938bb3a317332fdd4b182
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Dec 13 14:14:37 2010 +0000
-
-    MacInstaller: add the build date to the DMG label.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4944 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f1293c372d96cb89144d353afc7ae2c9d6d80dbc
-Author: andre <andre at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Dec 13 06:28:37 2010 +0000
-
-    pkcs11-display: Fixing some type mismatches that the compiler complains about.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4943 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c8c291ea079835ab935ac1f9ae4c49566fd99a1b
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Dec 12 13:17:17 2010 +0000
-
-    win32: build of MSI on checkouted trunk ...
-    
-    is possible after 'bootstrap' and 'configure'
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4942 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 26df6abcd92ca23f16cc93424a2cc26f81ea14b0
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Dec 12 11:40:42 2010 +0000
-
-    win32: default install dir 'Program Files\OpenSC Project\OpenSC'
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4941 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 795dbf0342c245362eed5547e17fef923d763054
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Dec 12 10:30:07 2010 +0000
-
-    win32: change path to the OpenSC registry keys
-    
-    Now it begins with "SOFTWARE\\OpenSC Project\\..." .
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4940 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5cc8814e301d747b9326d6a7884f8fd7e3064875
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Dec 11 22:07:07 2010 +0000
-
-    EstonianEid: Add SC_ALGORITHM_RSA_RAW to not make sc_pkcs15_compute_signature remove the DigestInfo header.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4939 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b1287e3ff2b851bec64eff1e73f468fc8c316728
-Author: andre <andre at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Dec 9 19:52:56 2010 +0000
-
-    log.c: Fixes format string to match actual type.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4938 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 35fd3c10c12d4ba6fe5355e482e77c04faf7bc79
-Author: andre <andre at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Dec 9 19:49:42 2010 +0000
-
-    pkcs15.c: Use size_t as type of vector-index.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4937 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit af8e8dc815ac1fe7ba939df922d31ca02de345b0
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Dec 9 09:38:10 2010 +0000
-
-    win32: path to OpenSC registry keys have been changed
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4936 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e259021d36bc03bcd676b0b7b750b730856b6172
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Dec 9 09:23:21 2010 +0000
-
-    win32: change path to OpenSC windows registers
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4935 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit aed53df545940179997c4942ff6c478381801342
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Dec 9 09:21:57 2010 +0000
-
-    win32: test 'BUILD_MSI' condition and build MSI
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4934 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2aa034d467ebcbd73cb0672f3c8b9b37087b270a
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Dec 9 09:17:08 2010 +0000
-
-    libopensc: avoid warning 'not all control paths return a value'
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4933 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ad60428d099c3d7e25952ab5a404710d671e8f3f
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Dec 9 09:16:03 2010 +0000
-
-    win32: build MSI
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4932 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d66b3c71d2391d61a101ac00695b96112d908138
-Author: s <s at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Dec 9 08:23:14 2010 +0000
-
-    fix: implicit depending on the RSA algo_info for GOSTR3410 algo
-    
-    add sc_card_find_gostr3410_alg function
-    
-    Thanks to Douglas E. Engert
-    http://www.opensc-project.org/pipermail/opensc-devel/2010-December/015408.html
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4931 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0dba0368379ed59df0a19b27239ac85529d88cba
-Author: s <s at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Dec 9 07:23:10 2010 +0000
-
-    add to r4904: fix calculating of signature size for CKK_GOSTR3410
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4930 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5f1b3a22883469c6369799e404810520d9613fec
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Dec 8 08:56:12 2010 +0000
-
-    Fix [4911]
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4929 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 559e4f3dc41724a987c638530079b41a98363e94
-Author: andre <andre at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Dec 8 03:31:07 2010 +0000
-
-    framework-pkcs15 [pkcs15_logout]: Better propagation of errors
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4928 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5b69b39c337a014f5482c24b68e4f50cd405573c
-Author: andre <andre at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Dec 6 18:59:49 2010 +0000
-
-    sc_pkcs15_pincache_revalidate: Avoid compiler warning 'discards qualifiers from pointer target type'
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4927 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit de6021d6f2d59af80c10cde4ce5807161d132053
-Author: andre <andre at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Dec 6 18:51:23 2010 +0000
-
-    compat_strlcat: Avoid compiler warning 'no newline at end of file'
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4926 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f5e21e0ba068531dd2d0f0a2d001b062a5203f40
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Dec 6 18:35:43 2010 +0000
-
-    Complete change, SIMCLIST_DUMPRESTORE is by default off.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4925 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ea4ddf8f17437070fcd9fd2bfdce09038a7cb8f9
-Author: andre <andre at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Dec 6 18:33:17 2010 +0000
-
-    pkcs15-pin: If the usage counter of a cached PIN is expired, then free that cached PIN instead of freeing the objects content that is protected by the PIN.
-    
-    If re-validation of a cached PIN fails, then free that cached PIN to ensure that it isn't used again for re-validation.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4924 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3b270b8d27a3ca3fceb222491265117f872c8bda
-Author: andre <andre at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Dec 6 18:15:12 2010 +0000
-
-    pkcs15.c: use int instead of bool as type of configuration option pin_cache_counter
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4923 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 548630971e88b942f6b4e552c1b7b2b815fa0fd8
-Author: andre <andre at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Dec 6 16:28:26 2010 +0000
-
-    pkcs11-tool: replaced OPENSSL_NO_EDSA with OPENSSL_NO_ECDSA
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4922 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d7754073275dc87551777d95461faa789941e9ad
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Dec 6 15:49:49 2010 +0000
-
-    win32: when cleaning delete also manifest files
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4921 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 04c5cb955b2807da625a2c005bbaaf70510f4ced
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Dec 6 15:47:03 2010 +0000
-
-    win32: control from Make.rules.mak the including of 'cardmod'
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4920 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e353c1bf2ff0c7bb2d13b4bb5df39622b442c5a8
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Dec 6 15:20:19 2010 +0000
-
-    win32: 'netkey' and 'westcos' tools are OpenSSL dependents
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4919 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b5f329ba7cee84029a9e44e836daac720d8cf104
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Dec 6 14:41:15 2010 +0000
-
-    tools: EC(DSA) requires OpenSSL >= 0.9.8.
-    
-    This fixes building for OS X 10.5.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4918 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4c2cbeec13fa8240df25977ffe878dfe58248d51
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Dec 6 14:18:42 2010 +0000
-
-    card-piv: remove unused variables.
-    
-    card-piv.c: In function ‘piv_get_data’:
-    card-piv.c:879: warning: unused variable ‘filename’
-    card-piv.c:878: warning: unused variable ‘dataenvname’
-    card-piv.c:877: warning: unused variable ‘keyenvname’
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4917 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 98d2d6db39a3b541cb3416f3cb9f69a0f804101e
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Dec 6 14:18:35 2010 +0000
-
-    PIV: amend [4908], Apple has /usr/include/malloc/malloc.h
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4916 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit eb5871645b93aaffbd5370a748bb56b9e1097cff
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Dec 6 12:52:27 2010 +0000
-
-    entersafe: don't list supported exponents in the dirver.
-    
-    Native keys are generated with exponent 65537, imported keys can now have any (?) exponent.
-    Tested with openssl genrsa -3/-f4 keys.
-    
-    Improves r4910 and closes #297
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4915 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a92f3a80d5068f378ef9543eb8b91cb6c2dc91c7
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Dec 6 12:52:20 2010 +0000
-
-    EstonianEid: limit authentication key usage bits.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4914 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9fe86d16fe55a3f06bd04e3ef0c2f1a45c88a8d3
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Dec 6 12:52:14 2010 +0000
-
-    libopensc: protect for possible buffer overflows from rogue cards.
-    
-    Reported by Rafael Dominguez Vega
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4913 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 37944007aa17156b8503ff9edda3f0b3bae5862c
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Dec 6 12:52:07 2010 +0000
-
-    libopensc: move MIN/MAX macros from muscle.c to internal.h
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4912 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit cd996245b9d099bd9393f85b7322ab2230f3770e
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Dec 6 12:51:59 2010 +0000
-
-    EstonianEid: correctly free the used OpenSSL structures.
-    
-    Thanks to Raul Metsma for the patch.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4911 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5a736c0ac61962b3fece4d1e99396d680c774600
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Dec 6 09:37:23 2010 +0000
-
-    entersafe_init(): add support of RSA exponent 35
-    
-    Closes: Ticket #297
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4910 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 31a33d0b1e77b79efcda5687458b45ee25d57f60
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Dec 6 08:31:59 2010 +0000
-
-    win32: _PATH_MAX not defined when compiling with VS ...
-    
-    use instead the standard FILENAME_MAX
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4909 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0bf12aa1f4b584f803bab9981d6431be68ba13ee
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Dec 6 08:30:00 2010 +0000
-
-    card-piv: avoid warning 'differs in levels of indirection from' ...
-    when compiling with VS
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4908 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3cfcb5cdc6f6b1f6fcbede5d4b07b022c5885ebf
-Author: dengert <dengert at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Dec 3 15:44:29 2010 +0000
-
-    Minor corrections to r4906
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4907 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b7f453703140730944cc6fbb523399f4ea95771f
-Author: dengert <dengert at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Dec 3 15:15:29 2010 +0000
-
-    Test for OPENSSL_NO_EC as some systems build OPENSSL without EC.
-    
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4906 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 471e43c7cb8148a1cad8eb8f564a20ab6a7a6efb
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Dec 2 08:59:26 2010 +0000
-
-    simclist: build with mingw32, Visual Studio and gcc on Linux. By default dumprestore is OFF.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4905 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c2fe4609a919eec756d7ef18af68c660fc2fa409
-Author: dengert <dengert at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Dec 1 20:08:42 2010 +0000
-
-    Modifications to support EC and ECDSA for
-    emulated cards. True PKCS#15 cards with EC
-    will need additional changes.
-    
-    Main changes are in framework-pkcs15.c, mechanism.c,
-    padding.c, pkcs15-algo.c and pkcs15-sec.c
-    where switch statements for key type, and testing
-    of flags was modified to make it easier to add
-    additional key types in the future.
-    
-    The code was tested using RSA and ECDSA using a PIV card
-    from pkcs11-tool, OpenSSL and Thunderbird with
-    modifications to NSS-3.12.7 to get ECDSA to sign e-mail.
-    
-    Only named curves are supported for ECDSA, ECDH is still
-    needed. pkcs11-tool has only minimal changes need to work
-    with the -O option to list EC keys.
-    
-    One additional line was added to pkcs15-sec.c which
-    should get GOSTR sign to work.
-    
-    libp11 and engine do not yet have EC support.
-    
-     --This line, and those below, will be ignored--
-    
-    M    src/tools/piv-tool.c
-    M    src/tools/pkcs11-tool.c
-    M    src/pkcs11/framework-pkcs15.c
-    M    src/pkcs11/mechanism.c
-    M    src/pkcs11/pkcs11-object.c
-    M    src/libopensc/pkcs15-prkey.c
-    M    src/libopensc/card-piv.c
-    M    src/libopensc/padding.c
-    M    src/libopensc/cardctl.h
-    M    src/libopensc/pkcs15-algo.c
-    M    src/libopensc/libopensc.exports
-    M    src/libopensc/pkcs15-piv.c
-    M    src/libopensc/pkcs15-sec.c
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4904 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e2bd16ecd07adf99acd8c4abe492b6aa985992fe
-Author: dengert <dengert at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Nov 30 19:30:03 2010 +0000
-
-    Additional EC routines  _sc_card_add_ec_alg and sc_card_find_ec_alg
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4903 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c34caeb6625fe80550b22f8e5740f9d8a6f198da
-Author: dengert <dengert at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Nov 30 19:13:48 2010 +0000
-
-    Support for ECC keys (part 1) header files and
-    support routines. Add definitions for EC keys,
-    parameters and extensions to structures.
-    Add the sc_card_find_ec_alg, sc_pkcs15_decode_pubkey_ec,
-    sc_pkcs15_encode_pubkey_ec, sc_pkcs15emu_add_ec_prkey,
-    sc_pkcs15emu_add_ec_pubkey routines.
-    Only EC named curves are currently supported.
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4902 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 137a7282ad78f6669b983ec64c8b818d4662be96
-Author: dengert <dengert at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Nov 30 15:57:01 2010 +0000
-
-    Allow emulation routine to setup an emulated object
-    to be used instead of trying to read a file.
-    This will be used  with the ECC code.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4901 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e642436fc67e66ea748e100a01499b959a08367b
-Author: dengert <dengert at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Nov 30 15:32:58 2010 +0000
-
-    SPY does not process CKA_ALWAYS_AUTHENTICATE
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4900 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c16179f75abf6a0ffe1058e4f8903176620f6147
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Nov 30 12:33:24 2010 +0000
-
-    EstonianEid: Don't leak 1024bit key to 2048b card properties
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4899 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 185d46f3c9a11587750ed9e4e3efa8c723473cb8
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Nov 30 12:33:04 2010 +0000
-
-    simclist: Visual studio does not have unistd.h
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4898 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 424ef32dfc4dab25adf90bd253d5778779a56c09
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Nov 30 11:22:38 2010 +0000
-
-    libopensc: fix building new simclist with mingw
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4897 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7ab591a6840f7017d673300a5262305e0ee2d1e0
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Nov 30 11:22:31 2010 +0000
-
-    libopensc: make sc_reset() take an additional parameter "do_cold_reset" which will unpower the card.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4896 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5d9c02b197e1d7d56f73a5fb4f1eb5045bd3524d
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Nov 29 14:22:15 2010 +0000
-
-    ISO 7816: if decrypting with 2048 keys, non-extended APDU cards require command chaining (Lc would be 257, which is 2 bytes over 255 limit)
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4895 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b33a44fdf0adbf4fda5c951f8002042d51fc5ac0
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Nov 29 14:22:09 2010 +0000
-
-    pkcs11: clean up mechanism registration
-     * check for out of memory conditions
-     * register SHA256 as well
-     * key generation depends on onboard key generation capabilities, not OpenSSL
-    
-    Further adjustments are needed.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4894 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 113dfda49403655abb8285a984b46a9396544bdf
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Nov 29 14:22:01 2010 +0000
-
-    EstEID: add support for v 3.0 cards with 2048b keys
-     * Detect different cards based on ATR-s and on card objects
-     * Set the card name from the ATR table
-     * Conditionally add support for 2048b keys
-     * Add workarounds for broken MULTOS and JavaCard cards.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4893 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5c32c15b60f8ac3c01dbd6506a659b67d413fb47
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Nov 29 13:56:27 2010 +0000
-
-    Revert a protocol forcing change from [4873] which was a mistake.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4892 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c1c3aa1d55c176a0c37d71263ad568b0fd6486f4
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Nov 29 13:56:19 2010 +0000
-
-    PC/SC: make (dis)connect actions configurable, SCardDisconnect, SCardEndTransaction and SCardReconnect
-    actions can now be configured via opensc.conf in better detail.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4891 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 77c8cfc37dd005f46eed83544336c4543c2fe746
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Nov 29 13:35:06 2010 +0000
-
-    pcsc: a change in ATR will not always mean a changed card, rely on PC/SC layer for card change information.
-    
-    One of the few cards that has two different ATR-s is the EstonianEid card. The changing ATR (especially if
-    it has different protocol information and historical bytes) can cause confusion in many places, like
-    Microsoft BaseCSP or certain versions of pcsc-lite.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4890 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6fc7e62f207eaaf5c98583a9658712129b7f218a
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Nov 29 13:34:54 2010 +0000
-
-    conf: correct comments about OpenSC.tokend score meaning and default value.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4889 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit acb54b965fd1e115bf5b3270333ef1a937725f29
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Nov 29 08:51:25 2010 +0000
-
-    typo: remove double semicolon which prevents compilation with Visual Studio.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4888 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c4a9ab67326c8c790ec224ae4cfcee42539ae2cb
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Nov 29 08:51:17 2010 +0000
-
-    WindowsInstaller: overwrite files with same version to allow nightly builds; replace and delete blocked files on a reboot.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4887 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 636b0c1d2726d587ee0fbd8bb21e9e028189f209
-Author: andre <andre at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Nov 29 00:58:12 2010 +0000
-
-    framework-pkcs15: Do not populate the unwrap capability, because the corresponding function C_UnwrapKey isn't implemented.
-    
-    http://www.opensc-project.org/opensc/browser/trunk/src/pkcs11/pkcs11-object.c?rev=4885#L969
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4886 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit fd11c909bd4ef5ba6d21d15dfd4d0ef141c3a1bd
-Author: andre <andre at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Nov 28 23:46:12 2010 +0000
-
-    pkcs11-tool: Completing the output of "Mechanism Information Flags".
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4885 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 146041fcee72652ca27530a1500f45e278d7ac37
-Author: andre <andre at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Nov 28 22:16:50 2010 +0000
-
-    pkcs11-tool: Correcting the behaviour in the case where C_SignUpdate fails. Quotation from PKCS#11:
-    
-    "A call to C_SignUpdate which results in an error terminates the current signature operation."
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4884 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b63a601666c5fcb23b3da05164db23241f586d7b
-Author: andre <andre at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Nov 28 18:09:30 2010 +0000
-
-    pkcs11-tool: Use attributes MODULUS and PUBLIC_EXPONENT instead of VALUE to retrieve RSA-Public-Key. The first two attributes are valid whereas the latter is not.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4883 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit cf92133cefa964bc6f8b161fd10ad09dd886a85f
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Nov 26 12:57:53 2010 +0000
-
-    Update from SimCList version 1.5
-    http://mij.oltrelinux.com/devel/simclist/
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4882 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0eb404b2e6957c24c6312c086d642d5afe23e06f
-Author: andre <andre at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Nov 25 00:20:21 2010 +0000
-
-    pkcs11-display.c: more detailed less verbose output of CK_ATTRIBUTE lists
-    
-    http://www.opensc-project.org/pipermail/opensc-devel/2010-November/015321.html
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4881 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 09131a4e9f010a640279cd74bf3c4671b4c3957d
-Author: dengert <dengert at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Nov 24 20:28:30 2010 +0000
-
-    Fix support for CKU_ALWAYS_AUTHENTICATE and CKU_CONTEXT_SPECIFIC
-    spy segfaulted if CKU_CONTEXT_SPECIFIC was used,
-    pkcs11-session was reseting the userType before calling
-    framework.  Framework will now see CKU_CONTEXT_SPECIFIC
-    and use slot->login_user to determine which PIN was used
-    to create the original session, and will send the PIN
-    to the card. It does not treats CKU_CONTEXT_SPECIFIC
-    as a full login, only a reassertion of the PIN.
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4880 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c9ad140394091d1e7392406f4a3076809548778f
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Nov 20 09:30:26 2010 +0000
-
-    sc_pkcs15emu_postponed_load is no more defined
-    
-    Compilation fails on Mac OS X (but not on GNU/Linux):
-    Undefined symbols:
-      "_sc_pkcs15emu_postponed_load", referenced from:
-       -exported_symbol[s_list] command line option
-    ld: symbol(s) not found
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4879 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 821f4fef6d1b9f53d5458ed91788c62ab68d1a9b
-Author: andre <andre at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Nov 19 18:09:04 2010 +0000
-
-    card.c: Fixes the overriding of max_x_size limitations. In the result, the limitations of cards are adjusted to fit the limitations imposed by the configured reader.
-    
-    ctx.c: Lookup conf_block of reader_driver by short_name
-    
-    Fixes #269
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4878 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5a183a8dc706561af10e524fa1d9d3cb57e8ef73
-Author: andre <andre at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Nov 18 23:31:08 2010 +0000
-
-    framework-pkcs15.c: new logic to discover objects that were hidden before PIN verification
-    pkcs15.c: object search continues with normal processing, even if enumeration of some files failed
-    pkcs15.h: obsolete prototype removed
-    pkcs15-syn.c: now obsolete function sc_pkcs15emu_postponed_load removed
-    
-    fixes: #266
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4877 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0ad67713469e1e3fa5748fa9e68844f0108d4829
-Author: andre <andre at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Nov 18 18:47:42 2010 +0000
-
-    {{{more verbose messages for debug in:__sc_pkcs15_search_objectssc_pkcs15_parse_dfsc_pkcs15_read_file}}}
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4876 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit bcef13cfd2724d65b2a4372959d21494c1fd785c
-Author: andre <andre at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Nov 18 14:56:26 2010 +0000
-
-    In login() the flag CKF_LOGIN_REQUIRED is now ignored. This makes the behaviour of login() more predictable. If parameter --login is specified on the command line, then C_Login() is always called.fixes #220
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4875 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d1aa716bec0bf0ae21dc4e50e1746bc750b660dc
-Author: dengert <dengert at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Nov 8 17:05:40 2010 +0000
-
-    Move decoding of subjectPubkeyInfo from pkcs15-cert.c
-    to pkcs15-pubkey.c and call the new sc_pkcs15_pubkey_from_spki.
-    Add sc_pkcs15_pubkey_from_spki_filename to allow a file to
-    contain the subjectPubkeyInfo, which will be used the the PIV
-    driver when EC is implemented. The format of the file, is the
-    same as an X509 certificate subjectPublicKeyInfo and what
-    OpenSSL calls an EVP_PKEY, which includes the algorithm,
-    any parameters and the public key.
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4874 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c6eb9d3d925f51fafd6bccaf87ed8a3e918a0a1c
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Nov 8 12:37:22 2010 +0000
-
-    PC/SC: move protocol (T=0/T=1) selection to reader-pcsc.c, where it is used.
-    
-    Also, check fot the required protocol before connecting to the card and use the forced prtocol instead of re-connecting.
-    
-    See http://lists.drizzle.com/pipermail/muscle/2010-November/008671.html
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4873 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5e909df85da8760042f44022d1985eec15b2646c
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Nov 8 12:29:15 2010 +0000
-
-    Amend r4871: prevent mingw32 from including an incompatible getopt version.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4872 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ab6511cb63626bd5231edc29ffa135362831baed
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Nov 8 11:17:09 2010 +0000
-
-    Trac #264: fix mingw32 build with mingw32-runtime versions <= 3.13
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4871 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2e9c72ec5e63668a8c7a0acef53530b95fce5069
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Nov 6 18:07:04 2010 +0000
-
-    Use 'const char *' instead of 'char *' for static strings and avoids a
-    lot of "discards qualifiers from pointer target type" warnings
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4870 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 96deb9d4d45aca9721a61a2ad6985d509d614027
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Nov 6 18:05:21 2010 +0000
-
-    Use 'const char *' instead of 'char *' for static strings and avoids a
-    lot of "discards qualifiers from pointer target type" warnings
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4869 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c64cb12f2fcf47952269d19a382c801041ad8594
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Nov 6 17:07:13 2010 +0000
-
-    pkcs15-tcos.c: In function ‘insert_pin’:
-    pkcs15-tcos.c:216: warning: declaration of ‘r’ shadows a previous local
-    pkcs15-tcos.c:194: warning: shadowed declaration is here
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4868 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 07ccc3965e43a08a74ad69bf1d190a41c3f1d938
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Nov 6 17:05:32 2010 +0000
-
-    pkcs15-tool.c: In function ‘verify_pin’:
-    pkcs15-tool.c:976: warning: declaration of ‘r’ shadows a previous local
-    pkcs15-tool.c:972: warning: shadowed declaration is here
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4867 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8dd3b98b1d2d69a9a82de3b8000466770d042171
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Nov 6 17:04:04 2010 +0000
-
-    pkcs15-tool.c:150: warning: initialization discards qualifiers from pointer target type
-    pkcs15-tool.c:151: warning: initialization discards qualifiers from pointer target type
-    pkcs15-tool.c:152: warning: initialization discards qualifiers from pointer target type
-    pkcs15-tool.c:153: warning: initialization discards qualifiers from pointer target type
-    pkcs15-tool.c:154: warning: initialization discards qualifiers from pointer target type
-    pkcs15-tool.c:155: warning: initialization discards qualifiers from pointer target type
-    pkcs15-tool.c:156: warning: initialization discards qualifiers from pointer target type
-    pkcs15-tool.c:157: warning: initialization discards qualifiers from pointer target type
-    pkcs15-tool.c:158: warning: initialization discards qualifiers from pointer target type
-    pkcs15-tool.c:159: warning: initialization discards qualifiers from pointer target type
-    pkcs15-tool.c:160: warning: initialization discards qualifiers from pointer target type
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4866 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3c12d20bfa5da59bc7845af012bde1a7ec369247
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Nov 6 17:01:17 2010 +0000
-
-    piv-tool.c: In function ‘gen_key’:
-    piv-tool.c:292: warning: declaration of ‘newkey’ shadows a global declaration
-    piv-tool.c:97: warning: shadowed declaration is here
-    piv-tool.c: At top level:
-    piv-tool.c:97: warning: ‘newkey’ defined but not used
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4865 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9c433a9cce6ddadd4360dd2066b9397a3be6d2c1
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Nov 6 17:00:09 2010 +0000
-
-    pkcs11-object.c: In function ‘C_DigestInit’:
-    pkcs11-object.c:455: warning: label ‘out’ defined but not used
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4864 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2a4cdd4d579847f4afbd0bf31b9a6db3d894a838
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Nov 6 16:58:33 2010 +0000
-
-    pkcs15-pteid.c: In function ‘sc_pkcs15emu_pteid_init’:
-    pkcs15-pteid.c:56: warning: ‘buf’ may be used uninitialized in this function
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4863 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 512be83138cc82233e8575f2ada5dc7d003d4d1a
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Nov 6 16:57:05 2010 +0000
-
-    ctx.c: In function ‘sc_ctx_detect_readers’:
-    ctx.c:548: warning: ‘r’ may be used uninitialized in this function
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4862 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3ac5bb4ba1ab26b244726908c9ab903c861cf445
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Nov 6 16:54:57 2010 +0000
-
-    Declare internal functions as static and fix compiler warnings
-    
-    card-itacns.c:90: warning: no previous prototype for ‘itacns_match_cns_card’
-    card-itacns.c:125: warning: no previous prototype for ‘itacns_match_cie_card’
-    card-itacns.c:146: warning: no previous prototype for ‘itacns_match_card’
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4861 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f841b88e06c142e1e5d09525528546a5a5596846
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Nov 6 16:53:11 2010 +0000
-
-    opensc-explorer.c:89: warning: function declaration isn’t a prototype
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4860 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3aea304a8e0381c9364450085c1a0e5b7636bcbc
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Nov 6 16:50:41 2010 +0000
-
-    sc_do_log_va(): fix compiler warning
-    log.c:87: warning: format ‘%03ld’ expects type ‘long int’, but argument
-    8 has type ‘int’
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4859 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 98fdeaa0b6c8763a0cf5b5aa0f7fbb2b7765f87c
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Nov 6 16:49:00 2010 +0000
-
-    C_LoadModule(): Fix compiler warning
-    libpkcs11.c:58: warning: format ‘%lx’ expects type ‘long unsigned int’,
-    but argument 3 has type ‘int’
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4858 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6f5f29eee9cf356e35ce4e331a1252241090d7eb
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Nov 6 13:03:46 2010 +0000
-
-    Revert revision 4853 because of a regression when initialing cards
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4857 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 70ead491fc7b0df62c1e59674f3696244aa3771b
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Nov 2 08:02:13 2010 +0000
-
-    sc_pkcs15init_read_info(): do not use affectation and test in the same
-    line of code but use two different lines so the code is easier to read.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4854 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 93f5e24e1311717412c110fae2a72fc22afb193f
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Nov 2 07:59:46 2010 +0000
-
-    sc_pkcs15init_read_info(): do not call sc_pkcs15init_parse_info() if
-    sc_select_file() failed.
-    
-    Thanks to Andre Zepezauer for the patch
-    http://www.opensc-project.org/pipermail/opensc-devel/2010-November/015216.html
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4853 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 641ea4eddd88e702e58055849d0e8879bc91ac4d
-Author: dengert <dengert at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Nov 1 15:44:17 2010 +0000
-
-    Fix compile warning message.
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4852 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8af1b60afdad95f569279528ff96dda9d1d4e9f8
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Oct 28 13:33:50 2010 +0000
-
-    PC/SC: temporarily disable blocking C_WaitForSlotEvent until a checked version for pcsc-lite 1.5.3-1.6.4 exists.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4835 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit df639efd89d19e1b0aa14ab8ae3548dfb91444e5
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Oct 28 13:11:13 2010 +0000
-
-    EstonianEid: revert to old behavior and have the T=0 forcing.
-    
-    Some cards have incorrect ATR-s and can cause troubles if pcsc-lite by default tries to set T=1 by default.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4834 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8156095b46adc8466d470775168a622a957bff19
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Oct 28 09:44:22 2010 +0000
-
-    FIXME: Don't issue SCardCancel unless the environment is known not to hang (part 1)
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4833 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 31b0a05aaf0bcd41721fb3de4f5f60a0b6431f4a
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Oct 28 05:30:09 2010 +0000
-
-    EstonianEid: document more ATR-s in opensc.conf
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4832 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit bd93b976741fc736a9fb5b378ebccc3a2ddfdaa9
-Author: dengert <dengert at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Oct 25 20:58:02 2010 +0000
-
-    Additianl changes to r4805  which made cert->pubkey a pointer to sc_pkcs15_pubkey_t
-    Thanks to Andre Zepezauer for pointing out most of these.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4828 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 150d26d51edbb4045476d0bb0da2d54952a33bbc
-Author: s <s at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Oct 23 06:54:56 2010 +0000
-
-    fix: opensc-tool: invalid output of access control for EF (add to r4509)
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4826 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6648255cb0fcc2f5dbb8cf4694fcd93eb1b5c084
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Oct 22 15:48:04 2010 +0000
-
-    EstonianEid: add a broken EstEID ATR to the Micardo driver. Don't force a protocol for EstEID cards
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4825 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 50f4ba5ad084040b848b211c5ea2aaef9fbc3a09
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Oct 21 13:53:58 2010 +0000
-
-    build: detect xsl-stylesheet location for latest opensuse.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4824 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ed81328db66ce56d42cfb4bf21ea6934580e5861
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Oct 21 12:17:51 2010 +0000
-
-    detect man by xslstylesheetsdir too
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4823 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8ebde203ee3ac3b66b569fdcf5cf852e23f1cc42
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Oct 21 04:28:01 2010 +0000
-
-    bug#262 - force xsl-stylesheets when using man/doc
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4822 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit df2d7d1dd1c2cad45f3cbb5d30cd50c3986ad327
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Oct 20 15:04:31 2010 +0000
-
-    EstEID: remove incorrect ATR matching. A reset is required as there is no way simpler way to identify a broken card.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4821 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit fa0e236881e7b498716b68d2650e68d46196175c
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Oct 20 12:33:07 2010 +0000
-
-    Missed these from r4818
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4820 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f7000a93c1b57e71c0b777d04f435e6a8d4fc0da
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Oct 20 08:48:56 2010 +0000
-
-    EstEID: add workarond for a buggy card.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4819 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6a750e6cc0f5d8ec9e2ed4b597503938c57e57b3
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Oct 20 07:53:19 2010 +0000
-
-    tools: -v sets ctx->debug only if set more than once. -vv also makes the debug go to stderr.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4818 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2d6e3bd262db664c1114e13e49ad16c5dce485e7
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Oct 19 11:25:25 2010 +0000
-
-    EstonianEid: remove the iconv dependency and use the common name from the certificate as the card label.
-    
-    This makes it universal, as some cards don't have the personal data file (Digi-ID)
-    It also makes it a bit ugly, as the common name is the name and personal ID code
-    concatenated like "FIRSTNAME,LASTNAME,123456789"
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4817 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 08c111affe4acceea8236ebf3de631dfc26f4817
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Oct 15 14:29:42 2010 +0000
-
-    Update documentation about about wiki and package content.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4810 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 23b64f88d268d268e46f13261a670bc038bc3eb2
-Author: flc <flc at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Oct 15 13:37:37 2010 +0000
-
-    fix sc_pkcs15_card_t struct change in cardmod.c and issue in reader_pcsc.c for cardmod part too
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4809 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3076fe265c420dfbf1db07580b4830a1afc839c1
-Author: flc <flc at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Oct 15 08:07:34 2010 +0000
-
-    Fix patch [4709] for cardmod until build in one static dll
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4808 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a569bf9646b4bafb74f594c2a74401c91339b6ba
-Author: dengert <dengert at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Oct 14 19:55:57 2010 +0000
-
-    Fix test code so will work with card with real history object.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4807 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f194c873d0e486039b31ed47fbead3433441f9b6
-Author: dengert <dengert at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Oct 14 14:59:51 2010 +0000
-
-    Fix 253 third fix for same problem. The first fix
-    r4761 added a test in the wrong place. Second fix
-    r4804 added the test in the correct place. This fix
-    removes one of the tests added by r4761
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4806 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0f2a44b33e24da75c760d1a2c40e755324ff03d1
-Author: dengert <dengert at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Oct 12 15:26:45 2010 +0000
-
-    sc_pkcs15_pubkey_from_cert now uses parse_x509_cert without OpenSSL.
-    sc_pkcs15_cert now has pointer to sc_pkcs15_pubkey, allowing it to
-    be removed and used separatly.
-    sc_pkcs15_pubkey now has pointer to sc_algorithm_id to faclitate
-    addition of other key algorithms and their parameters.
-    Various code changes to free these structures and references
-    to the structures have been changed.
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4805 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6b4cb93c84e845092ee1a20947f3ffbdecc89fa0
-Author: dengert <dengert at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Oct 8 14:53:29 2010 +0000
-
-    Fix #253 - Allow caller to read a partial object
-    by returning all that was read. Related to #257
-    which fixed a different path in apdu.c
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4804 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 364ba4882d3505047c51fa2054f93c50d541ec1b
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Oct 8 08:36:56 2010 +0000
-
-    pkcs11-tool: handle non-recognized tokens gracefully.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4803 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit fad0116feffd312b8b1b17ce9fff0deb99b8f4ec
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Oct 8 08:36:48 2010 +0000
-
-    pkcs11-tool: if no slot is specified on the command line, try to locate a slot with a token.
-    
-    A modified patch from Andre Zepezauer.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4802 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0d96b3c9c38e06d610e14f50280e50905a040a84
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Oct 7 15:12:12 2010 +0000
-
-    oberthur: from the common part remove the Oberthur specific tokenInfo flags
-    
-    Thanks to Andre Zepezauer for the patch.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4800 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 233ea02f8a8dd405e4a241b41fc1bc1f0b6ff6df
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Oct 7 13:43:45 2010 +0000
-
-    doc: Remove wiki links from README
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4799 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6410da59a9d3150ea4366f6f0ca7b5a68be4c9c1
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Oct 6 07:54:08 2010 +0000
-
-    PC/SC: better detection of card changing events.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4798 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4a79acd827e2adb017d3aec169edc8df47af869f
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Oct 6 07:54:03 2010 +0000
-
-    Prepare for OpenSC 0.12.0-rc1
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4797 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 61572d590ae9d45738788aecef9877d99890f5cc
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Oct 6 07:53:59 2010 +0000
-
-    WindowsInstaller: be flexible with make dist result name.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4796 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit dfe8a014b937e13261d55f1cde5fbdb9721e9bd1
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Oct 6 07:15:32 2010 +0000
-
-    Fix leftover from r4646
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4795 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit dcd077243fbd164531f84fdf4e78d5dc272a1eb5
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Oct 6 07:10:50 2010 +0000
-
-    WindowsInstaller: simplify the installer creation process
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4794 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 19da5d8f16ab942d48ed2774e2b5e2a16920d20f
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Oct 6 07:10:44 2010 +0000
-
-    WindowsInstaller: Fix Mingw32 Windows build
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4793 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ace8d25ecb721743b6ce240051ee0d99167d94c9
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Oct 5 20:37:08 2010 +0000
-
-    Update svn:ignore
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4792 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8a1903345e41cbf282d599e0c9bdab6c57a1f616
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Oct 5 20:34:58 2010 +0000
-
-    Simplify build system, remove the generated distributed files.
-    
-    Thread is at [1].
-    
-    Build with docs or man now requires xsltproc.
-    
-    http://www.mail-archive.com/opensc-devel@lists.opensc-project.org/msg06750.html
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4791 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 36f1fbb6551349fe19d50aa185f6bdd6c608710c
-Author: joao <joao at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Oct 5 16:10:35 2010 +0000
-
-    Add new ATR for the Portuguese eID card.
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4790 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f5a21e417b46aee5e276672d525b85d2a4598d46
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Oct 5 16:02:57 2010 +0000
-
-    pkcs15: don't play with TokenInfo.version. 0 means PKCS#15 v1.1. The flag is not used by OpenSC.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4789 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 50f99a20f859b77e58fc2a73e27113646eda9e2e
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Oct 5 15:44:58 2010 +0000
-
-    libopensc: move TokenInfo fields from sc_pkcs15_card_t to a separate structure.
-    
-    Thanks to Andre Zepezauer for the patch.
-    
-    See http://www.opensc-project.org/pipermail/opensc-devel/2010-September/015076.html
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4788 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 14752f0c43621fb75b95e54598863a375923a89b
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Oct 5 15:12:10 2010 +0000
-
-    Remove now unused variables.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4787 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 192de4199c7f4285815be75ea8b3d9f4cea5fb72
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Oct 5 14:58:55 2010 +0000
-
-    libopensc: remove unused SC_CTX_MAGIC define
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4786 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c51156875f0fdc71d4f4ed279930c3c92bff3357
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Oct 5 14:58:50 2010 +0000
-
-    libopensc: remove meaningless sc_card_valid()
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4785 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 75a10198fc4bc9c80774a5f5f20c5d6de39d574c
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Oct 5 14:58:45 2010 +0000
-
-    PC/SC: simplify reader state detection.
-    
-    This needs to be improved further, based on revision 5278 of pcsc-lite.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4784 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ebdc92407e069dfbf8704a2bfed58babda3ffccd
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Oct 5 14:58:29 2010 +0000
-
-    PC/SC: move reader feature detection to a separate function. Don't detect features of a reader that is in exclusive mode.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4783 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b060049fa44278707c30637e988b7c4dc748249e
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Oct 5 14:58:22 2010 +0000
-
-    opensc-tool: don't print reader driver (only one is enabled by default), instead print the presence of a card.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4782 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 283ac67229840639d38b2b7225e0ade3e0aa51d7
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Oct 5 14:42:01 2010 +0000
-
-    pkcs11-spy: log matching objects in hex. Patch from Andre Zepezauer
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4781 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a71b64f3fc5d0f2454cd646272707b6eb1fb3017
-Author: dengert <dengert at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Oct 4 15:58:34 2010 +0000
-
-    Fix erros with freeing algorithm parameters and
-    last entry of the algorithm_table.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4780 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0050a4bc6d49c122faab74e89be4cff822cebf7f
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Sep 28 13:12:54 2010 +0000
-
-    MacInstaller: prefer http over git.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4779 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit af6a24670364c9cbd3715513371ea40e14cc3a4b
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Sep 27 14:06:40 2010 +0000
-
-    MacInstaller: allow building a x86 only version for 10.5
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4778 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 517878d102f7049831ca7a5c249ab496827f814b
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Sep 27 07:50:14 2010 +0000
-
-    myeid: applied patch for MyEID card profile
-    
-    provided by Tony (Aventra development), thanks.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4777 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6ebd49397ed6af6183b29a89c0f531f4d7bf1295
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Sep 26 21:30:44 2010 +0000
-
-    Don't dump wiki content into distribution package.
-    
-    As requested by Martin[1].
-    
-    Before releasing a new formal version, run:
-    $ make Generate-ChangeLog
-    
-    It generates the ChangeLog out of svn and autoreconf again for package inclusion.
-    
-    [1] http://www.opensc-project.org/pipermail/opensc-devel/2010-September/015014.html
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4776 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 58c1c88efa682c7ef596e79e545ae68d28562fe6
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Sep 25 20:35:59 2010 +0000
-
-    libopensc: homogenise line ending in the debug messages
-    
-    continuating r4759
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4774 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 10a99dc055d1e8b6926a8905bc24f2bba802ceff
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Sep 25 20:25:23 2010 +0000
-
-    myeid: remove windows line ending
-    
-    because it give the wrong LINE value in the debug messages that follows
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4773 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e9d1f1008452847ba90f98a4c52b5db7c5bb1656
-Author: dengert <dengert at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Sep 24 20:37:22 2010 +0000
-
-    PIV support for NIST 800-73-3 objects,
-    PIV driver client can build and run without OpenSSL,
-    (admin functions and piv-tool still need OpenSSL)
-    define PIV specific ctrl codes and structures.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4767 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 391ec9630600e4b5b253a826695436c06bd9cdcc
-Author: dengert <dengert at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Sep 24 18:34:44 2010 +0000
-
-    Remove max_recv_size checks
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4766 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f339f9ba776131619327d8aa42fe9f8499352c2f
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Sep 24 07:24:43 2010 +0000
-
-    pkcs11-tool: only do hotplug testing before other activities.
-    
-    Thanks to Andre Zepezauer for noticing.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4765 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7ef766b7854bc1c2565bb7be356d4077fe3eb12a
-Author: flc <flc at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Sep 23 11:57:51 2010 +0000
-
-    Fix issue in log message in cardmod with i386-mingw-gcc v 3.4.5
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4764 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3bb5c9f5302ef64aaa4b50559aaada9b3ca248ff
-Author: dengert <dengert at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Sep 22 20:57:07 2010 +0000
-
-    allow pkcs15-itacns.c compile without OpenSSL
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4763 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1a5b898b07c35f9fe8a4b7d00f953fadc97ff6a2
-Author: dengert <dengert at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Sep 22 15:12:01 2010 +0000
-
-    Another max_recv_size fix
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4762 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 10a5d1be3a2503c5f31256c797cd53ff721e77d5
-Author: dengert <dengert at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Sep 22 14:55:03 2010 +0000
-
-    Fix #257 Reading partial objects differs for T=0 vs T=1
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4761 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 573a1de4d634358f37101cbe13d3c644f13d35d8
-Author: dengert <dengert at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Sep 22 14:41:50 2010 +0000
-
-    Allow c_FindObjectsInit to find unlimited objects - #258
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4760 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit dc3b1d008bcd3f550cda649d5c7a6a61362ed720
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Sep 22 12:17:53 2010 +0000
-
-    pkcs15init: homogenise line ending of debug messages
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4759 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit dd6c9006b84cc88a7b61634a83ff5a66bf35942c
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Sep 22 12:06:05 2010 +0000
-
-    build: darwin specific customizations not needed, need_dash_r for solaris not used.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4758 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 239de7b6e32033608b336a48e6dd814c064ad2c0
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Sep 22 11:51:52 2010 +0000
-
-    libopensc: remove 'max_xx_size' from debug message
-    
-    after the 'max_xx_size' stuff has been reverted
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4757 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2a3fcf3d927dd913cf68957190538a62cf58d5db
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Sep 22 11:47:35 2010 +0000
-
-    MacInstaller: simplify configure arguments
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4756 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6ff0f85292e91322c5184083257b578b7f11ee40
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Sep 22 11:47:26 2010 +0000
-
-    build: remove ancient and unsupported platform checks, added in [94]
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4755 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 652a1801e099f895c768eb39c7a5925fabf41d64
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Sep 22 11:46:33 2010 +0000
-
-    opensc-explorer: to use AID of maximal allowed length in 'cd' command
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4754 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 92b87a3cb7df541274453cbcec71d1f9c4d86d6d
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Sep 22 10:02:43 2010 +0000
-
-    Update NEWS. Remove references to local wiki dumps and an outdated online page.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4753 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 659db6f50b180d4a903b1c7e1e8c82ba1660f8be
-Author: s <s at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Sep 21 18:14:04 2010 +0000
-
-    Fix: default count of attempt (use profile) for new version firmware
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4752 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3202355fa3055e4037fb70e255165d1aed415418
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Sep 21 16:11:49 2010 +0000
-
-    pkcs11-tool: print the token before asking for a PIN code; shorten CKU_CONTEXT_SPECIFIC prompt
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4751 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 01931d6794ddd70ada424dc578033654e5b9b68d
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Sep 21 16:11:44 2010 +0000
-
-    pkcs11-tool: do --test even without a slot, at least hotplug. print a proper error name for C_GetSlotInfo
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4750 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 528b7ae7c76c2c4bcdd0bed1058c9db6b94f9982
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Sep 21 16:11:40 2010 +0000
-
-    pkcs11: move around CKR_ARGUMENTS_BAD check
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4749 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 294a8bca3d34265d004aca0bf855803108202eb2
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Sep 21 16:11:36 2010 +0000
-
-    pkcs11-tool: pkcs11-tool --verbose does not affect OpenSC debugging. Document a workaround
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4748 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 50952cdcba66e32010f597fd517c74396f2876ca
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Sep 21 16:11:31 2010 +0000
-
-    pkcs11-tool: cleanup whitespace and remove unused OpenSSL ERR_* calls.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4747 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2dff969e053041c703663aa0742b497ffd05cfe5
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Sep 21 16:11:26 2010 +0000
-
-    pkcs11-tool: better separation between opaqe slot IDs and slot list indexes.
-    
-    --slot will take the actual CK_SLOT_ID
-    --slot-label will use the token label to find the correct slot
-    --slot-index will use the N-th slot from the list returned by C_GetSlotList
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4746 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2085126d39647b304f4566beab0434b16dc6cbe8
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Sep 21 09:48:57 2010 +0000
-
-    Use "const char *" instead of "char *" where needed.
-    
-    Fix compiler warnings:
-    compat_getopt_main.c: In function ‘main’:
-    compat_getopt_main.c:145: warning: initialization discards qualifiers from pointer target type
-    compat_getopt_main.c:288: warning: assignment discards qualifiers from pointer target type
-    compat_getopt_main.c:336: warning: assignment discards qualifiers from pointer target type
-    compat_getopt_main.c:366: warning: passing argument 3 of ‘handle’ discards qualifiers from pointer target type
-    compat_getopt_main.c:76: note: expected ‘char *’ but argument is of type ‘const char *’
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4743 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 96a2568ee0a47f6445c3347e5ea075014bdebbd5
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Sep 21 09:45:09 2010 +0000
-
-    Remove an ugly cast and fix a compiler warning
-    
-    compat_getopt_main.c: In function ‘handle’:
-    compat_getopt_main.c:123: warning: format ‘%s’ expects type ‘char *’, but argument 3 has type ‘long unsigned int’
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4742 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4630f1c65f00bc5abd9050d7e98c7817ec4ae927
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Sep 21 09:42:39 2010 +0000
-
-    VERSION is already defined ni config.h included by compat_getopt.h
-    Redefine our own version of VERSION
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4741 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9bdbaf4970872c1a039d6db08b123f9eb26065a0
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Sep 21 09:39:04 2010 +0000
-
-    include compat_getopt.h instead of getopt.h
-    
-    Thanks to Guillaume JEAN for the patch
-    http://www.opensc-project.org/pipermail/opensc-devel/2010-September/014948.html
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4740 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 43ee9f60ce322b8956a88312be84681b34da4615
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Sep 21 09:37:17 2010 +0000
-
-    build but do not install compat_getopt_main
-    
-    This is just used for testing the compat_getopt code in libcompat
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4739 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a404370f0cb765119c149d688a4baaa2366e5d0b
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Sep 20 23:10:29 2010 +0000
-
-    pkcs15-tool: harmonize and align the output of --dump
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4738 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 09fb4468d03c4499a42c943268167e5e75c0da7f
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Sep 20 23:10:23 2010 +0000
-
-    pkcs15-tool: only print Auth ID if present
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4737 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 215b3fc0567cb510f4c9770099c8d8b414f42257
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Sep 20 23:10:16 2010 +0000
-
-    pkcs15-tool: pretty-print common object flags.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4736 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 53c3c486af54a60e4ea09bdd7ce936a3b538f420
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Sep 20 15:01:45 2010 +0000
-
-    MacInstaller: statically link libltdl for 10.5, as 10.5 PPC comes without the necessary .dylib (i386 has it)
-    
-    Thanks to Kalev Lember for the original patch.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4735 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 63dafb8ee58cdc5dd3aefce8005399e65142f4de
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Sep 15 14:15:17 2010 +0000
-
-    Remove the traces of C99: declare variables before any code.
-    
-    Thanks to Guillaume JEAN for the patch
-    http://www.opensc-project.org/pipermail/opensc-devel/2010-September/014903.html
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4723 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4a547b6f09e439b98bdc2f5ceb5c8500c118d75a
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Sep 15 12:00:16 2010 +0000
-
-    libopensc: Don't touch TokenInfo.flags->loginRequired
-    
-    See http://www.opensc-project.org/pipermail/opensc-devel/2010-September/014871.html
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4722 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 39311cb881b63cc01488e724f72205a61f0b5b7b
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Sep 15 11:09:28 2010 +0000
-
-    libopensc: check for unset max_recv/send_size in all places.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4721 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit fc5b3e5417153620e0e3167dd88d35eebbb80f4f
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Sep 14 09:27:46 2010 +0000
-
-    EstEID: buffer is 2 bytes bigger than max Le.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4720 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 767e5dd6c962da0e9c6bdd2a1813fb48ef47f99b
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Sep 14 08:49:50 2010 +0000
-
-    MacInstaller: fix syntax error
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4719 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 36ef4647583fd36065f21ee2a3f88c8d1da3379a
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Sep 14 08:49:46 2010 +0000
-
-    MacInstaller: simplify ./configure calling, disable assert-s
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4718 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ec2befb5c54dcdc3ec4a3883a51f5e1640f21aae
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Sep 14 08:17:48 2010 +0000
-
-    build: add --disable-assert (enabled by default)
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4717 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8aa2a64261b10f403e4f9264093fbeb4e295af6d
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Sep 13 08:08:42 2010 +0000
-
-    opensc tools: to be compiled with Visual Studio
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4716 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 19df2c812b24d776cf3315e5d3cb59c0ce2c1e60
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Sep 13 07:55:12 2010 +0000
-
-    MyEID: to be compiled with Visual Studio
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4715 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit cae16b6ef8c44531a190a639d9ac54fb3ca8efde
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Sep 13 07:40:45 2010 +0000
-
-    By default the reader driver does not have receive/send limitations.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4714 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 36705f8f10bc60ca0c039cf0f776836bda74834c
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Sep 13 07:27:34 2010 +0000
-
-    Add missing piece from r4706.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4713 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 89d5bcf4d5eb35f366462a77f94fd6f73659b380
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Sep 11 13:01:06 2010 +0000
-
-    whitespace fix
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4712 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0f7891293fb80534d76e09e686ea29be92a3e4ec
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Sep 11 13:01:00 2010 +0000
-
-    libopensc: fix "ctx.c:389: warning: unused parameter ‘opts’"
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4711 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8c1bcea28ac1d107e2cd53f4de61bab0d41b67ca
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Sep 11 13:00:54 2010 +0000
-
-    libopensc: remove unused SC_MAX_READER_DRIVERS
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4710 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 72d961beb235628e58ca254be691816eab7af6bc
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Sep 11 13:00:47 2010 +0000
-
-    Fix #216: initial go with multiple reader subsystem removal.
-     * One sc_context has only a single reader driver.
-     * remove dynamic reader driver loading capabilities
-     * remove opensc-tool -R command
-     * change the internal API, we don't need to pass around a "driver data" pointer as it can be found directly from the context.
-     * check in ./configure for only a single enabled reader driver
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4709 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0858a5c8543303a57c9c47a4701086fc314977fb
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Sep 11 13:00:36 2010 +0000
-
-    libopensc: remove SC_MAX_READERS which is not used.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4708 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 01c3bde101aeaadbb8c703c9d7fead654e96967a
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Sep 11 13:00:29 2010 +0000
-
-    Belpic: remove BELPIC_SET_LANG and related code, as it is not used in OpenSC
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4707 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a5ca648afd8eee6db673915195687e6c74e505e1
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Sep 9 18:58:44 2010 +0000
-
-    Revert r4668. Change the way limitations on max send and receive sizes are set.
-    
-    See http://www.opensc-project.org/pipermail/opensc-devel/2010-September/014836.html
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4706 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ac0a8dbb150474910ebfd5389301fa1452f0cfe0
-Author: s <s at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Sep 9 17:28:44 2010 +0000
-
-    remove software RSA support for Rutoken S
-    
-    Migration OpenSC to "new scheme" (further to r4646)
-    http://www.opensc-project.org/pipermail/opensc-devel/2010-September/014717.html
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4705 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit cb92f7bb9a2b0f60f6295ddf0766e3a08d221e1b
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Sep 9 09:43:27 2010 +0000
-
-    MacInstaller: Simplify file detection
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4704 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8bb0ab634e4fbd6b3023a623aff90a6746915add
-Author: jps <jps at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Sep 9 09:18:18 2010 +0000
-
-    MacOSX 10.5: Install libltdl.3.dylib if needed
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4703 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ffdad69bca89502601100d7dab370b13ddce678b
-Author: ep <ep at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Sep 8 21:23:49 2010 +0000
-
-    Avoid mixed declarations and code in ItaCNS files, per C90
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4702 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit be6d4d062b178f55dd0bef819ec1b4fb75331401
-Author: flc <flc at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Sep 8 07:52:00 2010 +0000
-
-    Fix small log issue
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4701 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 10fe6e4441e010923c0ab50d59f0527f7e8501b9
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Sep 7 12:53:26 2010 +0000
-
-    MyEID: force PIN padding properties (already set by sc_pkcs15* but not present with opensc-explorer)
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4700 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 525bf7381ed3d442b3e82ef75d1b2835456ad0de
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Sep 7 12:49:16 2010 +0000
-
-    MyEID: use ISO7816 pin_cmd. Fix card_state logic.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4699 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5dc3ffe3542963bbb3e8120e58d7396bf85392b5
-Author: jps <jps at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Sep 7 08:07:04 2010 +0000
-
-    On MacOSX, we need to delete the receipts too, after deleting the application files.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4698 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f9026bc86f2d76e365ef858e27b38e095d7ba393
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Sep 6 09:32:13 2010 +0000
-
-    EstEID: Fix #250. Force a SELECT FILE by cheating on the internal micardo path cache.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4697 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d994bb81a19c3bf150f3dd08477b4e496aa0b2fa
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Sep 6 08:54:13 2010 +0000
-
-    Micardo: remove redundant mcrd_decipher. Handled by ISO7816
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4696 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3ab92454a2bf0b83f2e826fca7566f3a3c933514
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Sep 5 19:55:00 2010 +0000
-
-    card-jcop: remove dummy stubs.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4695 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6c156e2318d369872860cae9e09b6faf06936212
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Sep 5 19:22:54 2010 +0000
-
-    MyEID: remove no-op ISO7816 wrappers and not implemented stubs.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4694 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3d988eed5c14803ec81ee1df79fef4fc571df732
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Sep 5 18:21:43 2010 +0000
-
-    MyEID: make working change/unblock PIN
-    
-    tested with pkcs15-tool on Linux and Windows
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4693 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 93da2252c75ad11af0cf31a522ba6d5c41a85c4c
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Sep 5 16:53:08 2010 +0000
-
-    pkcs11: #250: refresh PIN counters and associated token flags on every call to C_GetTokenInfo
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4692 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7a66f4e3399eaa0f5561339abb977bd47adba578
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Sep 5 16:53:02 2010 +0000
-
-    pkcs11-tool: recognize user PIN related token flags
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4691 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 362a907bf06983ac8b967991adb2ea70fed5251b
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Sep 5 16:52:56 2010 +0000
-
-    Micardo: Add SC_PIN_CMD_GET_INFO support, currently only for EstEID cards.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4690 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 54c67f105b3599ac202d715afc8318de085b2087
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Sep 5 16:52:50 2010 +0000
-
-    EstEID: style: use sizeof()
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4689 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f085a9b373fa2041782540dc0ca194af411e97af
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Sep 5 16:52:43 2010 +0000
-
-    libopensc: add SC_PIN_CMD_GET_INFO and related fields to sc_pin_cmd_pin
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4688 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2f440e63ca937359d22bd8c47602815dabe8ad94
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Sep 5 16:52:36 2010 +0000
-
-    pkcs11: Remove the comment about max_tries==1 and CKF_USER_PIN_FINAL_TRY
-    Assuming the driver has correctly set max_tries to 1 then PKCS#11 is very clear about it:
-    """
-    True if supplying an incorrect user PIN will it to become locked.
-    """
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4687 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ec6bb9859d0800b868d34dce46d576813b58b64d
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Sep 4 20:46:07 2010 +0000
-
-    MyEID: For Aventra card applied Toni's patch, enriched by Andre's proposal
-    
-    see:
-    http://www.opensc-project.org/pipermail/opensc-devel/2010-August/014662.html
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4686 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 602d170c3de812df10677b64f5b8d07e2a960959
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Sep 4 20:21:34 2010 +0000
-
-    libopensc: pkcs15: more of debug messages
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4685 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 741b8c362e30204cfb13320e0bb163b5b57b4ad5
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Sep 4 20:19:14 2010 +0000
-
-    libopensc: supplement to the previous commit
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4684 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2db473a16044bb14dfe11c99f4b1990cfb0cbe9f
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Sep 4 20:16:54 2010 +0000
-
-    libopensc: export 'sc_card_find_rsa_alg'
-    
-    Following proposal of Andre Zepezauer, see
-    http://www.opensc-project.org/pipermail/opensc-devel/2010-August/014699.html
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4683 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0fe106e53a29a245a5697bc830edfd59ee89d4a2
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Sep 4 20:08:52 2010 +0000
-
-    libopensc: in a supplement to r4668
-    
-    Use 'max_recv_size' when building APDU for 'select file'
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4682 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 223d5e1bb3c552ff5676dc540cc8bfc448fbeacd
-Author: ep <ep at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Sep 2 22:58:47 2010 +0000
-
-    Fix signedness issues in pkcs15-itacns.c
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4681 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 31e6602835c9073848161188b50dedc325cb9d4c
-Author: ep <ep at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Sep 2 22:58:45 2010 +0000
-
-    Remove unused variables and constants from pkcs15-itacns.c
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4680 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f70d4acf07de815aaa07c3d27f9d2b4c149f733b
-Author: ep <ep at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Sep 2 22:58:38 2010 +0000
-
-    Squelch warning about unused se_num argument in itacns_set_security_env(),
-    as the driver is computing the right argument from the security environment
-    data.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4679 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8697b4c04bca0377b1c11731e2a7f9ba8f460f28
-Author: ep <ep at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Sep 2 22:58:36 2010 +0000
-
-    Fix signedness warnings in card-itacns.c
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4678 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit fbf1d621cb65d258adbf18c45ab97cae7ec939cd
-Author: ep <ep at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Sep 2 22:58:34 2010 +0000
-
-    Remove unused give_random operation
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4677 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f5ef30bdd7ad5d4205ef0b7162cc5a9d0c339e57
-Author: ep <ep at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Sep 2 22:58:31 2010 +0000
-
-    Pass SFI as an appropriately-sized number
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4676 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 49577941d6d4034aa640bf4d3772755c7b8a6a26
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Sep 2 18:23:49 2010 +0000
-
-    Fixup for #102: also in command help.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4675 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b99d420a9ea72a70254bcc5d6b7728ccea0d0dc8
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Sep 2 18:21:14 2010 +0000
-
-    manpages: #102: --change-pin also works for a PUK code.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4674 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2d32947de4818a34714fadd109717efbe47873eb
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Sep 2 13:39:01 2010 +0000
-
-    Style: // -> /**/
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4673 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4697cc386bef2ee0cb10bbb9ca5b1fb2347fb5aa
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Sep 2 13:38:56 2010 +0000
-
-    libpkcs11: Print error messages from PKCS#11 module loading
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4672 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9acc8c44af6344642f232b2bea2fcb362ed56d88
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Sep 2 09:19:27 2010 +0000
-
-    pkcs11: #250: update slot PIN flags when verifying slot's auth object
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4671 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 241d3b5d86bb96d0e04d3116d9b1768dc43b4510
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Sep 1 11:50:39 2010 +0000
-
-    libopensc: improve max_send/recv_size related code comments.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4670 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 59a389757ef11529c6292475c2dc5969e20167b1
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Sep 1 11:50:35 2010 +0000
-
-    opensc.conf: Better comment for max_send/recv_size meaning and default values.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4669 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 07ab2a2871ffb736c5b3fc211c9103721dd91681
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Sep 1 11:50:24 2010 +0000
-
-    Ticket #226: Initial changes as noted by reporter
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4668 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 27ed902ce0b06da37dc48cd324143cd17525eb87
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Sep 1 11:46:37 2010 +0000
-
-    Add a FIXME for keys>2048b
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4667 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b04a1ef9f014a1f013359549ac06cc33f25505d6
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Sep 1 11:46:31 2010 +0000
-
-    EstEID: small fixes for working with a modified max_send/recv_size
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4666 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit befff1b0d4a79f2566a57f305ca9ef0064e121f1
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Sep 1 06:23:43 2010 +0000
-
-    libopensc: PIN usage counter is decreased every time it is sent to the card, no matter what the card replies (should probably reply with success)
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4665 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5e3f7b10d0039154f9516ef403ea75437efcc20b
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Sep 1 06:23:37 2010 +0000
-
-    Whitespace fix
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4664 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 15b6f29013fdd3b68f67d144e0cde2ed5b7892ed
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Sep 1 06:23:32 2010 +0000
-
-    Whitespace fix
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4663 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8c9666d631b9e32e68098176b7bddc45e181becd
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Sep 1 06:23:26 2010 +0000
-
-    pkcs11: C_SeedRandom is not implemented by OpenSC nor most smart cards, nor does it fit well into PKCS#15 concept.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4662 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 12a1e9d49b69a1e5e61daa864df2abde00c9f329
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Sep 1 06:23:17 2010 +0000
-
-    pkcs15: don't override TokenInfo PRNG flag. pkcs11: announce CKF_RNG if the card driver supports it, bypassing PKCS#15.
-    
-    GET CHALLENGE and RNG don't match 1:1 anyway.
-    
-    Thanks to Andre Zepezauer for noticing this.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4661 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit fc4dff1d12e80f9f58c62889725d48729a5b8e80
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Aug 31 01:24:53 2010 +0000
-
-    Debian #451155: Document pkcs15-init --update-certificate/-U in man page.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4660 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8d3a1bcd1f35499bd7ec13512244ee4b7acf0f7d
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Aug 31 01:24:53 2010 +0000
-
-    libopensc: remove the "etoken" alias for "cardos" cards.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4659 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0285264af59b7bd0716c54fec990037012810f4d
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Aug 30 16:37:15 2010 +0000
-
-    #73: pkcs15-tool: when changing PIN, print message if no PIN value supplied
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4658 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1bd7e5d2f54383b27ed1f9c521f5fdff2f613e8b
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Aug 27 09:39:24 2010 +0000
-
-    MacInstaller: Add .bundle generation capability from SCA. Thanks to Jean-Pierre Szikora for the reminder.
-    
-    Adobe Acrobat is one program that requires the .bundle format.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4657 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b4f9ac456a259a98b6754023b1359d5279e211a1
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Aug 27 09:28:42 2010 +0000
-
-    pkcs15-init: fix leftover from [4646]
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4656 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a7191a95403cc32474a349d0c7dd020a6572a393
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Aug 27 08:24:39 2010 +0000
-
-    Revert CardOS change from Italian CNS patch [4627].
-    
-    Limiting Le for CNS should be done in pkcs15-itacns.c
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4655 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ed589feda754e8f9c30156246d2455586a39692b
-Author: s <s at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Aug 25 19:24:23 2010 +0000
-
-    add ATR for Rutoken ECP (DS)
-    
-    Thanks to Aktiv Co. Kirill Mescheryakov for the patch.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4654 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c5d18635ef69868724fce35c058d874605cacc49
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Aug 25 12:57:47 2010 +0000
-
-    build: add installer files and a small script to build a win32 installer from build project binaries.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4653 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit cd01ad093695b582d22afb371c5b2853149064be
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Aug 25 12:51:55 2010 +0000
-
-    pkcs15init: On Windows, get the profile directory from registry instead of configuration file.
-    
-    This allows the installation directory for non-dll files to be anywhere on the system.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4652 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 543f2faf2bcca992588f22c1b05c03411381acbb
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Aug 25 09:09:28 2010 +0000
-
-    Update NEWS for 0.12.0
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4651 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4cbe69413b0681e6763bcf234093633e5ddd7d1d
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Aug 25 08:44:32 2010 +0000
-
-    Add build script for Mac OS X. Uses github copies of SVN for source.
-    
-    Includes:
-    Add static engine_pkcs11.so to the 10.6 installer (#246)
-    Patch from Mart Randala: add a nice background image and readme file and license file.
-    Patch from João Poupas: fix a typo and also work with docbook-xsl from macports.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4650 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5f518a96be2a6fd22e4ae4627c15700ecf9666e4
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Aug 25 08:40:54 2010 +0000
-
-    Update OpenSC.tokend related default config file entries.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4649 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a3d02dd63c618fb47b1b667a32e41afff6f58cfb
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Aug 25 08:32:42 2010 +0000
-
-    CT-API, PC/SC: truncating atr_len makes no sense.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4648 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4f03502b60f38c59923c3641c06b89d6b0cd489e
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Aug 23 14:47:14 2010 +0000
-
-    pkcs11: check PKCS#11 function parameters for obvious errors and return CKR_ARGUMENTS_BAD early without locking the module.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4647 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9a63e03e9aadc7c9d7d878432e5bfd021743eb07
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Aug 23 14:47:07 2010 +0000
-
-    pkcs11/pkcs15-init: remove automagic software key generation. Remove software based secret key handling from PKCS#11.
-    
-    Support for importing cleartext keys is left untouched, but all transparent key generation by either opensc-pkcs11.so or pkcs15-init is removed, to make the operation with cleartext keys visible to the user and his explicit wish.
-    OpenSC is a PKCS#11 library for accessing keys protected by a smart card. Key material in software is not protected by smart cards and can leave a false sense of security to the user.
-    
-    http://www.opensc-project.org/pipermail/opensc-devel/2010-April/013877.html
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4646 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1f73d32e4082552ebd38cd84a59feff14d416c1e
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Aug 23 10:32:26 2010 +0000
-
-    libopensc: Remove unused internal SC_ERROR_EXTRACTABLE_KEY and correct relevant comments (native != extractable)
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4645 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 98255b109a559fc40084dbfa4557ecf2bbba40d5
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Aug 23 10:32:21 2010 +0000
-
-    libopensc: Fix SC_ERROR defines and messages: remove unused error defines, fix the internal value of some PKCS#15 related errors.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4644 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2b1a8b58289c250aeed74eb19209b6240e102a36
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Aug 23 10:32:17 2010 +0000
-
-    build: don't check for unused functions and headers.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4643 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c235f93cff1afac236ac692119bf6a5b7108af36
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Aug 23 09:34:30 2010 +0000
-
-    EstEID: sc_format_path sets SC_PATH_TYPE_PATH by default
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4642 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6474853217ef2b7c62db655fc8f63c5a1c799753
-Author: ep <ep at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Aug 21 20:12:59 2010 +0000
-
-    Support reading record files by SFI
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4641 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit cba47b33bfc6ba8861dbf88dca525dd9e8889d8e
-Author: ep <ep at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Aug 21 20:12:56 2010 +0000
-
-    Only free current_file if it is set
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4640 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5990d26f80f989853d26f5b3ed39057d1e4fc857
-Author: ep <ep at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Aug 21 20:12:53 2010 +0000
-
-    If a FCI features tag 84h, then the file is a DF
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4639 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit fd396a0546b47d75e9b2fa58daf57dd546c00256
-Author: ep <ep at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Aug 20 22:51:42 2010 +0000
-
-    Refactored the "select the file referenced by current_path; die on error" idiom in opensc-explorer.
-    
-    This version, additionally, skips this step entirely if there is no current_path; this is useful when starting with --mf "".
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4638 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4e726bd09ba2b8c32be675981f04e39b1b643d78
-Author: ep <ep at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Aug 20 22:51:39 2010 +0000
-
-    Fix and document opensc-explorer's new -m, --mf option
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4637 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f47416d60e4e0d74aa184168925d5ce6938f903f
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Aug 18 15:08:51 2010 +0000
-
-    Do not cast the return value of malloc(3) and calloc(3)
-    
-    From http://en.wikipedia.org/wiki/Malloc#Casting_and_type_safety
-    " Casting and type safety
-    
-    malloc returns a void pointer (void *), which indicates that it is a
-    pointer to a region of unknown data type. One may "cast" (see type
-    conversion) this pointer to a specific type, as in
-    
-    int *ptr = (int*)malloc(10 * sizeof (int));
-    
-    When using C, this is considered bad practice; it is redundant under the
-    C standard. Moreover, putting in a cast may mask failure to include the
-    header stdlib.h, in which the prototype for malloc is found. In the
-    absence of a prototype for malloc, the C compiler will assume that
-    malloc returns an int, and will issue a warning in a context such as the
-    above, provided the error is not masked by a cast. On certain
-    architectures and data models (such as LP64 on 64 bit systems, where
-    long and pointers are 64 bit and int is 32 bit), this error can actually
-    result in undefined behavior, as the implicitly declared malloc returns
-    a 32 bit value whereas the actually defined function returns a 64 bit
-    value. Depending on calling conventions and memory layout, this may
-    result in stack smashing.
-    
-    The returned pointer need not be explicitly cast to a more specific
-    pointer type, since ANSI C defines an implicit conversion between the
-    void pointer type and other pointers to objects. An explicit cast of
-    malloc's return value is sometimes performed because malloc originally
-    returned a char *, but this cast is unnecessary in standard C
-    code.[4][5] Omitting the cast, however, creates an incompatibility with
-    C++, which does require it.
-    
-    The lack of a specific pointer type returned from malloc is type-unsafe
-    behaviour: malloc allocates based on byte count but not on type. This
-    distinguishes it from the C++ new operator that returns a pointer whose
-    type relies on the operand. (see C Type Safety). "
-    
-    See also
-    http://www.opensc-project.org/pipermail/opensc-devel/2010-August/014586.html
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4636 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d37dd91b63a29d5e50b1a0e3ed039510e287c9a7
-Author: ep <ep at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Aug 18 13:42:30 2010 +0000
-
-    Use strlcpy(3), strlcat(3) in pkcs15-itacns.c
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4635 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b27928770120b242fe27b4ff9e5ba75aab939ee9
-Author: ep <ep at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Aug 18 13:42:26 2010 +0000
-
-    strlcat(3) implementation
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4634 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 96df880730e841cc29d839deacf32302cc682a9b
-Author: ep <ep at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Aug 18 13:42:21 2010 +0000
-
-    Prevent card-incrypto34.c from catching the Italian CNS card's ATR
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4633 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit acd062e0dd73eba80bb84369de8a9f24e7a2d908
-Author: ep <ep at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Aug 18 13:42:16 2010 +0000
-
-    Avert potential buffer overflows in pkcs15-itacns.c
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4632 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 31d1a552d3d6eb9e9d9ac5efcc3dca3baa5fd554
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Aug 16 09:33:56 2010 +0000
-
-    Use (SCARD_READERSTATE *) instead of LPSCARD_READERSTATE since
-    LPSCARD_READERSTATE is not define in old pcsc-lite (< 1.6.3) nor Mac OS X
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4631 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b1ff1abb1bdcbadbc0dc4580bbf5e3a1ec862ffa
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Aug 16 08:59:14 2010 +0000
-
-    Fix and change ignored readers feature introducsed in r4626 for Windows. strcasestr is GNU specific extension.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4630 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit bb8b2d5f4b54783a1757522983f8f3857cfa895a
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Aug 16 08:59:09 2010 +0000
-
-    itacns: add itacns.h to distribution targzip, fix card driver ordering.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4629 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 484d484c21b59c3aaf6e2b577dbc19ddb8f5cfe7
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Aug 16 08:59:05 2010 +0000
-
-    PC/SC: Fix building on OS X and mingw32 after r4626
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4628 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 71cdef0ed255b63f34246960d3c9c36c2d2f8989
-Author: ep <ep at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Aug 16 00:56:27 2010 +0000
-
-    New card driver: Italian CNS/CIE (eID)
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4627 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 947c3291dbd500215245b522b5ec30025db4f2c6
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Aug 15 14:57:34 2010 +0000
-
-    Use SCARD_READERSTATE instead of SCARD_READERSTATE_A
-    
-    SCARD_READERSTATE_A is not used by Microsoft API and is no more
-    defined/used by pcsc-lite >= 1.6.2
-    
-    Thanks to Josef Windorfer for the bug report
-    http://www.opensc-project.org/pipermail/opensc-user/2010-August/004235.html
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4626 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit fde87a8c6e612f326b5cc726117e7a4aa2486d36
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Aug 15 09:34:13 2010 +0000
-
-    pkcs11: remove outdated config entry parsing.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4625 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a938d3b67fe84344c50f67f460336994282cd6c6
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Aug 15 09:33:18 2010 +0000
-
-    Implement simple reader ignoring, to exclude readers from OpenSC PKCS#11 module.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4624 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 409284ed60b606edcd5cfe88d04deae776fcc230
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Aug 14 12:18:27 2010 +0000
-
-    opensc-tool: Fix ACL reporting for EF-s. Patch by Emanuele Pucciarelli.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4623 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9f639f48c459ee6a65017a05807272ec0ada0331
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Aug 13 09:27:38 2010 +0000
-
-    Add back MAX_ATR_SIZE which was erroneously removed in r4611. Fixes mingw32 build.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4622 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7ac66ae4cf9ee2f4520b8969019111b6a5ed4cd5
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Aug 12 21:49:14 2010 +0000
-
-    Correctly use pin2 when needed.
-    Patch from OpenSUSE.
-    
-    Closes ticket #249.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4621 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c7a99c2e030d475a511208d04bac3c80676c67f3
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jul 30 07:09:15 2010 +0000
-
-    Use || instead of | in a #if check
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4619 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a8c438fde1a1593abfd0dec4a08f01e0a9d47478
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jul 27 08:05:31 2010 +0000
-
-    configure: Add possible docbook paths on OS X (Fink, MacPorts)
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4612 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5c2c12bb781e266613cbe4f1e72119ba08e9a238
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jul 26 13:16:37 2010 +0000
-
-    Trac #244: Fix structure packing on Apple and SUN. Fix display detection by updating structure definitions.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4611 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 11dc9ba79720efe420f37be1d8f5f1913c493d7e
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jul 26 11:18:00 2010 +0000
-
-    cardos-tool: fix handing of --help/--verbose/--debug
-    
-    --debug was not documented and not used by other tools; --help was not handled.
-    
-    Thanks to Ludolf Holzheid for noticing this.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4596 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 002843c14046ebc3bbbe538e1cc057ec1f329247
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jul 26 11:17:57 2010 +0000
-
-    pkcs15-init: fix help text ordering (Ludolf Holzheid)
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4595 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 578bbd2104e4798b98a80aa4c91be924d910bb65
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jul 26 11:17:53 2010 +0000
-
-    man: use --auth-id instead of bogus --pin-id in pkcs15-tool man page. [Ludolf Holzheid]
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4594 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 13a42de128fb32884966a38717a841b9a578029a
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jul 21 09:50:10 2010 +0000
-
-    pkcs11 tool: fix messages
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4593 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 764c1d9183bddb25f11dcea013b2fa12c734aa70
-Author: flc <flc at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jul 20 07:51:07 2010 +0000
-
-    minors log message corrections to build successfully.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4586 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 006c30c2e0ec0e36560448c03ce63ec7a500f112
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jul 8 08:09:46 2010 +0000
-
-    #245: pkcs15 asn1: 'subjectName' in 'commonPrivateKeyAttributes' is optional
-    
-    thanks to Jean-Michel
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4518 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3ea6b28405d5e5afdfefd4a02f04c8c88f9864db
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jul 6 12:40:56 2010 +0000
-
-    #229: pkcs15init entersafe: 'sanity-check' includes the update of the User PIN's 'pinFlags'
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4516 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3a3c41a6db22503f184669751b2efc6e6a96b7aa
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jul 6 09:09:04 2010 +0000
-
-    pkcs15: encode/decode 'AccessControlRules' in 'CommonObjectAttributes'
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4515 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b7e25bb407e9c3f9de593a6ada582fc1add7e0dd
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jul 5 17:54:12 2010 +0000
-
-    Fix MuscleApplet version detection
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4514 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1090d19d3070db5b52fae7da778805d904a36a4a
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jul 5 14:43:31 2010 +0000
-
-    #60: pkcs11-tool: print key sizes from CK_MECHANISM_INFO
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4513 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b78d7630e7c2bb7e96b49663aeafcf05cf9f05ca
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jul 5 13:29:10 2010 +0000
-
-    pkcs15: encode/decode 'subjectName' in 'CommonPrivateKeyAttributes'
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4512 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f85b625b47a9a56e0943674a839aa1e7169198cb
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jul 5 12:57:10 2010 +0000
-
-    pkcs15: correct the comments
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4511 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f18ba7d98407890be1ba1d983910cae96952016a
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jul 5 12:54:23 2010 +0000
-
-    pkcs15: decode 'supportedAlgorithms' in 'TokenInfo'
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4510 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1d82e8ababab85480aeffb955cad27267a938883
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jul 5 09:33:51 2010 +0000
-
-    re-distribute 'define' macros between types.h and opensc.h
-    
-    move 'define' macros closer to the definition of the related data types
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4509 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ae1433622127b4adc01ca81d723f5fcf20327145
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jul 2 14:26:29 2010 +0000
-
-    pkcs15init: create frame to implement card specific 'sanity check' procedure
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4508 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2883c17b1574d6688dd9dfd83486a487d10189d0
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jul 2 13:46:13 2010 +0000
-
-    pkcs15init: homogenize argument order of pkcs15init operations
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4507 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 765ea98cfbf5f28a6df0a69dd8c8180de4d2e270
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jul 1 12:31:52 2010 +0000
-
-    tools opensc-explorer: for 'apdu' command accept space separated hexadecimal data
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4500 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e26783201a24b5795783939475fe19099463c529
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jun 30 17:27:04 2010 +0000
-
-    Assuan is not used.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4499 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit bd5c186767858c536ffade1413da5e0281c0d3a2
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jun 21 10:49:58 2010 +0000
-
-    pkcs15/pkcs11: encoding of certificate's attribute 'serialNumber'
-    
-    Applying patch of Andre Zepezauer. Thanks.
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4451 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit bcc4500f24fe4e022399cf224ab2a1129a7522db
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jun 16 21:04:36 2010 +0000
-
-    pkcs15-init: only override --verbose to ctx->debug if it was set on command line.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4423 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d40da986db4e8cd161fface2af3a886c54824ab0
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jun 16 15:08:14 2010 +0000
-
-    Revert "pkcs15-init tool: with the new option 'use-default-debug-settings' the debug settings from opensc.conf are used"
-    
-    This reverts commit b7d492fbae6c57f6f5173ef857265efcee42cdf0.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4422 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d61e7b5ba17cc06a62699028d5b6c0402c1194f6
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jun 16 14:12:27 2010 +0000
-
-    OSX: For Tokend, set the debug file by default to /tmp/opensc-debug.log
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4421 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit df64d39f68a8089d5096f7c5ab9b813e017cd4f8
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jun 16 14:11:39 2010 +0000
-
-    westcos-tool: remove compiler warnings
-    
-    westcos-tool.c: In function ‘main’:
-    westcos-tool.c:375: warning: unused variable ‘lecteur’
-    westcos-tool.c:373: warning: unused variable ‘card_presente’
-    westcos-tool.c:372: warning: unused variable ‘p’
-    westcos-tool.c:371: warning: unused variable ‘i’
-    westcos-tool.c: At top level:
-    westcos-tool.c:43: warning: ‘version’ defined but not used
-    westcos-tool.c:45: warning: ‘nom_card’ defined but not used
-    westcos-tool.c:103: warning: ‘no_lecteur’ defined but not used
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4420 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ea7a0ac9a195375202d4eec0b0615c88e254f44f
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jun 16 13:43:10 2010 +0000
-
-    pkcs11: move the slot list size check to slot creation.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4419 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit bfe5b4a965243949fc9894420a8cd9b6b80d2aa2
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jun 16 13:43:05 2010 +0000
-
-    style: space -> tab
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4418 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 02f45075642b099e578668fadf4e8fd3d7a9c349
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jun 16 13:42:59 2010 +0000
-
-    pkcs11: Patch from Andre Zepezauer to remove max_virtual_slots allocation.
-    
-    See http://www.opensc-project.org/pipermail/opensc-devel/2010-June/014356.html
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4417 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 48615686acd9c70c22b0a9162809d4c908dc733f
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jun 16 12:01:04 2010 +0000
-
-    style: // -> /* */
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4416 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e6803d9ca08ed156c18d614ff130709809d38292
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jun 16 11:43:10 2010 +0000
-
-    Use CK_RV (defined as unsigned long) instead of int for the type the
-    return code of C_* functions
-    
-    Thanks to Martin Vogt for the patch
-    http://www.opensc-project.org/pipermail/opensc-devel/2010-June/014351.html
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4415 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit eab7adea1221f98f15cb4cafd99b2e0267391552
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jun 16 11:32:21 2010 +0000
-
-    pkcs11-global.c: In function ‘C_WaitForSlotEvent’:
-    pkcs11-global.c:624: warning: unused variable ‘ii’
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4414 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0d01cb1cd1d8597fadfed66b9f0dd61ecb630596
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jun 11 07:36:01 2010 +0000
-
-    Rename p15emu-westcos.c to pkcs15-westcos.c
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4413 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3cfc64ee6b288a7a829313ff872062a98d954845
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jun 11 07:35:45 2010 +0000
-
-    style: // -> /* */
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4412 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3d511b86100061e075cf5a1eb4d24233dd03d9ec
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jun 10 14:49:54 2010 +0000
-
-    MuscleApplet: Check for protocol version to be forward-compatible. Remove some whitespace. Remove support for <1024b keys.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4411 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 268e6270d82ecd9cb82870e384ec3b04f3d8e58b
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jun 10 09:08:00 2010 +0000
-
-    MuscleApplet: Don't set the file ID as the name of the file. It is redundant and does not look nice.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4410 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a1c77b96ab1c993bd891060c5d86ca5f62a9fc7f
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jun 9 13:53:11 2010 +0000
-
-    Entersafe: cache the presented PIN on personalization, simplify the code a bit.
-    
-    See http://www.opensc-project.org/pipermail/opensc-devel/2010-June/014312.html
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4408 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 14d82f9e4cf956efcc55b9e177208767a84a8f63
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jun 9 13:39:28 2010 +0000
-
-    Documentation: there is no external API, remove the manpage generation.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4407 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8737ace703223eb4d3363232f650c736460cdeaf
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jun 9 11:18:22 2010 +0000
-
-    Entersafe: the default profile should have local PIN-s
-    
-    See http://www.opensc-project.org/pipermail/opensc-devel/2010-June/014310.html
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4406 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ce0645d6d1657dac45df2a4354a1d5c7dbd5d624
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jun 9 10:06:42 2010 +0000
-
-    Fix compilation without OpenSSL
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4404 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f9daf30bba013e490af7a1d4aa9a55428d2337a7
-Author: jps <jps at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jun 8 14:41:49 2010 +0000
-
-    cardos-tool.c can be now compiled with OpenSSL 0.9.7 (SHA256 checksum verification is replaced by SHA1)
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4401 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 127136caf8090f54ae06293046c17f1c381d6bc3
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jun 8 10:45:07 2010 +0000
-
-    tools: Mac OS X 10.5 uses OpenSSL 0.9.7 which does not include SHA256 support. Fix building for 10.5.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4400 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 06028a7f9e2cd0adc7d5a5cfb5ba833bc8da00db
-Author: s <s at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Jun 5 08:51:37 2010 +0000
-
-    fix:
-    openssl (lock_dbg_cb): already locked (mode=9, type=30) at eng_list.c:360
-    openssl (lock_dbg_cb): not locked (mode=10, type=30) at eng_table.c:186\
-    
-    Thanks to Jan Just Keijser for development and patch
-    http://www.opensc-project.org/pipermail/opensc-devel/2010-June/014314.html
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4398 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7f3f6dec6b3b092214813ff1a1da86bb26cbda49
-Author: s <s at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jun 4 22:23:47 2010 +0000
-
-    fix: 'openssl: double free or corruption' (load gost engine before loading engine_pkcs11 (which loading gost engine))
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4397 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 073ad7a4c417701f998048ec6e5601169aa0f494
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jun 1 12:28:30 2010 +0000
-
-    Fix #223: implement ctbcs_build_modify_verification_apdu.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4396 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6f527112800516b8aad72a5c74622e16d0bc44b6
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jun 1 12:28:23 2010 +0000
-
-    CT-API: Fix the mess left from broken [3931] and some pieces from [4118].
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4395 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 68f12c881dde464a92943101b576af1837bec1bd
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon May 31 16:49:55 2010 +0000
-
-    Fix a segfault leftover from r4118
-    
-    Thanks to Andre Zepezauer for the report and patch.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4391 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a4e32732989bd1bb4b5c09eb3e6937c956d6c345
-Author: s <s at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun May 30 13:54:54 2010 +0000
-
-    Rutoken S: add 'aid' to profile (for '-init --create-pkcs15 --so-pin 87654321 --so-puk  -p rutoken+small')
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4390 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 15d51479aee9dcbef31de2d3e65bfffbcd359c79
-Author: s <s at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun May 30 13:52:04 2010 +0000
-
-    fix: SIGSEGV
-    
-    Program received signal SIGSEGV, Segmentation fault.
-    0x00007f7d6f29fd55 in free () from /lib64/libc.so.6
-    (gdb) bt
-    #0  0x00007f7d6f29fd55 in free () from /lib64/libc.so.6
-    #1  0x00007f7d703a4128 in sc_update_dir (card=0x17463a0, app=<value optimized out>) at dir.c:306
-    #2  0x00007f7d7040cb58 in sc_pkcs15init_add_app (card=<value optimized out>, profile=0x1754840,
-        args=<value optimized out>) at pkcs15-lib.c:2354
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4389 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0f74f69695639e51a55defc68fad44526cec7338
-Author: s <s at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun May 30 07:56:34 2010 +0000
-
-    fix: memory leak (but see FIXME)
-    
-    ==21111== 1,360 (120 direct, 1,240 indirect) bytes in 1 blocks are definitely lost in loss record 107 of 109
-    ==21111==    at 0x4C24F0D: realloc (vg_replace_malloc.c:476)
-    ==21111==    by 0x409D23: sc_pkcs11_register_mechanism (mechanism.c:44)
-    ==21111==    by 0x410595: pkcs15_bind (framework-pkcs15.c:3160)
-    ==21111==    by 0x4085DD: card_detect (slot.c:214)
-    ==21111==    by 0x408887: initialize_reader (slot.c:114)
-    ==21111==    by 0x404C50: C_Initialize (pkcs11-global.c:247)
-    ==21111==    by 0x4034C9: main
-    ==21111==
-    ==21111== LEAK SUMMARY:
-    ==21111==    definitely lost: 120 bytes in 1 blocks
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4388 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a91e77187b469e65ad8caa5cc51d1a2e30e445d4
-Author: s <s at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun May 30 07:52:14 2010 +0000
-
-    fix: memory leak - next object missed out to release
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4387 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c5c649e0ea18d751723ac41a5d7936e8407c5b2e
-Author: s <s at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun May 30 07:31:31 2010 +0000
-
-    fix: memory leak
-    
-    example:
-    
-    int main()
-    {
-            C_Initialize(NULL);
-            C_Finalize(NULL);
-            return 0;
-    }
-    
-    ==4625== 592 (504 direct, 88 indirect) bytes in 1 blocks are definitely lost
-    in loss record 9 of 10
-    ==4625==    at 0x4C24137: calloc (vg_replace_malloc.c:418)
-    ==4625==    by 0x407FD9: create_slot (slot.c:80)
-    ==4625==    by 0x40452C: C_Initialize (pkcs11-global.c:243)
-    ==4625==    by 0x40342A: main
-    ==4625==
-    ==4625== 4,736 (4,032 direct, 704 indirect) bytes in 8 blocks are definitely
-    lost in loss record 10 of 10
-    ==4625==    at 0x4C24137: calloc (vg_replace_malloc.c:418)
-    ==4625==    by 0x407FD9: create_slot (slot.c:80)
-    ==4625==    by 0x408102: initialize_reader (slot.c:108)
-    ==4625==    by 0x4044E0: C_Initialize (pkcs11-global.c:247)
-    ==4625==    by 0x40342A: main
-    ==4625==
-    ==4625== LEAK SUMMARY:
-    ==4625==    definitely lost: 4,536 bytes in 9 blocks
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4386 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 78d6bc418975608da55706dc79837f116c5b9064
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu May 27 08:12:20 2010 +0000
-
-    pkcs15init: fix undeclared variable
-    
-    Noted by Jean-Michel, thanks.
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4383 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit fff1963931e11675d9b62ba4cdbb5a3d5e4a5904
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed May 26 14:33:01 2010 +0000
-
-    pkcs15init: do not reuse existing file when storing object data or updating certificate
-    
-    merged with r4380:4380 of https://www.opensc-project.org/svn/opensc/branches/vtarasov/opensc-sm.trunk
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4382 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit fec213ad2e256baf61cc30d91405b07e6ab4baef
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue May 25 08:06:28 2010 +0000
-
-    pkcs11: DER encoded value for CKA_SERIAL_NUMBER
-    
-    discussed in http://www.opensc-project.org/pipermail/opensc-devel/2010-May/014264.html
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4375 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2d3722389de98fc116770f94621a9a9f4bb9b4aa
-Author: s <s at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed May 19 19:49:12 2010 +0000
-
-    fix: Rutoken S: no need to reserve 5000 bytes for AppDF (pkcs15.profile: size = 5000)
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4365 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 73c516a7a0cfc006956a53526f927b96d5b09546
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed May 19 09:18:38 2010 +0000
-
-    pkcs11: resolve 'endless polling' in C_WaitForSlotEvent()
-    
-    http://www.opensc-project.org/pipermail/opensc-devel/2010-April/013947.html
-    
-    Tested with Firefox 3.6.3 in WinXP SP3 .
-    
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4363 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d9b0d643de89965df968ce86faf56545cb2c7504
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed May 19 08:37:29 2010 +0000
-
-    libopensc: in sc_pkcs15_verify_pin() if no PIN provided try to use pin pad
-    
-    It's a complement to the r4361.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4362 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e23756123eef650194e4e53c73819ce74d837873
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed May 19 08:26:01 2010 +0000
-
-    pkcs15init: when verifying PIN, if no value supplied, try to use pin pad
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4361 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 99c51c6748c1054d9fe8791bf82d452ab94de24c
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed May 19 08:18:34 2010 +0000
-
-    libopensc: do not invalidate card cache in sc_unlock()
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4360 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ffc9f8efc69c00f9208522d6f3b22ebe44d98404
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed May 19 08:17:53 2010 +0000
-
-    pkcs11: by default do not lock login
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4359 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 98037b795d2faa29273d2b480082fd0dcf34648d
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri May 14 13:37:48 2010 +0000
-
-    MuscleApplet: Detect MuscleApplet specific SW-s; re-organize the source a little.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4350 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 290d1cb4d6093b22e5b8c65c9706dacda27cab79
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri May 14 07:40:02 2010 +0000
-
-    Muscle: use MuscleApplet as the name of the card as well as driver
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4349 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit bfa340ba512bd97d66adcfc465dd58529e2ba885
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri May 14 07:39:58 2010 +0000
-
-    MuscleApplet: remove useless card detection flagging, don't call the default driver init operation.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4348 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 46def8b86cae98791049fd648128ad091ffec172
-Author: s <s at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu May 13 21:57:28 2010 +0000
-
-    fix: loading openssl engine with GOST algorithms
-    
-    Thanks to Jan Just Keijser, Martin Paljak, Andreas Jellinghaus, Robert Relyea, Dimitrios Siganos
-    
-    see:
-    http://www.opensc-project.org/pipermail/opensc-devel/2010-April/013956.html
-    http://www.opensc-project.org/pipermail/opensc-devel/2010-April/013966.html
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4347 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ed610517d7a8e31e64d6df7dbda3562fef218516
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu May 13 17:47:04 2010 +0000
-
-    plcs11: set default value for 'lock_login' to 'true' as it' stated by
-    the commets in opensc.con.in
-    
-    At the origin there were problem of signing with Feitian card, noted by
-    Ludovic.
-    
-    http://www.opensc-project.org/pipermail/opensc-devel/2010-May/014180.html
-    
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4346 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 39642a5d9308d62d29d4812ab7dc8d666f9b299c
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu May 13 17:45:43 2010 +0000
-
-    in feitian profile set 'local' flag for the User PIN
-    
-    so that Feitian card profile will reflect the real card initialisation.
-    
-    At the origin there were problem of signing with Feitian card, noted by Ludovic.
-    
-    http://www.opensc-project.org/pipermail/opensc-devel/2010-May/014180.html
-    
-    
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4345 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6f1683d7bd0cfa8cd06d297ca3b9d3cc31d7059f
-Author: flc <flc at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue May 11 14:40:10 2010 +0000
-
-    wetcos-tools: add util.c to compile.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4339 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ed26525e937821e3b105f8f6dc1ab9f27fd2a9a6
-Author: flc <flc at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue May 11 14:35:38 2010 +0000
-
-    update westcos-tools documentation with new options
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4337 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5ae92ebcecadf571d92fbf4f28af74a86cd20913
-Author: flc <flc at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue May 11 14:34:39 2010 +0000
-
-    clean some code and use more opensc standard
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4336 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a4df57eb4dc107728b6acd2594d7124e07d28ddb
-Author: flc <flc at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue May 11 14:30:15 2010 +0000
-
-    --wait option don't need argument
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4335 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e63d12bc8f9bee572dfda8c76b95c922219395f8
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon May 10 14:35:43 2010 +0000
-
-    replace spaces by tab
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4326 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 922d7cdc66d51b991ed8c29baf4d0f04e74f806a
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon May 10 09:18:49 2010 +0000
-
-    add TODO comments
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4325 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0ad7704247f6e7c3e65ed4a5e0bb5c8684adb776
-Author: flc <flc at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri May 7 12:49:53 2010 +0000
-
-    westcos pkcs15 emulate certificat or public key not both
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4310 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9e74991250f0008abfe1fb5c7f89d9d06c0b8448
-Author: flc <flc at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed May 5 09:31:44 2010 +0000
-
-    Add cardmod pcsc protocol detection
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4288 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 140f3d0d980351098b450f5d6606d343f34e97b8
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon May 3 15:44:27 2010 +0000
-
-    liopensc: fix debug message
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4283 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ac41eba3ac90fff040720cfcc51fea7ef1772679
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat May 1 12:15:36 2010 +0000
-
-    win32: merge the branches/vtarasov/opensc-sm.trunk
-    
-    update win32 compilation;
-    Unix style line ending in src/pkcs15init/pkcs15-oberthur.h;
-    variables declaration issue in src/tools/cardos-tool.c.
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4280 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f505d4f5be9c474e5b527caa05485983ccae2fda
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 28 09:20:19 2010 +0000
-
-    pkcs15-init tool: remove blank line after PIN was prompted
-    
-    Noted by Martin.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4273 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f17ca0fd74391f5a1493479de11c8276b3e28ab1
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 28 09:20:18 2010 +0000
-
-    tools: in local 'getpass' procedure getline() is not used any more
-    
-    Without GNU C extention 'getline()' the same code of the local 'getpass' procedure is used for Mac OS and Linux.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4272 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d5f201bcb544b3a58d36730bf6472d36bd94ddb5
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 28 09:20:17 2010 +0000
-
-    pkcs15init: in sc_pkcs15init_update_file() take care about file selection errors
-    
-    Noted by Ludovic.
-    
-    In sc_pkcs15init_update_file() procedure the file selection errors other then SC_ERROR_FILE_NOT_FOUND were not treated.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4271 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b6fb4ff84aae66eddb433e4617c26ed6af96f541
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 28 09:16:27 2010 +0000
-
-    Change in r4269 is not correct since sc_pkcs1_strip_02_padding() returns
-    an int and not a size_t
-    The new code is also simpler
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4270 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 71598ad460d60c53689d3b9ac595dc487e60e60f
-Author: jps <jps at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 27 13:25:17 2010 +0000
-
-    r4208 breaks key unwrap.
-    pkcs11-tool -tl gives an error and mail can not be anymore decrypted (tested with Thunderbird).
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4269 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7d5b34d4e80c50dc5b7f64fee958ee2dd79d1077
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 27 07:30:38 2010 +0000
-
-    tools: thanks to Andreas; for win32 'get password' procedure uses _getch() instead of getchar()
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4268 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 25fa645b9028dee21023e0804186d3ae6491047e
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Apr 26 12:29:44 2010 +0000
-
-    pkcd15-tool: use local 'getpass' procedure
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4267 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 122d357fde9e8dc99d542fd9f267300997a0cbe6
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Apr 26 12:29:42 2010 +0000
-
-    tools: thanks to Ludovic; check for getline() in configure.ac and use 'HAVE_GETLINE' macro in get password procedure.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4266 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 06f5b0ba5b693ea511aff7869a1187c6c7cae958
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Apr 24 17:37:02 2010 +0000
-
-        pkcs15init: when updating certificate and when there are no ACLs in FCI of selected file use default ACLs from the card profile
-    
-        Some cards do not include security attributes into the FCI returned by 'SELECT' command.
-        For such cards, when updating certificate, to authenticate 'UPDATE' operation use the
-        'sc_file' with default ACLs instantiated from the card profile.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4265 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit aa4d9511018530d9ef148e930b7fe8a2a8c254b9
-Author: jps <jps at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 21 14:38:23 2010 +0000
-
-    Support for CardOS 4.4
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4264 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ba04831e34dbfee207d63275dedbc79cc9234e5c
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 21 11:57:10 2010 +0000
-
-    sc_to_cryptoki_error(): check for the validity of ctx outside of the
-    for loop to make the code more natural
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4263 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0400a2dc3584e67d60e1556490d57621c17aa18a
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 21 10:51:13 2010 +0000
-
-    pkcs11: make possible context dependent 'sc' to 'cryptoki' error conversion
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4262 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8f4ee1b6e4c891cd34012a495f69ffcea8f32b47
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 20 17:09:26 2010 +0000
-
-    pkcs15init: fix #96: more details for the load profiles error
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4261 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 34841669a26a58185c30d63d24a8d0e2651555df
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 20 15:43:44 2010 +0000
-
-    fix #118: thanks to Andreas: list algorithms in opensc-tool
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4260 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1966822aa72e8d9f107de14742f9e828cdb4565c
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 20 15:11:58 2010 +0000
-
-    fix 201: thanks to Christian Hohnstaedt: delete objects in pkcs11
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4259 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b7d492fbae6c57f6f5173ef857265efcee42cdf0
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Apr 19 12:13:16 2010 +0000
-
-    pkcs15-init tool: with the new option 'use-default-debug-settings' the debug settings from opensc.conf are used
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4258 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 83ca335da75d8c8b364b1e5fd437d33b4adec3a9
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Apr 19 12:10:56 2010 +0000
-
-    cflex pkcs15init: use temporary PINs that satisfy default pin policy
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4257 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a38e931b31990838cf58e7301078befde44ce315
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Apr 19 08:31:25 2010 +0000
-
-    doc: little fix of opensc-explorer.xml
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4256 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit be3670600b13b8177b8795b42e1dad1a912b9db6
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Apr 18 16:38:49 2010 +0000
-
-    emulator fix #125: thanks to Thomas Harning: emulator specific 'clear' handler
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4255 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 07c98da3a867a3d371c133de5a18dd9a4b18a5f6
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Apr 18 16:01:13 2010 +0000
-
-    pkcs15-init: #101: use PIN object's label in the PIN prompt
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4254 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 00044617342bd1937878a18dc532a9e565f3d296
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Apr 18 14:51:44 2010 +0000
-
-    oberthur: add in emulator and create in pkcs15init the private data object
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4253 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3c813ce57bc7a2bd7560e499fed9d1c7ba905137
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Apr 18 09:45:44 2010 +0000
-
-    pkcs15-init tool: use Ctrl-C sensible 'getpass'
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4252 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a10bf0e35664ab752aef83bdb56dac00aa91bb1a
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Apr 18 08:32:35 2010 +0000
-
-    pkcs11-tool: #120: use 'getpass' sensible to Ctrl-C, thanks to Andreas
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4251 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 238ebeb159567d00bf3561322b13ef48d7ef6f0d
-Author: pk <pk at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Apr 18 08:24:17 2010 +0000
-
-    fixed incorrect IDs of SigG-PINs from 6,7 to 5,6
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4250 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d0618ba24c0b442d2965e05a39057f7712ad019d
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Apr 18 07:47:16 2010 +0000
-
-    tools: #120: 'getpass' sensible to Ctrl-C, thanks to Andreas
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4249 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f7575879cc5ca3a8b811e5fcfec4f9b2c802d95b
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Apr 18 07:30:21 2010 +0000
-
-    pkcs11-tool: useless assignment
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4248 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ce485e48951d6ba60cc6c8acdbbc4db87ccbbbc5
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Apr 17 19:59:32 2010 +0000
-
-    pkcs11-tool: fix #124; thanks to Thomas Harnings: for the signature tests cannot be used private key without corresponding public key or certificate
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4247 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7813ba7130b6efbb3996fa8b8e8eb06fe068333a
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Apr 17 19:03:53 2010 +0000
-
-    doc: update 'opensc-explorer' documentation
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4246 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7a0578c670bfebd8abc2c7ad2d5deead73341c31
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Apr 17 18:51:34 2010 +0000
-
-    set_cka_label(): remove a possibly invalid memory access
-    
-    See
-    http://www.opensc-project.org/pipermail/opensc-devel/2010-April/013990.html
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4245 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d10effd58c8f58c5a6dbe500fbf7f6c1bfb40cf3
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 16 19:34:47 2010 +0000
-
-    libopensc: fix #209
-    
-    In APDU consider Le=0 as Le=256
-    
-    Thanks to FrankMpunkt, Martin, ludovic.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4244 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2fdfe2574dd93b5a157a2670b358941d20288344
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Apr 15 15:37:55 2010 +0000
-
-    pkcs11: Christian Hohnstaedt's patch: convert CKA_LABEL to the null-terminated pkcs15 label
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4243 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ad0207852e0a61c0d84823dd8b2b2a54169277a6
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 14 11:52:27 2010 +0000
-
-    libopensc for win32: get working logging when compiled with Visual Studio
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4242 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9396297f2156d0d5e8c6814a57745284d4b15636
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 14 11:41:16 2010 +0000
-
-    libopensc for win32: to be compiled
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4241 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2e5b3c540ce1abb17deaf9f73aa43bda136705e9
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 14 11:40:08 2010 +0000
-
-    common for win32: to be compiled
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4240 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f3e3dc9bee02fe9f3a95eb18c311aed0561b6029
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 14 11:37:39 2010 +0000
-
-    common for win32: add simclist
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4239 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 801fdcefe2b7aa284de064aee5aa46ea9961946e
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 14 11:36:40 2010 +0000
-
-    pkcs11, libopensc, pkkcs15init: not use C99 designated initializers
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4238 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3d6eaca8308d95d9c18e3517ca9e2015d16eb9f7
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 14 11:34:11 2010 +0000
-
-    pkcs11 for win32: add source for display functions
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4237 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7ec26d75ae2d4f713d328b8e453c72799bf605ac
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 13 11:30:03 2010 +0000
-
-    JCOP/BlueZ: remove unused code
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4236 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit dac21574bf8638773a434596c4447e73a6b6cb0b
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 13 11:29:59 2010 +0000
-
-    card-incrypto34: Remove dead code
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4235 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit be43ca7bb222116ed5a1d15644ac85c7cd063972
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 13 11:29:53 2010 +0000
-
-    Remove cardos-info (renamed to cardos-tool in 2008)
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4234 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a20fa13922ecd6aa3df33edf30c0c3e98a5956c9
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 13 11:29:50 2010 +0000
-
-    pkcs15-init: remove dead code
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4233 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 75df8e9d2a32e3e9b24e572586c1dba94149f0c6
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 13 11:29:45 2010 +0000
-
-    piv-tool: remove dead code.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4232 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 847f162698acf9709c4ce4aff0ed76488fc765e2
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 13 11:29:42 2010 +0000
-
-    docs: the correct name is cardos-tool
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4231 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 349b31ecf39d4e8fe99d4d16d5a819c1642b2e43
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 13 11:29:37 2010 +0000
-
-    westcos-tool: fix header, the file is .c not .exe
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4230 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f63e2eef4bf83161c9286f606f1da9125c967f91
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 13 11:29:33 2010 +0000
-
-    cryptoflex-tool: remove dead code from 2002
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4229 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 57c38d94adb25fe5b5eef76ff25c5f8857c9703f
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 13 11:29:27 2010 +0000
-
-    cryptoflex-tool: remove dead code.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4228 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f1615528900ea271a1ffdd45265630df51d24578
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 13 11:29:21 2010 +0000
-
-    netkey-tool: The tool is included in OpenSC, no need to have a compilation tip in the file header.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4227 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c73aaf990a1477971a48ce73b80e1089f0842fed
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 13 11:29:17 2010 +0000
-
-    pkcs15-tool: fix help text, reader must no be a number
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4226 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 119546e7bce9bffa20c5f6231f7f743b21fa3e47
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 13 11:29:12 2010 +0000
-
-    cryptoflex-tool: use the code in util.c to connect to the card.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4225 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9361c956adc9d0e1d7826a239c74afdb41d17133
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 13 11:29:08 2010 +0000
-
-    pkcs15-crypt: remove useless #if 1
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4224 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7720f3759c04330bbcae75f20ee248318b52b7ec
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 13 11:29:03 2010 +0000
-
-    eidenv: remove a redundant sc_lock call, already done in util.c
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4223 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5b40b0eb0c6c70d27929fee8e1bfc6a945ecdcf3
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 13 11:28:59 2010 +0000
-
-    pkcs15-tool: Remove a redundant sc_lock/sc_unlock pair
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4222 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 64d05bb6d787d6092b0d98d171a108f8e750f142
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 13 09:12:03 2010 +0000
-
-    compile for win32: fix
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4221 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a31be9540cc35bd386856229c4a1e71e5beace04
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Apr 12 13:48:54 2010 +0000
-
-    libopensc in win32: no more ui.h
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4220 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d3068f58d27b128379758e2a2633a32237c5ea7e
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Apr 12 13:42:11 2010 +0000
-
-    libopensc in win32: no more ui.h
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4219 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 523d52924867adbf2e95e510cda35ed281c2dd5f
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Apr 12 13:41:04 2010 +0000
-
-    pkcs15init: no more 'keycache' sources
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4218 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d3652ebf83c3c44b0edf17729e54b8732beaf7fe
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Apr 12 13:37:38 2010 +0000
-
-    pkcs15init: no more 'keycache' sources
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4217 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1c7aefe76e4dced369c6329e98e6e7728da005d4
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Apr 12 08:46:27 2010 +0000
-
-    pkcs15init: corrent debug messages
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4216 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f9eb1b3bbb5f1dda41486cc16a544f7e7c31ec46
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Apr 12 08:44:24 2010 +0000
-
-    pkcs15init: for the newly generated key object set public key as it's content
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4215 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 741d8fc0b85b8c12cd181ef67629da85053fb7e2
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Apr 11 17:44:39 2010 +0000
-
-    pkcs11-tool: #75: key for signature can be selected by object_id
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4214 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a3177b727ae64353072bfad1f1d0b2490b849565
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 2 14:08:22 2010 +0000
-
-    Use explict field names in the static initialisation to make it more
-    robust to code change
-    
-    Fix
-    card-myeid.c:44: warning: missing initializer
-    card-myeid.c:44: warning: (near initialization for ‘myeid_drv.atr_map’)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4213 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f8fa63631151f89fdcfd961d48faafa37b8aee4a
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 2 13:57:30 2010 +0000
-
-    Do not use a type of possibly different size.
-    Would fail on PowerPC in 64-bits for example.
-    
-    Fix
-    card-entersafe.c: In function ‘entersafe_cipher_apdu’:
-    card-entersafe.c:197: warning: passing argument 3 of ‘EVP_EncryptUpdate’ from incompatible pointer type
-    card-entersafe.c: In function ‘entersafe_mac_apdu’:
-    card-entersafe.c:270: warning: passing argument 3 of ‘EVP_EncryptUpdate’ from incompatible pointer type
-    card-entersafe.c:278: warning: passing argument 3 of ‘EVP_EncryptUpdate’ from incompatible pointer type
-    card-entersafe.c:286: warning: passing argument 3 of ‘EVP_EncryptUpdate’ from incompatible pointer type
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4212 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 70b649e01b30bf32b6b2dcaadf90c158f7099024
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 2 13:51:51 2010 +0000
-
-    Use (const char *) for static C-strings
-    
-    Fix
-    reader-pcsc.c: In function ‘pcsc_detect_readers’:
-    reader-pcsc.c:856: warning: initialization discards qualifiers from pointer target type
-    reader-pcsc.c:884: warning: initialization discards qualifiers from pointer target type
-    reader-pcsc.c:894: warning: initialization discards qualifiers from pointer target type
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4211 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a2ff157eefb20c60007f40badcb4c0fe4dabf60e
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 2 13:49:54 2010 +0000
-
-    Rename variables and parameters
-    
-    Fix
-    muscle.c: In function ‘msc_create_object’:
-    muscle.c:144: warning: declaration of ‘read’ shadows a global declaration
-    /usr/include/unistd.h:477: warning: shadowed declaration is here
-    muscle.c:144: warning: declaration of ‘write’ shadows a global declaration
-    /usr/include/unistd.h:513: warning: shadowed declaration is here
-    muscle.c: In function ‘msc_import_key’:
-    muscle.c:941: warning: declaration of ‘read’ shadows a global declaration
-    /usr/include/unistd.h:477: warning: shadowed declaration is here
-    muscle.c:942: warning: declaration of ‘write’ shadows a global declaration
-    /usr/include/unistd.h:513: warning: shadowed declaration is here
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4210 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0500ef628b82cf22c6c80aac73727ecfe9e7fdc5
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 2 13:45:27 2010 +0000
-
-    Do not cast a pointer to a type of possibly different size.
-    Would fail on PowerPC in 64-bits for example.
-    
-    pkcs15-wrap.c: In function ‘do_cipher’:
-    pkcs15-wrap.c:152: warning: dereferencing type-punned pointer will break strict-aliasing rules
-    pkcs15-wrap.c:159: warning: dereferencing type-punned pointer will break strict-aliasing rules
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4209 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e0bf75f69f52730d3c8379c5f8f2920526d22dc9
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 2 13:33:27 2010 +0000
-
-    Do not cast a pointer to a type of possibly different size.
-    Would fail on PowerPC in 64-bits for example.
-    
-    pkcs15-sec.c: In function ‘sc_pkcs15_decipher’:
-    pkcs15-sec.c:136: warning: dereferencing type-punned pointer will break strict-aliasing rules
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4208 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0c77a52f37797c6f74d0599d11c467bfb9bce1e2
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 2 13:12:53 2010 +0000
-
-    Remove 2 ugly casts and fix warnings
-    
-    asn1.c: In function ‘asn1_decode_entry’:
-    asn1.c:979: warning: dereferencing type-punned pointer will break strict-aliasing rules
-    asn1.c: In function ‘asn1_encode_entry’:
-    asn1.c:1263: warning: dereferencing type-punned pointer will break strict-aliasing rules
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4207 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 379519e84e6eafd352035fc2a74732e34d1af294
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 2 13:11:07 2010 +0000
-
-    Revert r4191 "Fix logic in pkcs15-tool/pkcs15-init -v"
-    
-    This reverts commit a61f61929647ed70f0258b2bcf1657fc5fef0fe1.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4206 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2820f78e0985687cbe0b853287acc3a2f63b068a
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 2 12:23:21 2010 +0000
-
-    Fix
-    pkcs15-oberthur-awp.c: In function ‘awp_encode_data_info’:
-    pkcs15-oberthur-awp.c:1211: warning: implicit declaration of function ‘sc_asn1_encode_object_id’
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4205 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d4b143830a36a842a6b8d44e7fda64ae5c3d0518
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 2 12:21:48 2010 +0000
-
-    Rename variable rand in rand_buf
-    
-    pkcs15-oberthur-awp.c: In function ‘awp_new_container_entry’:
-    pkcs15-oberthur-awp.c:241: warning: declaration of ‘rand’ shadows a global declaration
-    /usr/include/stdlib.h:176: warning: shadowed declaration is here
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4204 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8f6317b31b96590acc9da57dec25b9a2e76f4a03
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 2 12:19:14 2010 +0000
-
-    Use size_t instead of int to fix a compiler warning
-    
-    pkcs15-oberthur.c: In function ‘cosm_write_tokeninfo’:
-    pkcs15-oberthur.c:100: warning: comparison between signed and unsigned
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4203 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8822668466f8a8fad057a56b5f3f81ca390c9f3a
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 2 12:15:12 2010 +0000
-
-    Use size_t instead of int to fix a compiler warning
-    
-    pkcs15-myeid.c: In function ‘myeid_generate_key’:
-    pkcs15-myeid.c:687: warning: comparison between signed and unsigned
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4202 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 28a2ed6bd148458df97c00b21e3d7301691dfc58
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 2 12:13:41 2010 +0000
-
-    Fix
-    pkcs15-myeid.c: In function ‘myeid_new_file’:
-    pkcs15-myeid.c:321: warning: assignment discards qualifiers from pointer target type
-    pkcs15-myeid.c:323: warning: assignment discards qualifiers from pointer target type
-    pkcs15-myeid.c:325: warning: assignment discards qualifiers from pointer target type
-    pkcs15-myeid.c:327: warning: assignment discards qualifiers from pointer target type
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4201 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4c6b6f937a8a42bb50907d07c5bc0c8ddd02704a
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 2 12:12:27 2010 +0000
-
-    Fix
-    pkcs15-entersafe.c:200: warning: initialization discards qualifiers from pointer target type
-    pkcs15-entersafe.c:201: warning: initialization discards qualifiers from pointer target type
-    pkcs15-entersafe.c:202: warning: initialization discards qualifiers from pointer target type
-    pkcs15-entersafe.c:203: warning: initialization discards qualifiers from pointer target type
-    pkcs15-entersafe.c:204: warning: initialization discards qualifiers from pointer target type
-    pkcs15-entersafe.c:205: warning: initialization discards qualifiers from pointer target type
-    pkcs15-entersafe.c:206: warning: initialization discards qualifiers from pointer target type
-    pkcs15-entersafe.c:207: warning: initialization discards qualifiers from pointer target type
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4200 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit de2b498c31a4972f99547d9644df92f653e78f33
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 2 12:10:33 2010 +0000
-
-    setcos_generate_key(): use size_t instead of int to fix a compiler
-    warning
-    
-    pkcs15-setcos.c:488: warning: comparison between signed and unsigned
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4199 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a3aa685be228f66ba155efb3980fad57eca09a1f
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 2 12:05:40 2010 +0000
-
-    Use explict field names in the static initialisation to make it more
-    robust to code change
-    
-    pkcs15-setcos.c:588: warning: missing initializer
-    pkcs15-setcos.c:588: warning: (near initialization for ‘sc_pkcs15init_setcos_operations.emu_update_dir’)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4198 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0f32e8673211aabec6accb513bdd0f21363aa6b0
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 2 11:58:08 2010 +0000
-
-    declare a variable (const char *) to fix compiler warnings
-    
-    pkcs15-setcos.c: In function ‘setcos_new_file’:
-    pkcs15-setcos.c:263: warning: assignment discards qualifiers from pointer target type
-    pkcs15-setcos.c:265: warning: assignment discards qualifiers from pointer target type
-    pkcs15-setcos.c:267: warning: assignment discards qualifiers from pointer target type
-    pkcs15-setcos.c:269: warning: assignment discards qualifiers from pointer target type
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4197 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 88764575f28c31887850755ee410e2ba7a245d58
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 2 11:55:13 2010 +0000
-
-    use (const char *) as return type to avoid compilation warnings:
-    
-    pkcs15-lib.c: In function ‘get_template_name_from_object’:
-    pkcs15-lib.c:2152: warning: return discards qualifiers from pointer target type
-    pkcs15-lib.c:2154: warning: return discards qualifiers from pointer target type
-    pkcs15-lib.c:2156: warning: return discards qualifiers from pointer target type
-    pkcs15-lib.c:2159: warning: return discards qualifiers from pointer target type
-    pkcs15-lib.c:2161: warning: return discards qualifiers from pointer target type
-    pkcs15-lib.c: In function ‘get_pin_ident_name’:
-    pkcs15-lib.c:2815: warning: return discards qualifiers from pointer target type
-    pkcs15-lib.c:2817: warning: return discards qualifiers from pointer target type
-    pkcs15-lib.c:2819: warning: return discards qualifiers from pointer target type
-    pkcs15-lib.c:2823: warning: return discards qualifiers from pointer target type
-    pkcs15-lib.c:2825: warning: return discards qualifiers from pointer target type
-    pkcs15-lib.c:2827: warning: return discards qualifiers from pointer target type
-    pkcs15-lib.c:2829: warning: return discards qualifiers from pointer target type
-    pkcs15-lib.c:2832: warning: return discards qualifiers from pointer target type
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4196 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ad1dddabf35a0f5b98e3bc0b68351a3847a2f693
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 2 11:43:09 2010 +0000
-
-    use explict field names in the static initialisation to make it more
-    robust to code change
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4195 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5957c7a8808f30da890c61d71bc0c867619c8019
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Apr 1 14:37:33 2010 +0000
-
-    Fix a line ordering error.
-    
-    Thanks to Roland Schwarz
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4194 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d1d47d44c5c9f136a26e79c1d5e2af1b3b7ca29b
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Apr 1 14:16:43 2010 +0000
-
-    Fix #198: set correct access flags to private keys
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4193 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit cd83821502ad6bdf54825c5ec494cf6ddcb2773b
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Apr 1 14:16:23 2010 +0000
-
-    Don't use sc_debug in src/tools/*, use fprintf(stderr) instead.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4192 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a61f61929647ed70f0258b2bcf1657fc5fef0fe1
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Apr 1 13:44:02 2010 +0000
-
-    Fix logic in pkcs15-tool/pkcs15-init -v
-    
-    Only override ctx->debug if -v given.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4191 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 629aef2ee8ce0a02b2495218a9e85893e5c9bffd
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Apr 1 11:21:57 2010 +0000
-
-    Use an argument to cardos_format()
-    
-    Thanks to Andreas Jellinghaus for the patch
-    http://www.opensc-project.org/pipermail/opensc-devel/2010-March/013849.html
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4190 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8323182d4ac18cc7672db3c40491e7348ac5f6e3
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Apr 1 10:14:22 2010 +0000
-
-    Remove leftover from r4113, allow easy side-by-side comparison
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4189 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4eaba6b40466f241acdcbbad5851459ed35a2da9
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 31 12:41:39 2010 +0000
-
-    muscle profile: keep default ACLs for the 'DIR' file
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4188 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e61f5964d79a5cd3d88782a8475182e817d22bb1
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Mar 30 06:35:00 2010 +0000
-
-    Fix r4182, LIBS must never go into LDFLAGS
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4187 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d67f3f93f64f9d151eb6ad1b37f2c2d4980119f8
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Mar 29 14:34:02 2010 +0000
-
-    Use the correct integer type.
-    
-    Fix openssl.c:182: warning: passing argument 3 of ‘EVP_DigestFinal’ from
-    incompatible pointer type
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4186 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 30d43413be2f296acc38e2daa17e23e7bcf6cc18
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Mar 29 14:30:03 2010 +0000
-
-    Add missing (optional) initializer
-    
-    Fix
-    openssl.c:42: warning: missing initializer openssl.c:42: warning: (near initialization for ‘openssl_sha1_mech.sign_init’)
-    openssl.c:53: warning: missing initializer openssl.c:53: warning: (near initialization for ‘openssl_sha256_mech.sign_init’)
-    openssl.c:63: warning: missing initializer openssl.c:63: warning: (near initialization for ‘openssl_sha384_mech.sign_init’)
-    openssl.c:73: warning: missing initializer openssl.c:73: warning: (near initialization for ‘openssl_sha512_mech.sign_init’)
-    openssl.c:96: warning: missing initializer openssl.c:96: warning: (near initialization for ‘openssl_md5_mech.sign_init’)
-    openssl.c:106: warning: missing initializer openssl.c:106: warning: (near initialization for ‘openssl_ripemd160_mech.sign_init’)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4185 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit cb5a21c5fa7414c1ea0daf21c1d45b4e8bfa2b70
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Mar 29 14:19:26 2010 +0000
-
-    Use a temporary pointer to avoid a pointer cast.
-    
-    Fix pkcs11-display.c:137: warning: dereferencing type-punned pointer
-    will break strict-aliasing rules
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4184 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 502db6bd36aec4afb5f9e64fe6446ddb06645455
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Mar 29 14:10:17 2010 +0000
-
-    Do not cast a pointer to a type of possibly different size.
-    Would fail on PowerPC in 64-bits for example.
-    
-    pkcs15-crypt.c: In function ‘sign_ext’:
-    pkcs15-crypt.c:293: warning: dereferencing type-punned pointer will break strict-aliasing rules
-    pkcs15-crypt.c:299: warning: dereferencing type-punned pointer will break strict-aliasing rules
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4183 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7d782f63a3ee7df1a2785ad0f6d0890bfe787fe2
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Mar 29 13:30:33 2010 +0000
-
-    Link libpkcs11 to $(LTLIB_LIBS) since the lib uses ld_dlopen(), etc.
-    
-    Fix a compilation error for src/tools/pkcs11-tool:
-    /usr/bin/ld: ../../src/pkcs11/.libs/libpkcs11.a(libpkcs11.o): in function C_UnloadModule:libpkcs11.c:78: error: undefined reference to `lt_dlclose'
-    /usr/bin/ld: ../../src/pkcs11/.libs/libpkcs11.a(libpkcs11.o): in function C_LoadModule:libpkcs11.c:36: error: undefined reference to `lt_dlinit'
-    /usr/bin/ld: ../../src/pkcs11/.libs/libpkcs11.a(libpkcs11.o): in function C_LoadModule:libpkcs11.c:43: error: undefined reference to `lt_dlopen'
-    /usr/bin/ld: ../../src/pkcs11/.libs/libpkcs11.a(libpkcs11.o): in function C_LoadModule:libpkcs11.c:52: error: undefined reference to `lt_dlsym'
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4182 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ad648c4a18eca02bf5f469da735b84e6736ad7d6
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Mar 29 12:55:13 2010 +0000
-
-    Use the correct type (const_DES_cblock *) instead of (const_DES_cblock)
-    for DES_ecb_encrypt() input and output parameters.
-    
-    I have no idea how it could have worked.
-    
-    Fix
-    cardos-tool.c: In function ‘cardos_sm4h’:
-    cardos-tool.c:421: warning: passing argument 1 of ‘DES_ecb_encrypt’ from incompatible pointer type
-    cardos-tool.c:421: warning: passing argument 2 of ‘DES_ecb_encrypt’ from incompatible pointer type
-    cardos-tool.c:426: warning: passing argument 1 of ‘DES_ecb_encrypt’ from incompatible pointer type
-    cardos-tool.c:426: warning: passing argument 2 of ‘DES_ecb_encrypt’ from incompatible pointer type
-    cardos-tool.c:432: warning: passing argument 1 of ‘DES_ecb_encrypt’ from incompatible pointer type
-    cardos-tool.c:432: warning: passing argument 2 of ‘DES_ecb_encrypt’ from incompatible pointer type
-    cardos-tool.c:434: warning: passing argument 1 of ‘DES_ecb_encrypt’ from incompatible pointer type
-    cardos-tool.c:434: warning: passing argument 2 of ‘DES_ecb_encrypt’ from incompatible pointer type
-    cardos-tool.c:472: warning: passing argument 1 of ‘DES_ecb3_encrypt’ from incompatible pointer type
-    cardos-tool.c:472: warning: passing argument 2 of ‘DES_ecb3_encrypt’ from incompatible pointer type
-    cardos-tool.c:483: warning: passing argument 1 of ‘DES_ecb3_encrypt’ from incompatible pointer type
-    cardos-tool.c:483: warning: passing argument 2 of ‘DES_ecb3_encrypt’ from incompatible pointer type
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4181 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4ce1e8c831a99c2eb880a306433d38a7db23362c
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Mar 29 08:23:07 2010 +0000
-
-    Rename parameter wait in do_wait
-    
-    util.c:11: warning: declaration of ‘wait’ shadows a global declaration
-    /usr/include/sys/wait.h:255: warning: shadowed declaration is here
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4180 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit cf8a7f894f3e11087b674c37defacb88215c6d87
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Mar 29 08:20:27 2010 +0000
-
-    use a (const char *) for the reader_id and fix 2 warnings
-    
-    opensc-explorer.c:1606: warning: passing argument 3 of
-    ‘util_connect_card’ discards qualifiers from pointer target type
-    rutoken-tool.c:492: warning: passing argument 3 of ‘util_connect_card’
-    discards qualifiers from pointer target type
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4179 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d24de6ab58b020c96beb82c7767f5dc65d0989ba
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Mar 29 08:13:55 2010 +0000
-
-    Fix
-    piv-tool.c: In function ‘load_object’:
-    piv-tool.c:130: warning: implicit declaration of function ‘sc_asn1_find_tag’
-    piv-tool.c:130: warning: nested extern declaration of ‘sc_asn1_find_tag’
-    piv-tool.c:130: warning: cast from function call of type ‘int’ to non-matching type ‘u8 *’
-    piv-tool.c:130: warning: cast to pointer from integer of different size
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4178 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6946e513daed8db93bd3b293542fac608530a7b3
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Mar 29 08:11:32 2010 +0000
-
-    Fix piv-tool.c:216: warning: suggest parentheses around comparison in
-    operand of |
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4177 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3f30d90045c81279caf39411578018672fae246d
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Mar 28 21:02:56 2010 +0000
-
-    Use a "const char *" to store a const C-string ptr. Fix a lot (31) of
-    warning: initialization discards qualifiers from pointer target type
-    
-    Also cast from now (const char *) to (void *) for free()
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4176 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit cb5dd59d87021274c57952518ef58b3eeae960cd
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Mar 28 21:00:41 2010 +0000
-
-    Use a "const char *" to store a const C-string ptr. Fix a lot (162) of
-    warning: initialization discards qualifiers from pointer target type
-    
-    Also cast from now (const char *) to (void *) for free()
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4175 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6add57378232e5093a335738d8ad8b2b58d3192d
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Mar 28 20:40:13 2010 +0000
-
-    Do not cast to a possibly different type size.
-    Would fail on PowerPC in 64-bits for example.
-    
-    Fix pkcs11-tool.c:2954: warning: dereferencing type-punned pointer will
-    break strict-aliasing rules
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4174 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5be62d9d67b7dd25e4281ab2df5d6f2126bf7e34
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Mar 28 20:30:25 2010 +0000
-
-    Use a "const char *" to store a const C-string ptr.
-    
-    Fix
-    pkcs11-tool.c:1899: warning: assignment discards qualifiers from pointer target type
-    pkcs11-tool.c:1902: warning: assignment discards qualifiers from pointer target type
-    pkcs11-tool.c:1906: warning: assignment discards qualifiers from pointer target type
-    pkcs11-tool.c:1910: warning: assignment discards qualifiers from pointer target type
-    pkcs11-tool.c:1914: warning: assignment discards qualifiers from pointer target type
-    pkcs11-tool.c:1918: warning: assignment discards qualifiers from pointer target type
-    pkcs11-tool.c:1922: warning: assignment discards qualifiers from pointer target type
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4173 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 66fc414db70397a5dad43d26f4bca6a2ea97588d
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Mar 28 20:16:46 2010 +0000
-
-    Fix framework-pkcs15init.c:175: warning: initialization from
-    incompatible pointer type
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4172 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit bcba5c94a7c9ab9c383b5986cf205f42105bc521
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Mar 28 20:09:19 2010 +0000
-
-    Fix slot.c:151: warning: ‘p11card’ may be used uninitialized in this
-    function
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4171 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 227cb82612cd780d236952bf2332887b5c0486a7
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Mar 28 20:08:30 2010 +0000
-
-    Fix slot.c:234: warning: function declaration isn’t a prototype
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4170 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit bdd4477c2957482cf2c1fffca3d041982ff566e0
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Mar 28 20:06:56 2010 +0000
-
-    Fix sc-pkcs11.h:328: warning: function declaration isn’t a prototype
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4169 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0c60be861c45f165286839fec510ef2ed2fc0b16
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Mar 28 19:57:24 2010 +0000
-
-    Use a "const char *" to store a const C-string ptr.
-    
-    Fix
-    westcos-tool.c:41: warning: initialization discards qualifiers from pointer target type
-    westcos-tool.c:43: warning: initialization discards qualifiers from pointer target type
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4168 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit cd89cb31cf21c47d090b6031786d9fafb773b195
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Mar 28 19:55:39 2010 +0000
-
-    Use a "const char *" to store a const C-string ptr.
-    
-    Fix
-    netkey-tool.c:43: warning: initialization discards qualifiers from pointer target type
-    netkey-tool.c:63: warning: initialization discards qualifiers from pointer target type
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4167 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2b57feadf2f8d9b5f09dbca1661f617a762471ba
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Mar 28 16:15:26 2010 +0000
-
-    Use a temporary variable to not lose negative values (errors)
-    
-    Fix
-    westcos-tool.c:591: warning: comparison of unsigned expression < 0 is always false
-    westcos-tool.c:615: warning: comparison of unsigned expression < 0 is always false
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4166 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 24b2d23585fe2004f64394a69dd2f8447db53c4d
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Mar 28 15:04:20 2010 +0000
-
-    westcos_pkcs15_create_pin(): use a temporary variable to not lose
-    negative values (errors)
-    
-    Fix
-    pkcs15-westcos.c:135: warning: comparison of unsigned expression < 0 is always false
-    pkcs15-westcos.c:159: warning: comparison of unsigned expression < 0 is always false
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4165 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit df96df3356ce0b99bce2f5e4e71590173c2db7f0
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Mar 28 14:18:20 2010 +0000
-
-    Remove useless key argument from scconf_item_find()
-    
-    Fix
-    parse.c: In function ‘scconf_item_find’:
-    parse.c:80: warning: unused parameter ‘key’
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4164 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 652ef326b40ad27144db6762b10d6f489924b38c
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Mar 28 14:13:32 2010 +0000
-
-    revert changes 4154 and 4155 as suggested by Martin Paljak
-    
-    http://www.opensc-project.org/pipermail/opensc-devel/2010-March/013827.html
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4163 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 425efc939a08e15358262952e0b67bb7c1753479
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Mar 28 12:01:14 2010 +0000
-
-    Use a "const char *" to store a const C-string ptr. Fix
-    card-piv.c: In function ‘piv_get_data’:
-    card-piv.c:612: warning: assignment discards qualifiers from pointer target type
-    card-piv.c:615: warning: assignment discards qualifiers from pointer target type
-    card-piv.c:618: warning: assignment discards qualifiers from pointer target type
-    card-piv.c:621: warning: assignment discards qualifiers from pointer target type
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4162 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2e4610e3bec3d115bac9bfb5ce44465bd10f3884
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Mar 28 11:53:44 2010 +0000
-
-    Use a "const char *" to store a const C-string ptr. Fix
-    pkcs15-oberthur-awp.c:97: warning: assignment discards qualifiers from pointer target type
-    pkcs15-oberthur-awp.c:98: warning: assignment discards qualifiers from pointer target type
-    pkcs15-oberthur-awp.c:99: warning: assignment discards qualifiers from pointer target type
-    [etc...]
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4161 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 35036bcecacce213a3ff4249abc4ed3d4c48c6a6
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Mar 28 11:50:05 2010 +0000
-
-    Fix
-    pkcs15-oberthur.c: In function ‘cosm_write_tokeninfo’:
-    pkcs15-oberthur.c:94: warning: format not a string literal and no format arguments
-    pkcs15-oberthur.c:96: warning: format not a string literal and no format arguments
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4160 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 10bf1fc8df525819709b9eb28baf62a901c7815d
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Mar 28 11:46:06 2010 +0000
-
-    Fix
-    pkcs15-oberthur.c:61: warning: redundant redeclaration of ‘cosm_delete_file’
-    pkcs15-oberthur.h:93: warning: previous declaration of ‘cosm_delete_file’ was here
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4159 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f66a1cc5d515ec62a22da5410608eb09ee52e10d
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Mar 28 11:44:56 2010 +0000
-
-    Fix
-    pkcs15-westcos.c:41: warning: redundant redeclaration of ‘sc_check_sw’
-    ../../src/libopensc/opensc.h:674: warning: previous declaration of
-    ‘sc_check_sw’ was here
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4158 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 30b7888c342b3a19b97c1cd5617776706795a8f3
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Mar 28 11:43:17 2010 +0000
-
-    Remove unused variables. Fix warning: unused variable
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4157 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ecae106253eac343ea7b889428e5ffb0c9c0b6c5
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Mar 28 11:37:13 2010 +0000
-
-    Fix warning: missing initializer
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4156 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5ae0d01918ca4e232ba10d5cc8f86caf2d86c06e
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Mar 28 11:25:01 2010 +0000
-
-    Fix
-    parse.c: In function ‘scconf_item_find’:
-    parse.c:80: warning: unused parameter ‘key’
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4155 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 05dd36dfa9c5e7b3b37c983ae161242ab50276d8
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Mar 28 11:24:14 2010 +0000
-
-    Fix
-    test-conf.c: In function ‘ldap_cb’:
-    test-conf.c:32: warning: unused parameter ‘depth’
-    test-conf.c: In function ‘card_cb’:
-    test-conf.c:60: warning: unused parameter ‘entry’
-    test-conf.c:60: warning: unused parameter ‘depth’
-    test-conf.c: In function ‘write_cb’:
-    test-conf.c:81: warning: unused parameter ‘depth’
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4154 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 10bcef99a90c98f2fa63767b53f14cdfbeaad0f0
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Mar 28 11:22:38 2010 +0000
-
-    Fix
-    simclist.c: In function ‘list_meter_int8_t’:
-    simclist.c:1337: warning: unused parameter ‘el’
-    simclist.c: In function ‘list_meter_int16_t’:
-    simclist.c:1338: warning: unused parameter ‘el’
-    simclist.c: In function ‘list_meter_int32_t’:
-    simclist.c:1339: warning: unused parameter ‘el’
-    simclist.c: In function ‘list_meter_int64_t’:
-    simclist.c:1340: warning: unused parameter ‘el’
-    simclist.c: In function ‘list_meter_uint8_t’:
-    simclist.c:1342: warning: unused parameter ‘el’
-    simclist.c: In function ‘list_meter_uint16_t’:
-    simclist.c:1343: warning: unused parameter ‘el’
-    simclist.c: In function ‘list_meter_uint32_t’:
-    simclist.c:1344: warning: unused parameter ‘el’
-    simclist.c: In function ‘list_meter_uint64_t’:
-    simclist.c:1345: warning: unused parameter ‘el’
-    simclist.c: In function ‘list_meter_float’:
-    simclist.c:1347: warning: unused parameter ‘el’
-    simclist.c: In function ‘list_meter_double’:
-    simclist.c:1348: warning: unused parameter ‘el’
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4153 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5914be4e586f252310e4f10b72bae4c366a58347
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Mar 28 09:45:54 2010 +0000
-
-    Fix
-    pkcs15-lib.c:799: warning: no previous prototype for ‘sc_pkcs15init_store_puk’
-    pkcs15-lib.c:2814: warning: no previous prototype for ‘get_pin_ident_name’
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4152 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6973403675b1805ab75fc8b306a1e4c1e192d9a8
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Mar 28 09:44:22 2010 +0000
-
-    Fix pkcs15-oberthur-awp.c:729: warning: no previous prototype for
-    ‘awp_update_object_list’
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4151 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1eb944e256f3b439a7fc2a0e4860adf1e4a9f945
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Mar 28 09:43:20 2010 +0000
-
-    Fix pkcs15-oberthur-awp.c:1246: warning: no previous prototype for
-    ‘awp_set_data_info’
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4150 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 385c5da2ebc28005bae8bd2096d633320e28ce9d
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Mar 28 09:41:34 2010 +0000
-
-    Fix
-    pkcs15-pubkey.c:445: warning: no previous prototype for ‘sc_pkcs15_decode_pubkey_gostr3410’
-    pkcs15-pubkey.c:462: warning: no previous prototype for ‘sc_pkcs15_encode_pubkey_gostr3410’
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4149 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 815baad15691ae34cc06bc831de196ed27607442
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Mar 28 08:41:55 2010 +0000
-
-    Fix pkcs15-esinit.c:77: warning: no previous prototype for
-    ‘sc_pkcs15emu_entersafe_init_ex’
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4148 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8dd1590662fbd52876f47c6d5472f455e5c3dd54
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Mar 28 08:40:10 2010 +0000
-
-    Fix p15emu-westcos.c:248: warning: no previous prototype for
-    ‘sc_pkcs15emu_westcos_init_ex’
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4147 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9b73e45a074ab5e64b472cf30b81608da522760a
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Mar 28 08:33:14 2010 +0000
-
-    Fix westcos-tool.c:322: warning: no previous prototype for ‘usage’
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4146 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c891886f56fd06180d08938c6da73da01788da13
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Mar 23 10:03:05 2010 +0000
-
-    oberthur pkcs15init: sorry, fix
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4145 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c63225cf99835eb7c4e816fcb97c0a8c900b862a
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Mar 23 10:02:22 2010 +0000
-
-    oberthur pkcs15init: non-install header; join pkcs15-oberthur-awp.obj to object list for win32
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4144 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7106674d412d913cf240c6d3187724fd00cdef6e
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Mar 22 14:17:27 2010 +0000
-
-    oberthur pkcs15init: support for creation of the 'public' DATA objects
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4143 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f75f539a6f94806b977ab40a349f67496cdced39
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Mar 22 14:14:51 2010 +0000
-
-    libopensc: export 'sc_asn1_encode_object_id'
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4142 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ed8e498bb80a19ef5a6e54f37066d00a1ce32889
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Mar 19 09:41:10 2010 +0000
-
-    doc: in pkcs15-init.xml add usage case for '--verify-pin' option
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4141 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 07a0f74ec4c8282c6419ce7531465502b72f80eb
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Mar 19 09:19:21 2010 +0000
-
-    man: in pkcs15-tool man page add 'list-data', 'read-data' actions and update 'list' private objects
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4140 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0608713b0723ae0dadc294a5e32f628673e3715e
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Mar 18 17:51:06 2010 +0000
-
-    oberthur pkcs15init: use macro for debug level
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4139 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9b72b24d426fcb577a2d1f1ff5b282acf99fbc9a
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Mar 18 17:21:39 2010 +0000
-
-    oberthur: forgotten header file
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4138 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0f82c7c1d456acfde9d788cab175c25818c118f5
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Mar 18 12:30:39 2010 +0000
-
-    oberthur: pkcs15init emulator
-    
-    Now the native Oberthur card format is supported for emulation of pkcs15 and pkcs15init.
-    
-    It means that card personalized with OpenSC and the obejcts created with OpenSC
-    will be usable with the native Oberthur's middleware
-    and vice-versa.
-    
-    
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4137 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 42b90f8ada8c7afd58876ee0c3b2388d4d867646
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Mar 18 10:49:53 2010 +0000
-
-    pkcs11-tool: to be compiled without OpenSSL
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4136 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0c9b9f21a8de33a40cb565fd599859cbc44354cf
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Mar 18 10:25:50 2010 +0000
-
-    pkcs15init: free cert object if 'link object' failed
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4135 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ef8e16995517ec49355c8fb64c951aa7716f1bd3
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Mar 18 10:15:51 2010 +0000
-
-    pkcs15init: use encoded public key as the 'content' of private and public key pkcs15 objects
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4134 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7d6739feb2963f94dde725f390b8579d5c4433b6
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Mar 18 09:49:49 2010 +0000
-
-    pkcs15init: in pkcs15-init.h don't use parameters name in the function declarations
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4133 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ecbe32f778c5ec8d1d0d913564227f2edc3e30f9
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Mar 18 09:46:35 2010 +0000
-
-    pkcs15init: fix pkcs15-init.h
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4132 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8419f95f760a30a8a633cc89665aa1e24ef65207
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Mar 18 09:39:16 2010 +0000
-
-    pkcs15init: in pkcs15-init.h, for the function prototypes, homogenize using 'struct *' vs. '*_t'; do not use paramters name
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4131 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 965ecbf9a1cad380e93e538b0bae6d413af1172d
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Mar 18 09:27:09 2010 +0000
-
-    pkcs15init: pkcs15 card flags
-    
-    Set 'TOKEN INITIALIZED' after an application has been added,
-    set 'USER PIN INITIALIZED' and 'LOGIN REQUIRED' after User PIN object has been created.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4130 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5eba20e263448a8a2a539fd83f8149d2435e9ed0
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Mar 18 09:20:33 2010 +0000
-
-    pkcs15init emulation: use emu_update_tokeninfo() if available
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4129 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e214ba206c6078098ae130b09f21fb64a98a183a
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Mar 18 09:10:51 2010 +0000
-
-    pkcs15init: emulation API
-    
-    Four method are added to the 'sc_pkcs15init_operations':
-    emu_update_dir		-- create or not the DIR file;
-    emu_update_any_df	-- update the non-pkcs15 descriptors that are equivalents to pkcs15 xDF files;
-    emu_update_tokeninfo	-- update analog of tokenInfo;
-    emu_write_info		-- to not create OPENSC-INFO file;
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4128 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a17e519708d441d4a51723c7df73f96ea2457b68
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 17 18:24:26 2010 +0000
-
-    pkcs15-tool: 'verify-pin' is not an action
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4127 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e0f39c529cb2d30529dda7383aaeee5852ccc8d5
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 17 18:16:27 2010 +0000
-
-    pkcs15-init tool: make possible pin verification immidiately after card was binded
-    
-    It's implemented for the card with emulated pkcs#15 and protected private object attributes.
-    
-    Update to man pages is comming soon.
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4126 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 69a2fb19415998fb69dc56136f9b7439d2d22700
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 17 16:45:02 2010 +0000
-
-    oberthur: in profile do not use 'combined' pins in ACLs
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4125 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5bba49e58c7b071e7aebf0e4cc2977a228013c17
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 17 16:40:12 2010 +0000
-
-    oberthur: in card profile set 'do-last-update' to 'false'
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4124 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit fb45d8925ba3ae1584ab8e289474672a4b8f1e9a
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 17 16:26:07 2010 +0000
-
-    pkcs15init: simplify internal API
-    
-    ; do not pad PIN in pkcs15init. It's already done in libopensc/pkcs15-pin;
-    ; the 'do_verify_pin()', 'sc_pkcs15init_verify_key()' and 'do_get_and_verify_secret()' are replaced by unique 'sc_pkcs15init_verify_secret()'; edit debug messages;
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4123 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 84934adab9a429815c418b71042672f7296f3876
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Mar 16 14:59:20 2010 +0000
-
-    don't complain about missing "--slot" parameter, when you don't
-    need it (if you only "--list-slots").
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4122 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5972022ffcb878968c4939f4aaf82be05341febf
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Mar 16 14:11:39 2010 +0000
-
-    Add code to write pubkey objects to pkcs11-tool.
-    By: Jaroslav Benkovský <jaroslav.benkovsky at nic.cz>
-    
-    Slightly modified by me.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4121 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 921a2cc39fb162cf3a385d74fc3d221a1163a4b2
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Mar 16 13:51:39 2010 +0000
-
-    Start documenting changes and increse libary version (we are no longer
-    compatible with 0.11.* line).
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4120 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c74016b8cc9dc4ae6b009dbef30b7733616cf2bd
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Mar 15 17:58:17 2010 +0000
-
-    fix #202: pkcs15-tool: print message when there is PIN verify error
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4119 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6545b42c02ce11b89bf796f773d5c8e851016d3d
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Mar 15 12:17:13 2010 +0000
-
-    cleanup of the debug code:
-    * reduce to a few, supported functions.
-    * change all functions to take the debug level as parameter.
-    * use symbolic names for the debug levels.
-    * fix tools to pass "verbose"/"opt_debug" as ctx->debug.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4118 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0fdb4478bc2f00af5eae8fb8383bc1f995352c46
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Mar 15 10:34:18 2010 +0000
-
-    On blank, but otherwise perfectly supported card, we get an error here
-    (with "Unsupported card"). This needs to be improved.
-    
-    This patch changes the "initialization" to "binding", so we at least
-    can tell people: you need to initialized an empty card first.
-    Needs to be improved of course.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4117 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit da9aa435c489784688c6207f6784ec436553bcda
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Mar 15 08:36:36 2010 +0000
-
-    fix second part of #199: pkcs15init: when freeing pkcs15 object remove it from list
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4116 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6b1a8423a3624d2e51ca5c42f9038f778240f4b7
-Author: flc <flc at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Mar 15 07:23:48 2010 +0000
-
-    clean libopensc.exports (2 functions removed)
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4115 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e5300b1c2dda36510428319155c689c5feab8715
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Mar 13 23:35:08 2010 +0000
-
-    fix #199: to authenticate 'update' in sc_pkcs15init_update_file() use the file instantiated from profile, rather then selected one
-    
-    This bug concerned the card drivers for which the file ACLs cannot be obtained from the FCI of the selected file.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4114 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 02768fb5dc8e7fe782e40994ebf0a7f4a2372936
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Mar 13 22:52:51 2010 +0000
-
-    remove "split-key" option and emulat sign for sign,decrypt keys with padding
-    and decrypt() for cardos.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4113 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5bc11ac39c0284b9218e55f3bf3be0b3d7e0b77b
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Mar 13 22:47:58 2010 +0000
-
-    Redirect output to file given by "--output" / "-o" option. Closes bug #200.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4112 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c1bb3ae9cd16a95b3bdc2fcdbe8fcdd8f429709a
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Mar 13 22:26:07 2010 +0000
-
-    compile tools with PTHREAD so we can debug them in GDB.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4111 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8b15f0f340eed513eb5ccf75476f13102a54f6ad
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Mar 13 19:54:28 2010 +0000
-
-    pkcs15init: sc_pkcs15_add_df() has no more 'handler' parameter
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4110 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 22f067863a86672301fabe520a531cb7bc73dd4d
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Mar 13 19:48:09 2010 +0000
-
-    libopensc emu: more general implementation of the postponed DF parsing
-    
-    In previous version the card specific 'parse_df' handler was a part of 'sc_pkcs15_df'.
-    
-    Now the placehold ('sc_pkcs15_operations') created for the all card emulator specific operations .
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4109 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 172d710a351dbe3b70243e1b64d52b707f164269
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Mar 11 13:29:10 2010 +0000
-
-    oberthur emu: create pkcs15 object for SOPIN; accept non-initialized token; use 'define' macros for the native file paths
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4108 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f9b27b1699f0b32721031b681b61fd28eea0b51c
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Mar 11 13:00:07 2010 +0000
-
-    pkcs15-tool: 'pkcs15_pin_info' parameter replaced by 'pkcs15_object'
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4107 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 72a9d8e58f392bc103a42c275c23ae3a5be91a6e
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Mar 11 11:23:47 2010 +0000
-
-    pkcs15-init: sign key usage shortcut does not expand to non-repudiation.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4106 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c3de15d2d08061cd6b2a0fabbdaaa7b8a6ede1fa
-Author: flc <flc at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Mar 11 06:41:55 2010 +0000
-
-    westcos card small fix
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4105 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit af1bf44cefa2c09aa6ba063fda0f8f3fb111ea93
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 10 15:03:20 2010 +0000
-
-    framework-pkcs15: fix
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4104 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 052881c38f47e59f14a028e7bb99e9a2a3583346
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 10 09:23:01 2010 +0000
-
-    libopensc: in pkcs15 PIN commands 'pin_info' parameter replaced by 'pin_object'
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4103 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 91230bdbc94a00c68de8ac59fc82dc17206a2bfa
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 10 07:07:13 2010 +0000
-
-    there is no ui.h any more.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4102 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9961fa2487b83979f05516b8b12bad1538cde40a
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Mar 9 17:43:09 2010 +0000
-
-    libopensc: add oberthur pkcs15 emulator to Makefile.mak
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4101 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ffab538bcca628139596e2d2a837a18b3c422047
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Mar 9 17:40:22 2010 +0000
-
-    oberthur: pkcs15 emulator for the native cards
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4100 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b6cd02510658e947696b5add02b3210d368cce97
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Mar 9 17:38:08 2010 +0000
-
-    pkcs11 framework-pkc15: at user login try to do the postponed private keys load
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4099 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0027a21204166d9c0d0a68cc97bf6683d2bb7bda
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Mar 9 17:11:31 2010 +0000
-
-    libopensc emu: sorry, fix
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4098 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6cb0c93ee3996390a1627cc604b40637943b2bfe
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Mar 9 16:57:39 2010 +0000
-
-    pkcs11: configuration option to report as zero the CKA_ID of CA certificates
-    
-    In fact, the middleware of the manufacturer of the gemalto (axalto, gemplus) cards
-    reports the CKA_ID of CA certificates as '0'.
-    
-    But it's not true for the others middlewares (Oberthur), NSS (afais) and PKCS#11 standard.
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4097 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3a2f0415feee5c006169c59b29561343b903af68
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Mar 9 16:49:00 2010 +0000
-
-    libopensc emu: postponed object loading
-    
-    Some non-pkcs15 cards protect the reading of the private objects attributes.
-    
-    For the emulated pkcs15 cards, the 'init' emu-handler was the only place where pkcs15 objects could be loaded.
-    This handler is called before the card is binded, and so, for an application there was no 'normal' way to verify PIN and load the objects with protected attributes.
-    
-    Actually it's possible to complete list of the pkcs15 objects after the emulated pkcs15 card has been binded.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4096 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e47baeaf9ef3614c74f411d7a1aad6758776f7e3
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Mar 9 15:43:16 2010 +0000
-
-    pkcs11: configuration option to report as zero the CKA_ID of CA certificates
-    
-    In fact, the middleware of the manufacturer of the gemalto (axalto, gemplus) cards
-    reports the CKA_ID of CA certificates as '0'.
-    
-    But it's not true for the others middlewares (Oberthur), NSS (afais) and PKCS#11 standard.
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4095 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 54d2b20fe2fbd46f7381539ce2655ce3f8a514b7
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Mar 9 15:05:29 2010 +0000
-
-    pkcs11 framework: change prototype of the 'login' method
-    
-    It gives the access to the 'slot' object inside the framework method 'login'.
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4094 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 93210eae9fbdf9ce22b983b7d313364fd2f48bb0
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Mar 9 14:51:48 2010 +0000
-
-    pkcs15-tool: add 'verify-pin' option" src/tools/pkcs15-tool.c
-    
-    Implemented to have the possibility to verify PIN after binding of the pkcs15 card and before any 'substantial' operation.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4093 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8e8ee649bd1b6afbd516e7295d3dbb6b6a2e2327
-Author: flc <flc at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Mar 9 13:39:29 2010 +0000
-
-    add windows.h include to ctx.c to satisfy dependencies and move internal.h include at end of includes
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4092 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 995dda778a24f62e5523a0703f39c7671b691341
-Author: flc <flc at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Mar 9 07:41:28 2010 +0000
-
-    internal.h must be before winreg.h include, and change path for include log.h in cardmod.c
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4091 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c837196134e8fbbec7b753362cd423abc9791870
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Mar 8 12:32:35 2010 +0000
-
-    libopensc: homogenize name of 'struct sc_pkcs15_card' parameters and variables
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4090 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit bd93c92b235e2f05980ad1fa738edff07ff32ce1
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Mar 5 19:31:07 2010 +0000
-
-    win32/Makefile.am:1: whitespace following trailing backslash
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4089 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit aff7b5523c701b991b4c326e9c3def137f27a2dc
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Mar 5 10:37:11 2010 +0000
-
-    pkcs15init: homegenize pin reference type in a different structures; remove unused parameters in the internal procedures;
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4088 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 26dc34c83f8d1d68a4280d3793a5bcbf530cd18d
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Mar 4 16:19:41 2010 +0000
-
-    libopensc: add structure name to the 'typedef structure' definitions
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4087 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3a424cf26a1daf51de6e079be2254d47f2296950
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Mar 4 16:14:30 2010 +0000
-
-    pkcs15init: dummy object is not needed for the sc_pkcs15_find_XX() procedures; coding style issues
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4086 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0e8e1a1bf06ebb36c849a83945b08e3466342620
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Mar 4 13:37:11 2010 +0000
-
-    pkcs15init cflex: fix protected initialisation
-    
-    In the 'flex' card profile the ACLs of the public objects are set to 'NONE'.
-    
-    As the pkcs15init core currently implemented, the AuthID attribute is not used for the public objects.
-    Without AuthID the destination 'pin-domain' DF cannot be determined in a simple and sure manner.
-    That's why 'pin-domain' works only for private key, private data
-    and the public objects are placed into the application DF.
-    
-    
-    ; take 'flex' CHV files settings from the card profile;
-    
-    
-    
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4085 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit de3e6aeba9ea0da31ca1b2827e7708137922ce76
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Mar 4 13:05:03 2010 +0000
-
-    pkcs15init: prepare instantiation of the pin-domain templates
-    
-    When binding profile and p15card (in sc_pkcs15init_set_p15card()), add to the profile EF list the named DF for the path of the all existing AUTH.
-    
-    ; variables name and coding style issues;
-    ; debug messages;
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4084 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 21acf3ed3d06a7cc4b3e99f74881f1d154f30e11
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Mar 4 12:55:09 2010 +0000
-
-    pkcs15init profile: fix indexed instantiation of pin/key domain; more of debug messages
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4083 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5d08b13f980671c5d17ef426e296811918e2439a
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Mar 4 12:49:12 2010 +0000
-
-    pkcs15init asepcos: unused variables
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4082 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d22a2483c03d2bbadf93d529ecb4bacfa2d1c8e2
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Mar 4 08:14:36 2010 +0000
-
-    Header file cleanup.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4081 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1bd07bacd6359f2042d16ffbf2dd233d62973427
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 3 17:22:01 2010 +0000
-
-    pkcs15init profile: syntax error can provoke segmentation fault
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4080 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0bb56af014cd291c1d2c8dda684b9f6a578085b7
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Mar 2 17:03:44 2010 +0000
-
-    pkcs15init: no more need for static keycache
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4079 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 02c35be138d67b290e0a3fe239a1db739c1c6fe3
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Mar 2 16:22:33 2010 +0000
-
-    asepcos: 'trasport PIN' (global PIN with reference '0') is presented as 'AUT' key
-    
-    ; no more need of athena dedicated PIN flag 'TRANSPORT KEY';
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4078 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit de6649fed585d5b5698ff76f747c0d6f3b016be7
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Mar 2 09:50:07 2010 +0000
-
-    pkcs15init asepcos: fixup initialisation with protected profile
-    
-    ; new, athena dedicated, PIN pkcs15 flag 'TRANSPORT_KEY':
-    in the Athena initialization procedure the 'trasport' SOPIN object is used. This object references to the pre-existing global SOPIN and is different from the final SOPIN of the card. This object should be ignored when fixing up the ACLs of the newly created file;
-    
-    ; the pkcs15 refereces of the new private keys are derived from the file-id;
-    
-    ; remove duplicated code;
-    
-    ; some log messages in  pkcs15-lib.c;
-    
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4077 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 70ee7c1438232987fce7be112d803fb615a52065
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Mar 1 15:29:39 2010 +0000
-
-    pkcs15init: in sc_pkcs15init_add_object() if DF update fails, remove object from the list before return
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4076 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit dbd315c7e9d95b719314b6530941d41129b81d41
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Mar 1 14:01:25 2010 +0000
-
-    profile: 'cbs' member of 'struct sc_profile' is not used
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4075 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit abd3a43b3e863cfcb87047092791a6114a2ff083
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Mar 1 13:51:05 2010 +0000
-
-    include: do not create link to the non-existing ui.h
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4074 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit bb6ccdb9fb34f427ae78f8e0ac4e67e687ce92d2
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Mar 1 13:36:02 2010 +0000
-
-    pkcs15init oberthur: no extractable key; for generated key set reference from the key's path
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4073 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7a48d4a6f2b987ad10d9c4ede5f75cd8acdec81f
-Author: flc <flc at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Feb 25 15:16:23 2010 +0000
-
-    add support for westcos card with crypto component and minor renames to westcos-tool
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4072 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit cf4ec4ab3fad742e92100d5fde6f5c907f73d906
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Feb 24 14:06:04 2010 +0000
-
-    #47: C_SignRecover is not implemented at the moment, don't give any promises with C_SignRecoverInit either.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4071 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6f887e5b625075866617fbcbc3d0162206c89052
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Feb 24 12:20:59 2010 +0000
-
-    #185: drop opensc-config. If required, pkg-config and libopensc.pc can be used instead.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4070 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1ef975fa516dda2bb16f6c524e608809bef3808d
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Feb 24 10:42:36 2010 +0000
-
-    #148: clear PIN cache in sc_pkcs15_unbind()
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4069 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit adf4035d86ce75a5baf460facdcf1bcbfd94be95
-Author: s <s at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Feb 24 08:57:37 2010 +0000
-
-    fix mistake in r4065
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4068 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 258a867bbc00f5df645d998aeb72febcd2cbe550
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Feb 24 08:28:15 2010 +0000
-
-    libopensc: re-design 'sc_pkcs15_allocate_object_content' for the case when the 'new' and 'old' data pointers are the same
-    
-    ;change the prototype of 'sc_pkcs15_find_pin_by_type_and_reference' to eliminate the compilation warnings;
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4067 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9e64de79e4aec5d58c26abad7b1332cb44781707
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Feb 24 08:25:13 2010 +0000
-
-    Remove openssh/ directory and our patch for openssh,
-    as they removed the opensc code in favor or new pkcs#11 code.
-    This new code works out of the box with opensc-pkcs11.so,
-    so we don't need the patch any more.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4066 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 839644bb4e6576ff083b39d66b718ad6d81af99a
-Author: s <s at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Feb 24 08:22:24 2010 +0000
-
-    add check params; fix: pkcs15-rutoken.c:208: warning: unused parameter 'puk'
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4065 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9a11b3019a4c398e085524ce76e51c23fe69248d
-Author: flc <flc at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Feb 24 07:48:53 2010 +0000
-
-    set default auth_method SC_AC_CHV for emulated cards thanks to Martin Paljak patch
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4064 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 975d703c0de22f6c57eea76007c6fd19853c3fc9
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Feb 21 20:46:59 2010 +0000
-
-    libopensc: remove unused variables
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4063 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9485f168ee2ac5890f31dd27c95f139e0c5507b5
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Feb 21 20:33:51 2010 +0000
-
-    pkcs15init: 'defined bu not used'
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4062 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 23b7c2673c1ad9c37f40a82820e59ff36c80a484
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Feb 21 19:54:59 2010 +0000
-
-    pincache: pkcs15-pin.c:515: warning: unused variable ‘i’
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4061 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7b6d2525da2276437eddf923e9d93c622ab2b4b8
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Feb 21 19:53:53 2010 +0000
-
-    pincache: correct message for user consent PINs (it is a matter of policy not software support)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4060 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a8c4f57c55e8846fa3c4c855af1a339579e0bbc9
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Feb 21 19:47:53 2010 +0000
-
-    Fix exports file:
-    {{{
-    Undefined symbols:
-      "_sc_pkcs15init_fixup_acls", referenced from:
-         -exported_symbols_list command line option
-      "_sc_pkcs15init_set_pin_data", referenced from:
-         -exported_symbols_list command line option
-      "_sc_pkcs15init_set_secret", referenced from:
-         -exported_symbols_list command line option
-    }}}
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4059 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 535131adda862b457cc955dff93ed9eccafdc495
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Feb 21 18:24:41 2010 +0000
-
-    pkcs15init: instead of static keycache use the pincache as a content of the pkcs15 AUTH object
-    
-    Tested with cards:
-    CardOS v4.3B;
-    SetCOS 4.4.1B;
-    Oberthur;
-    Cryptoflex 16k, 32k e-gate, 32k e-gate token;
-    GPK 8K;
-    Athena;
-    Aventra;
-    Fetian;
-    Rainbow 3000 (STARCOS SPK 2.3)
-    
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4058 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4dd6abf41b92b4d684cd080c1276542b849aab39
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Feb 21 16:21:57 2010 +0000
-
-    pkcs15init: in the prototypes of the internal procedures the 'struct sc_card' argument replaced with the 'struct sc_pkcs15_card' one
-    
-    This patch is not largely tested and it will be followed (hope in a few hours) with another one
-    that will replace the using of the static pincache
-    with the pincache as the content of the AUTH pkcs15 object.
-    
-    In the intervention into the card specific part I tried to respect its creator's coding style.
-    Sorry, if it's not always the case.
-    
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4057 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e88839475ab54183043eba47b622753535fedba5
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Feb 21 11:10:30 2010 +0000
-
-    Missing piece from [4055]
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4056 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit edcf32337ed0163fd05396a4a60f161e757906ab
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Feb 21 11:02:12 2010 +0000
-
-    libopensc: only one pkgconfig file is required.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4055 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b8e921b2d24f3e05632c1a63e58cba27d31197be
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Feb 21 09:13:00 2010 +0000
-
-    manpages: don't install sc_* API documentation.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4054 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ba4b02e09885ed37ff851ed2dac2f0474115f79f
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Feb 21 09:09:33 2010 +0000
-
-    pkcs15-init: don't suggest using --erase-card with --create-pkcs15 in help message.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4053 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9d603a61e8860c5184e7a74c62e0b299887cf953
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Feb 21 09:08:13 2010 +0000
-
-    manpages: Clarify pkcs15-init --erase-card usage. Fix XML structure from [4012]
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4052 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e5233e72979ceadd33c334e9c614e827e08d725e
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Feb 20 23:20:38 2010 +0000
-
-    cyberflex: no more 'protect-certificates' profile option
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4051 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ef919e94d46fe533eab45b6a555e57caa5fa9c3a
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Feb 20 23:14:45 2010 +0000
-
-    pkcs15init: 'protect-certificates' profile option not used
-    
-    Profile option 'protect-certifcates' was activated by default for all the cards,
-    was mentioned and commented out only in 'flex' profile,
-    and finaly is not working 'by design' of pkcs15-lib.c
-    
-    So, no need to keep this option, untill the valid arguments to restore it back.
-    Anyway, the access to certificates is controlled by the file's ACLs defined in profile.
-    
-    
-    ;in profile use the 'define' macros to define the pin encoding type;
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4050 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 128e0661760ce90201e7c0bb1c338c21d94c6f90
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Feb 20 22:16:19 2010 +0000
-
-    pkcs11: no pincache concept at the pkcs11 level -- it's implemented at the pkcs15 one
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4049 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9c964e3d71b50ede832ee689b75e611335459f1c
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Feb 20 22:04:07 2010 +0000
-
-    pincache: implement pincache as the content of the AUTH pkcs15 object
-    
-    ; in 'sc_pkcs15_pin_info' structure add 'auth_method' member to keep the PIN authentication method: CHV, AUT or SM;
-    ; in pkcs15init profile add function to search PIN template by auth method and reference;
-    ; in 'sc_pkcs15_remove_object' return silently if object to delete is NULL;
-    ; in 'sc_pkcs15_object' structure add 'usage_counter' member;
-    ; new 'sc_pkcs15_find_pin_by_type_and_reference' procedure to search PIN pkcs15 object by auth method and reference;
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4048 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ac5307d457cb131c3f507cd0b96096204a1bd527
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Feb 20 20:09:22 2010 +0000
-
-    pkcs15init: when updating 'OpenSC Info' file, cleanup its non-used tail part -- thanks to Xiaoshuo
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4047 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d7dfa2104a677dda458388381bf7d72d8ae88b84
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Feb 20 10:09:06 2010 +0000
-
-    entersafe: fix import key RSA 2048 bits
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4046 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 30924e4e9dd4ae6ef212db74fe941515d5150911
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Feb 20 08:34:40 2010 +0000
-
-    PKCS15: set the PRNG flag on PKCS#15 card object even if it was not set in TokenFlags if RNG capability is reported by the low level card driver.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4045 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 26f1750cd70652fb5567bf1bba4ad9c645ddcd51
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Feb 20 08:31:19 2010 +0000
-
-    entersafe: don't mix hexadecimal and decimal in code and comments
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4044 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ba3299bcef7bd7e4775e0305b459db8fb6737327
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Feb 19 16:52:50 2010 +0000
-
-    entersafe: sorry, fix
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4043 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9bf12ba47f9794e751a300b4c4bf0450641151e9
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Feb 19 16:41:05 2010 +0000
-
-    entersafe: unify cards behavior - don't throw error when erasing empty card
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4042 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6380feb1fdaf03f96a008b667da2f20797cae369
-Author: flc <flc at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Feb 19 10:41:33 2010 +0000
-
-    Use cardmod if explicitly request on config only
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4041 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9c45262f5ead8bd11cb1faedb75e086aaa993cff
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Feb 18 17:08:01 2010 +0000
-
-    MyEID: fix 'Activate Applet' apdu case
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4040 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d89e6377a034dce1fff30c1d056b8706a19b1be4
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Feb 18 10:26:08 2010 +0000
-
-    MyEID: 'read until the end' not supported -- set maximal receiving size to 255
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4039 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4395d5b8b328839b0919189596f52cf7b40a7e76
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Feb 18 10:08:32 2010 +0000
-
-    MyEID: fix
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4038 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 709869785ce28ccbe8ead0ab7aa3ad3f7c540cf2
-Author: s <s at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Feb 17 17:19:14 2010 +0000
-
-    fix: mis-usage of 'type' (PIN encoding style)
-    Thanks to Viktor TARASOV
-    http://www.opensc-project.org/pipermail/opensc-devel/2010-February/013454.html
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4037 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3d23ea782beb49ac55295d73cfe9285588804734
-Author: flc <flc at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Feb 17 07:51:52 2010 +0000
-
-    cardmod updates:
-    - Add comment to opensc.conf
-    - Use opensc log in cardmod
-    - Minor corrections on cardmod pcsc driver
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4036 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 462f7ac7e83b61eb52ea3e299fb0173a33275e81
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Feb 16 07:10:45 2010 +0000
-
-    automake gets packge name and version from AC_INIT.
-    the old AM_INIT_AUTOMAKE syntax is deprecated now, switch to the new one.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4034 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c4509d3c7bee48d22ec0cf5082e17676a9fe70d6
-Author: s <s at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Feb 15 20:55:12 2010 +0000
-
-    fix SIGABRT (r4028)
-    
-    *** glibc detected *** invalid pointer: 0x00007fff9e9f7670 ***
-    Program received signal SIGABRT, Aborted.
-    0x00007f971d0a8ea5 in raise () from /lib64/libc.so.6
-    (gdb) bt
-    #0  0x00007f971d0a8ea5 in raise () from /lib64/libc.so.6
-    #1  0x00007f971d0aaab3 in abort () from /lib64/libc.so.6
-    #2  0x00007f971d0e7d58 in __libc_message () from /lib64/libc.so.6
-    #3  0x00007f971d0ed7e8 in malloc_printerr () from /lib64/libc.so.6
-    #4  0x00007f971d0efda6 in free () from /lib64/libc.so.6
-    #5  0x0000000000410f5c in pkcs15_gen_keypair (p11card=0x72aec0, slot=<value optimized out>,
-        pMechanism=<value optimized out>, pPubTpl=<value optimized out>, ulPubCnt=<value optimized out>,
-        pPrivTpl=<value optimized out>, ulPrivCnt=6, phPubKey=0x7fff9e9f7e50, phPrivKey=0x7fff9e9f7e58)
-        at framework-pkcs15.c:1763 /* see opensc-0.11.13 */
-    #6  0x0000000000409a6e in C_GenerateKeyPair
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4032 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 42d7d2284129211d82dab0da1c4684fcc6e696d8
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Feb 15 17:47:20 2010 +0000
-
-    pkcs15init profile: accept the minimal file-ids difference from GPK profile
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4030 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 22f9b2930eae4038d13345d849ef157695bf1359
-Author: s <s at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Feb 12 17:23:02 2010 +0000
-
-    fix memory leaks
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4028 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 91da9ab8191ae8492f7322c6c10ab60f775e7958
-Author: s <s at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Feb 12 16:53:07 2010 +0000
-
-    fix memory leak
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4027 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5991dfb433ce39f942ddb07994a1654452f85edd
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Feb 11 14:50:18 2010 +0000
-
-    Remove the dummy EMV driver.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4021 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2ab30d8c52a9c0f08bd88f61e292c51c7e7f1d30
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Feb 11 14:47:34 2010 +0000
-
-    libopensc: 'javacard' driver has to be the last one before 'default' -- thanks to Andreas
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4020 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8161c72fa32a90010f728992be646568bbd3ab36
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Feb 11 14:15:13 2010 +0000
-
-    libopensc: in
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4019 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0330993a6174b352345a78c56aa2b1bfe79593cf
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Feb 11 12:14:03 2010 +0000
-
-    pkcs15-init tool: simplify 'pristine' test - it's ok if MF, DIR or PKCS15-AppDF is not selectable
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4014 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 53d29939fd05744f6db80225f8f032b50a871005
-Author: flc <flc at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Feb 11 08:46:17 2010 +0000
-
-    remove useless symbol from libopensc.exports
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4013 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 485d455fb9961657395993027e8a4cf5bd3b7ec5
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Feb 10 07:59:16 2010 +0000
-
-    Debian bug report 505396:
-    -P is not --store-public-key, but --store-pin.
-    I simply remove the short form "-P" for now (didn't find a good place
-    to add it).
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4012 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f621238ff52025ca55f318db19b50ba26007cec6
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Feb 10 07:44:55 2010 +0000
-
-    AFAIK the default format is PEM, not DER.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4011 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit da83260826713de358cd3e7cd6d3e6af6ad0bcf9
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Feb 10 07:40:52 2010 +0000
-
-    patch from debian bug report 470637 by  Philippe Teuwen:
-    update_binary() was not foreseen by the middleware creators of BELPIC
-    so I added it, which allows to write some data in the
-    MF/ID/EF(Preferences) of the card.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4010 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b8009bec0746bb460ba86cbe6755cf60f5d54a82
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Feb 9 15:15:02 2010 +0000
-
-    libopensc: error message for success
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4009 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b28add8e3bf453b3bdd893ab9c23cfe93e6e5a14
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Feb 9 14:45:07 2010 +0000
-
-    libopensc: in sc_pkcs15_object introduce the 'content' member
-    
-    Replace not-used 'der' structure member by the 'content' one.
-    
-    'Der' member was introduced to keep the ASN1 encoded object attributes. Actually it's not used.
-    'Content' is intended to keep the object value (AUTH object - pin cache value; CERT object - der value, ...)
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4008 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 909953d55a772cdd8772a3181523c3a011c0079f
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Feb 9 14:05:54 2010 +0000
-
-    libopensc: separate 'remove' and 'free' pkcs15 object
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4007 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 935b0740e456ef3570246468f8e053bfb55efa24
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Feb 9 13:53:27 2010 +0000
-
-    libopensc: remove not used function
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4006 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 30733069893d487f566dea8b51b1ed1444e79515
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Feb 6 12:59:24 2010 +0000
-
-    Add a comment to keep javacard driver 2nd last.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4005 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4d56ce2b7bdce32e4308dfeaa615c373bb18c61e
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Feb 6 10:56:29 2010 +0000
-
-    Add a catch-all for (possibly) blank JavaCards. This way known blank JavaCards without a supported applet get recognized by opensc-tool -n.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4004 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f636cc1862804ceabb3e1f751733ce2c2d7947d9
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Feb 5 21:39:28 2010 +0000
-
-    cardmod - build fixups and mingw stuff
-    
-    1. Add --enable-cardmod to autoconf to enable feature explicitly.
-    
-    2. Modify opensc-cardmod.dll to always have bitness suffix eg opensc-cardmod32.dll
-    
-    3. Remove complex cardmod.h detection, could not find any reason for this.
-    
-    4. Make cardmod.inf a template and inject opensc version into its version string.
-    
-    5. More minor autoconf/automake cleanups.
-    
-    6. Remove internal-winscard.h usage in cardmod.c as cardmod.h already includes winscard.h
-    
-    7. DllMain is not exportable.
-    
-    Notes:
-    
-    1. I may caused other build not to work, will happy to work it out.
-    
-    2. Cannot find reason why cardmod.inf cardmod-westcos.reg should reside in bin directory.
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4003 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a19a966b2920cb8eab863f292038ec52b5c84ac5
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Feb 5 13:56:52 2010 +0000
-
-    Files generated by automake & friends are not placed in svn.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4002 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0e03c6d5cf0d3e73b762b8d1a7f8d0b458d142ed
-Author: flc <flc at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Feb 5 13:05:25 2010 +0000
-
-    add cardmod a minidrivers for windows
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4001 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit dc6bc0df4ac086e4d4f3ca21eae868eda9856f64
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Feb 5 11:21:31 2010 +0000
-
-    fix pthread include for win32/mingw compilation.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4000 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f1471e4a0c4fdcc04b9b143e2e7ad044affa6044
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Feb 5 06:20:45 2010 +0000
-
-    Fix bebytes2ushort function, reported by Roland Schwarz.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3999 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9406ce2885e2e7c285161b5882ac323a6513f8aa
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Feb 5 06:16:37 2010 +0000
-
-    Updated piv driver by  Douglas E. Engert:
-       the PIV driver no longer need to set the card max_*_size parameters
-       to get around emulating read_binary and write_binary. It can
-       now handle partial reads and writes.
-    
-       The assumptions for write_binary are that the first chuck will
-       have idx = 0, and the last chunk will write the last byte.
-       The flags parameter will contain the total length.
-    
-       The only write_binary operations are done when initializing
-       a card, and this is only done from piv-tool.c which was modified
-       to pass in the length and other flags.
-    
-       Piv-tool continues to be a primative test tool for inializing test
-       cards. But it has been expanded to be able to write other objects
-       on test cards.
-    
-       The serial number of a PIV  card is obtained from the CHUID object
-       if present which has a FASC-N which is an ID number created by the
-       issuer. Normally PIV cards are issued the U.S. Federal government
-       But there are ways to use the same cards with a non government CA.
-       This is then be referred to as PIV Compatible. In this case,
-       the FASC-N should start with an agency code = 9999 and an RFC 4122
-       GUID should be present in the CHUID. If this is the case, the GUID
-       is used as the serial number.
-    
-       Windows 7 comes with a PIV card card driver, but to get it use one of
-       these card the CHUID is required. (piv-tool can now write one.
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3998 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 119c7751c79eba8c467ec731542e38c9ea82c7b4
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Feb 5 06:14:19 2010 +0000
-
-    Improved chaining for large APDU commands,
-    by Mats Andersson and Douglas E. Engert.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3997 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 85613b459dfde803c199b5d98ef29f474c73e162
-Author: s <s at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Feb 4 12:18:19 2010 +0000
-
-    rutoken (ECP): add 4 DF (reserved for internal use)
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3996 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0a4c42ba067c9d1b356e6144090148b6549b1dab
-Author: s <s at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Feb 4 10:39:30 2010 +0000
-
-    rutoken (S and ECP): never unblock SO PIN
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3995 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit de05af6632647553476b7906f1c9a054a7aa5cdb
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Feb 4 06:33:33 2010 +0000
-
-    fold ui.c/h into pkcs15-init.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3994 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 91da321c466f7e32afd8d4544dd1a45594164bce
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Feb 4 06:22:50 2010 +0000
-
-    remove log output coloring.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3993 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b113b9000003b144777287123494745b4b909661
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Feb 4 06:19:52 2010 +0000
-
-    remove ui code from library.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3992 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 314a31f8675a5901b18e866c66d4f021f06f746c
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Feb 3 15:46:44 2010 +0000
-
-    [PC/SC / MacOSX] Try to connect to the card twice.
-    
-    On OS X, when you insert a card, securityd sequentially starts all found Tokend-s to see if a card can be handled with one.
-    If a non-tokend application waits for a card insertion with sc_wait_for_event and tries to connect to the card right after the system sees it, it will fail with "The reader is in use by another application" 95% of the time.
-    With this hack connecting to the card succeeds 95% of the time with the probable penalty of an extra second on initialization for non-tokend clients.
-    
-    This should only affect applications that wait for card insertion events.
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3991 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b4a24af66d5042686e1ef16a1002d082785c3069
-Author: s <s at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Feb 3 12:10:41 2010 +0000
-
-    rutoken (S and ECP): both PINs are globals (and addition to changeset 3960, 3946)
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3990 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b9f844c367d3465bb6c8644b1ae13eb60b4c5ab8
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Feb 3 10:10:43 2010 +0000
-
-    [PKCS#11] use combined constants for events
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3989 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b3428a684dfe5f800a136fb66404f044acad81fb
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Feb 3 09:58:37 2010 +0000
-
-    [tools] If started with --wait, also wait for a reader if necessary.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3988 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 36992b400133ddf9ce0a2f6b341b9950b7c4ac2e
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Feb 3 09:54:02 2010 +0000
-
-    [PC/SC] detect other events besides card insertion/removal
-     * remove whitespace.
-     * don't use SC_MAX_READERS and allocate memory dynamically.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3987 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4c34f5b28c03654708034ec9b91e3c891899127d
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Feb 2 18:15:53 2010 +0000
-
-    pkcs15init: useless if/else construction
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3986 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6afab17c73c30885ee975a8e5a7976b4febc8e04
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Feb 2 17:29:17 2010 +0000
-
-    pkcs15init: remove commented-out code
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3985 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b94d9896e1812181d2955bd60ba28b4bb693175a
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Feb 2 17:20:09 2010 +0000
-
-    pkcs15init: little fix
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3984 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 97ab1858e880dbabb2175314816f06f90c05dcd0
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Feb 2 17:18:06 2010 +0000
-
-    pkcs15init: remove the old commented-out code
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3983 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8026eabacdae08fe93ee7e89534e4a5255ca811c
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Feb 2 16:45:47 2010 +0000
-
-    pkcs15init: remove profile option 'keep-public-key' that was used only by oberthur
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3982 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b065c706958ad4696a0cc5e350b1d244a887e6c7
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Feb 2 14:50:56 2010 +0000
-
-    pkcs15init: abandon Old API
-    
-    tested with Oberthur, CardOS and SetCOS.
-    
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3981 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a6f9f023a015932066313291f0591dec7544e1bb
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Feb 2 14:50:42 2010 +0000
-
-    [WINDOWS] Remove tool specific file description support resource file
-    
-    The implementation was based on the previous MSC build, each tool had its own
-    description in version resource.
-    
-    This change sets a single version resource to all files, and produces much
-    simpler build.
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3980 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 596b8c3c03239e3ece581a3baafd928655082b3d
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Feb 2 14:31:37 2010 +0000
-
-    oberthur: clean 'global' PIN reference flag when getting byte from ACL
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3979 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ff4c2c6aa247a7a5114dc104c547e523d830b3a7
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Feb 2 12:53:44 2010 +0000
-
-    Include simclist.h to opensc includes to be able to build OpenSC.tokend
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3978 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 92debb4b5e18399a20b6441ed0af5edf5839dfc1
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Feb 2 12:01:36 2010 +0000
-
-    PC/SC: Do not try to watch 0 readers on OS X
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3977 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit bf471eaf74f88cba93a51a44ae548da0dd9d4c9c
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Feb 2 09:46:03 2010 +0000
-
-    pkcs15init: migrate MyEID to the New API
-    
-    Migrated without testing, but normally should work -- the pkcs15init part of MyEID and SetCOS are sufficiently close.
-    
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3976 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 840053f6ba1ff2988f987bf12c378f38c1e99a6c
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Feb 2 09:44:46 2010 +0000
-
-    pkcs15init: migrate MyEID to the New API
-    
-    Migrated without testing, but normally should work -- the pkcs15init part of MyEID and SetCOS are sufficiently close.
-    
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3975 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 976c214a05ef9fb253920c1ffb69a63f4c471d56
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Feb 2 09:33:29 2010 +0000
-
-    pkcs15init: unused variables
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3974 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ac9f672189e0c0b9daad4094bd0b09d7148ff9f0
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Feb 1 15:22:28 2010 +0000
-
-    update windows makefiles: only create one dll.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3973 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e9b3c5982e4857222ef6a177080ff46999915291
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Feb 1 15:20:51 2010 +0000
-
-    remove no longer used export files.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3972 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4b2fe63ac2cba0b0adc447521138fc9db78fa6f7
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Feb 1 15:12:53 2010 +0000
-
-    build only one shared library instead of many.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3971 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9c7624c81b5ae610395177ff1583191e4af91a4c
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Feb 1 10:14:04 2010 +0000
-
-    pkcs15init: sc_verify() has been deprecated (thanks to Martin)
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3970 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0ce0b374873ac16fb578c10c22c634ea6467f5cd
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Feb 1 09:04:10 2010 +0000
-
-    pkcs15init miocos: remove obsolete code
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3969 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 167aed7c1fbb2d9e37dcdfd47177354ac7a307a6
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jan 31 20:29:58 2010 +0000
-
-    pkcs15init: migrate setcos to the New API
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3968 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7f52a0267f909f531f67f366a3f5d286fb8b317f
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jan 31 20:26:45 2010 +0000
-
-    pkcs15init cardos: fix update keys
-    
-    When creating application DF ('PKCS15-AppDF'), User PIN is not yet created, and AC type 'SC_AC_SYMBOLIC' cannot be resolved.
-    So, in the card profile, the macro '$PIN' cannot be used to define the ACLs of the application DF.
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3967 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 72d5ebb79caf39eea4ecbc7c7d0f06a75801bc0d
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Jan 30 19:25:22 2010 +0000
-
-    make erase incompatible with all other actions.
-    thus we don't need to worry about if the pin/so-pin was passed
-    for the old structures (before erase) or the new ones (if used
-    with create).
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3966 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b83ed7ed71a817ea4c48bdf45058234f53673477
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jan 29 17:41:05 2010 +0000
-
-    sertcos: both PINs are globals
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3965 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 19e9aaf635524a67f654a339e29b3c548a90bcd7
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jan 29 17:40:03 2010 +0000
-
-    pkcs15init: fix putting xPINs in cache
-    
-    ;when putting SOPIN into the global cache, use the path from the object info;
-    ;sc_pkcs15init_create_pin() can be called to create PUK object;
-    
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3964 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 742b0ea341daf87131793f1d4c0151754f2148fe
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jan 29 17:12:53 2010 +0000
-
-    pkcs15init: one more fix
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3963 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2bcd5352840be1172ff69eb58040b63536532608
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jan 29 17:08:26 2010 +0000
-
-    pkcs15init: fix
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3962 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5e805ecf2db9ee040efbfce145279e08774babb2
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jan 29 10:54:51 2010 +0000
-
-    libopensc: in iso7816 process_fci() decode Life Cycle Status byte (ISO 7816-4 2005, 5.3.3, tag '8A')
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3961 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 90ba3c769dc450cec65666533df43588b6aa1794
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jan 28 16:44:02 2010 +0000
-
-    pkcs15init: card specific pkcs15init has to be ready for pin_reference = -1
-    
-    Starting from r3946, the reference of PIN, instantiated from profile, is not overwritten by 0 in sc_pkcs15init_create_pin().
-    http://www.opensc-project.org/opensc/browser/trunk/src/pkcs15init/pkcs15-lib.c?rev=3946#L1064
-    
-    So, card specific pkcs15init has to be ready for the pin_reference = -1.
-    
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3960 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 32f7a4eed367f6f8b29bcb92adcb262840cf3d5c
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jan 28 14:53:36 2010 +0000
-
-    fix text a bit.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3959 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c23f07764d0c74a123ba2e5a39bbd5061afb7b55
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jan 28 14:29:30 2010 +0000
-
-    Add more event type defines, add declaration of sc_ctx_get_reader_by_id().
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3958 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9eebe0e1a579994366ee6eb502f2b8856da0f4ad
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jan 28 14:15:13 2010 +0000
-
-    pkcs11: by default do not create slot for the User PUK (thanks to Andreas)
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3957 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 630eb213f47c08e220846ecec3009a0aac066442
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jan 28 12:46:36 2010 +0000
-
-    miocos: migration to New API
-    
-    Miocos card owners are heartly invited to test this revision.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3956 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 55f7f02e1845e0b405c334997ed68af4a68f7350
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jan 28 12:42:19 2010 +0000
-
-    remove debug message
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3955 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 67b1ba0562b909e2c8ef1de470869c311e8c4501
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jan 28 12:17:05 2010 +0000
-
-    opensc.conf: in pkcs11 section a new option to disable slot for User PUK
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3954 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 031bfc7a0774004b4e261b0f9bc2280e1405b25e
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jan 28 12:14:48 2010 +0000
-
-    pkcs11: parametrize disabling of the slot for PUK
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3953 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ae046cc460fb7c0b9403cbaf09e8c72dc0e4fad4
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jan 28 08:28:25 2010 +0000
-
-    pkcs11: do not create slot for PUK
-    
-    Ignore PUK for the 'normal' pkcs11 also, not only for 'one-pin-pkcs11'.
-    
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3952 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 660fdea68a14d140e7c99ef2a3a377e299ed403d
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jan 27 18:18:10 2010 +0000
-
-    profile: for PIN flags use rather 'define' macro
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3951 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f2d3618ff614da9e1a70a7e859a8e8e16cb62477
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jan 27 18:07:14 2010 +0000
-
-    oberthur: finalize migration to the NEW API
-    
-    no more 'init_app'.
-    
-    - Oberthur unblock style is the only one (local SOPIN is used as PUK);
-    - user PIN and PUK should be everywhere defined as local;
-    - SOPIN is always global.
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3950 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 38e1144c1e63c4b5e307b6b2c9d77635898dbbf9
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jan 27 17:53:51 2010 +0000
-
-    pkcs15init: pkcs15 PinObject for PUK
-    
-    When creating PIN, if 'puk_id' is defined in 'struct sc_pkcs15init_pinargs',
-    the pkcs15 PinObject for PUK will be created.
-    
-    For a moment, PinObject is not created for SO PUK.
-    
-    
-    
-    
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3949 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8aa21284236abd2fb4a89f973066f7d98a21aa3a
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jan 27 17:38:43 2010 +0000
-
-    pkcs15-init tool: don't ask for PUK value when creating PIN with 'unblock-disabled' in flags
-    
-    - prepare pkcs15-init tool for creating a pkcs15 PinObject for PUK.
-    
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3948 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 42ad65e8d20e2b1e6dae15c72285ec7b2cb06545
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jan 27 17:08:04 2010 +0000
-
-    sorry, fix
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3947 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7f0abe80bb6759b3df5c16c794aee22110b03358
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jan 27 17:03:04 2010 +0000
-
-    libopensc pkcs15: path is optional for PinAttributes of PinObject
-    
-    - for 'global' PINs path in not encoded into the AODF;
-    - when selecting pin_reference, start from value defined in profile.
-    
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3946 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 33228c7cbc910f5b31c6e9e562857e7d2e38349e
-Author: s <s at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jan 27 16:04:19 2010 +0000
-
-    cleanup and correct style
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3945 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 723bcc41ff080d5749464546c13a340741ca8b98
-Author: s <s at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jan 27 14:50:35 2010 +0000
-
-    fix: use of uninitialised value - return parameter (phObject) from C_CreateObject and C_GenerateKeyPair
-    (In function 'pkcs15_add_object': warning: unused parameter 'pHandle')
-    
-    Example (C_CreateObject):
-    Breakpoint 3, C_CreateObject (hSession=134587040, pTemplate=0x8049160, ulCount=5, phObject=0xbff55560)
-        at pkcs11-object.c:57
-    57              rv = sc_pkcs11_lock();
-    (gdb) x/x phObject
-    0xbff55560:     0xffffffff
-    (gdb) finish
-    0xb7f5c6c0 17:15:09.969 [opensc-pkcs11] framework-pkcs15.c:657:pkcs15_add_object: Setting object handle of 0x0 to 0x805ab80
-    Run till exit from #0  C_CreateObject (hSession=134587040, pTemplate=0x8049160, ulCount=5,
-        phObject=0xbff55560) at pkcs11-object.c:57
-    0x080487a4 in main ()
-    Value returned is $1 = 0
-    (gdb) x/x 0xbff55560
-    0xbff55560:     0xffffffff
-    (gdb) c
-    Continuing.
-    
-    Breakpoint 4, C_DestroyObject (hSession=134587040, hObject=4294967295) at pkcs11-object.c:106
-    106             rv = sc_pkcs11_lock();
-    (gdb) p/x hObject
-    $2 = 0xffffffff
-    (gdb) finish
-    Run till exit from #0  C_DestroyObject (hSession=134587040, hObject=4294967295) at pkcs11-object.c:106
-    0xb7f5c6c0 17:15:56.581 [opensc-pkcs11] pkcs11-object.c:110:C_DestroyObject: C_DestroyObject(hSession=0x805a2a0, hObject=0xffffffff)
-    0x080487cb in main ()
-    Value returned is $3 = 130
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3944 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 66f9ccaa94950e0483d86cb2f934acbd9d2d4233
-Author: s <s at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jan 27 12:22:50 2010 +0000
-
-    fix SIGSEGV:
-    $ pkcs11-tool --slot 5 --login --pin "12345678" --label 1 --type data --private --write-object tmp.txt
-    Generated Data Object:
-    Data object 0
-    ...
-    $ pkcs11-tool --slot 5 -O --login --pin "12345678"
-    Data object 135436368
-      label:          '1'
-      application:    '1'
-      app_id:         -1
-      flags:           modifiable private
-    ...
-    (gdb) run
-    Starting program: /usr/local/bin/pkcs11-tool --slot 5 --login --pin "12345678" --label 1 --type data --delete-object
-    
-    Program received signal SIGSEGV, Segmentation fault.
-    [Switching to Thread -1210333504 (LWP 7193)]
-    0xb7cc8181 in slot_token_removed (id=5) at slot.c:319
-    319                     if (object->ops->release)
-    (gdb) bt
-    #0  0xb7cc8181 in slot_token_removed (id=5) at slot.c:319
-    #1  0xb7cc82dd in card_removed (reader=0x811bdf0) at slot.c:132
-    #2  0xb7cc43e7 in C_Finalize (pReserved=0x0) at pkcs11-global.c:298
-    #3  0x08050fc0 in main (argc=11, argv=0xbf98d6f4) at pkcs11-tool.c:677
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3943 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5cd5728c0e7b290b19e877689432ec87fca2efa4
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jan 26 12:59:08 2010 +0000
-
-    libopensc: search pkcs15 objects: accept NULL value for the output argument
-    
-    So that, the dummy object for the 'search pkcs15 object' calls is not neccessary.
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3942 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2ec8932c93a2fc7c8939286bf68d654aaa5a3a38
-Author: s <s at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jan 26 10:40:47 2010 +0000
-
-    fix:
-    reader-openct.c: In function 'openct_reader_connect':
-    reader-openct.c:204: error: 'reder' undeclared (first use in this function)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3941 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit bc140126e967fce0f2a148a48cfbe0e2a79f89f5
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jan 25 16:42:22 2010 +0000
-
-    pkcs15init: in select_object_path() look for the template also outside the 'key-domain'.
-    
-    To use New API with the cards that do not have 'key-domain' in their profile,
-    when setting object data path,
-    the object template has to be also looked for outside the 'key-domain'.
-    
-    ;migrate Oberthur to the New API;
-    ;use macros SC_CALLED, SC_TEST_.., SC_RETURN in pkcs15-lib.c
-    
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3940 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 986309db799e288082c1d9389147cd7277980766
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jan 25 16:10:54 2010 +0000
-
-    libopensc: new operations for access control
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3939 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4662812e93c696fce5fec382fa61de41392628b7
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jan 25 15:53:29 2010 +0000
-
-    pkcs15-init tool: when importing bunch of certificates, break after the first error
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3938 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 97d5b3e6e7199b05db5a48254e798d9a9f6542c5
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jan 25 15:30:33 2010 +0000
-
-    sorry, commit by error; reverting back to r3935
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3937 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6e9c7e561941502878c88a99ca6af1655b0bab8f
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jan 25 15:11:35 2010 +0000
-
-    pkcs15-init tool: when importing bunch of certificate, break after the first errorsrc/tools/pkcs15-init.c
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3936 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0244baa494ecf80c0f3b2eb5bffc70f3f6511625
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jan 24 20:45:02 2010 +0000
-
-    pkcs11:
-      - slots, sessions and objects are kept as lists.
-      - change the way slots, cards and readers are managed.
-      - re-implement C_WaitForSlotEvent(/C_Finalize) as written in PCKS#11 v2.20, canceling pending blocking calls.
-      - implement a "virtual hotplug slot" with a floating slot id to keep NSS working with C_WaitForSlotEvent with a new reader.
-        NSS does not call C_GetSlotList(NULL) to re-fetch the list of available slots if C_WaitForSlotEvent returns an event in an already known slot ID.
-        By changing the ID of a slot whenever a reader attached  NSS/Firefox can be tricked into recognizing new readers when waiting for events with C_WaitForSlotEvent.
-      - change (possibly break something) sc_to_cryptoki_error() to not have side-effects
-      - Implement CKU_CONTEXT_SPECIFIC in C_Login to implement CKA_ALWAYS_AUTHENTICATE (keys with user consent)
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3935 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0595eb7d1ed63184c6a8a9adc83cb1fe1ddee8f3
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jan 24 15:40:02 2010 +0000
-
-    tests: remove slots and sc_disconnect_card API as in r3931
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3934 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5a0cc5012357b21673a6da4b15f7e0b7a7957e4d
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jan 24 15:29:47 2010 +0000
-
-    tools: remove slots; implement change in sc_disconnect_card(); convert util_connect_card()/--wait to support the changes in r3931
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3933 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e191142d04e91661fe75cb3a8644f1d183f93696
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jan 24 15:26:14 2010 +0000
-
-    pkcs15init: remove slots, according to r3931
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3932 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d006b1845ef6ef7416a04fb8cf0677a8cd0cb6e1
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jan 24 15:25:08 2010 +0000
-
-    libopensc:
-     - Remove slot abstraction from internal API and all reader drivers. CT-API (from where it all comes from) readers with multiple slots (if still found) can be presented as separate readers, OpenCT should remove the slot abstraction, PC/SC never knew about it. None of the tools knew how to use slots.
-     - Add sc_cancel (translates to SCardCancel)
-     - Re-implement sc_wait_for_event; support a blocking call.
-     - Replace the "int reader" API with "* sc_reader_t" style; add "Get reader by name" functionality.
-     - Remove "action" parameter from sc_disconnect_card() (was not used)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3931 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0c7d6587beefdd77549056914b2a2da712ecee53
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jan 24 15:14:55 2010 +0000
-
-    Use a constant buffer instead of malloc.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3930 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 101df10ae53610c230e1f86da628188636064bcf
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jan 24 15:05:14 2010 +0000
-
-    Add simclist, also used by pcsc-lite, for list operations.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3929 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit cbfa2dd9398adf4b558afabe0566583e9b4d3399
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jan 24 12:50:37 2010 +0000
-
-    Missing piece from r3912
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3928 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit cd9e6669267e1a2e41b789330134c080c29cb5a6
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jan 24 12:38:34 2010 +0000
-
-    SC_ERROR_MEMORY_FAILURE signals EEPROM failures on card. Failures to allocate memory on host result in SC_ERROR_OUT_OF_MEMORY.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3927 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 612d66655df8d592b57f33753cc6adadee8731e3
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Jan 23 19:12:52 2010 +0000
-
-    Introduce SC_ERROR_NOT_ENOUGH_MEMORY <=> CKR_DEVICE_MEMORY.
-    
-    When trying to import a too large keyfile as a data object, TrueCrypt received a CKR_GENERAL_ERROR before this.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3926 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f48ec9528eb59c36f813d4a1ba1aded295610112
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Jan 23 06:28:35 2010 +0000
-
-    OpenSSL 1.0.0-beta series crash when assembler implementations underflow with 0 byte length call to OPENSSL_cleanse() and overwrite memory.
-    Avoid it by nut trying to eraze zero memory.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3925 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 561507769af85d6d5127ba24c0e71bfa5c7dfacd
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jan 22 12:11:41 2010 +0000
-
-    tools: cardos-tool uses OpenSSL, link against it.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3924 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f2bc83b1382243b642fa283792a75ccccf4ed30a
-Author: s <s at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jan 22 12:01:17 2010 +0000
-
-    fix:
-    
-    CK_MECHANISM rsa_mech = { CKM_RSA_PKCS_KEY_PAIR_GEN, NULL, 0 };
-    C_GenerateKeyPair(..., &rsa_mech, ..., ..., ..., ..., ..., ...); -> ... -> sc_pkcs15init_store_public_key -> sc_pkcs15init_store_data -> select_object_path -> sc_pkcs15_get_objects: return 0 -> CKR_OK
-    ($ pkcs15-tool --list-public-keys:
-    Public RSA Key [Public Key]
-            ...
-            Path        : 3f0050000200
-    )
-    
-    CK_MECHANISM gost_mech = { CKM_GOSTR3410_KEY_PAIR_GEN, NULL, 0 };
-    C_GenerateKeyPair(..., &gost_mech, ..., ..., ..., ..., ..., ...); -> ... -> sc_pkcs15init_store_public_key -> sc_pkcs15init_store_data -> select_object_path -> sc_pkcs15_get_objects: return 0 -> CKR_OK
-    ($ pkcs15-tool --list-public-keys:
-    Public RSA Key [Public Key]
-            ...
-            Path        : 3f0050000200
-    
-    Public GOSTR3410 Key [Public Key]
-            ...
-            Path        : 3f0050000200
-    )
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3923 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7d935df1bc65022ef80a40f8721f0fa8e3709289
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jan 21 19:58:49 2010 +0000
-
-    Fix #193: cryptoflex driver did not set minimum PIN length.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3922 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a6dd95cd03ce93ccd6c79737eac899f8be8a4f3c
-Author: s <s at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jan 21 10:58:10 2010 +0000
-
-    update on NEWS
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3921 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 39a70345b99ae8f6a7e1d6903497f1abf3fb9a64
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jan 21 10:07:40 2010 +0000
-
-    pkcs15init profile: 'private key' as BSO is differenciated from the one as EF
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3920 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6fc954cbc63c07c03ce3c7180d0c894d7e2dc73b
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jan 21 09:41:40 2010 +0000
-
-    pkcs15init: new profile type BSO
-    at the profile level the difference between EF and BSO is:
-    - BSO path is always the path of the host DF and do not indexated when template is instanciated;
-    - EF path is always ending with file-id that is always indexated  when template is instanciated.
-    
-    New non-static 'sc_profile_get_file_instance' procedure to instanciate non-template entries.
-    In profile.c get_uint() accepts hexadecimals.
-    In CardOS profile (I venture to) increase the xDF sizes
-    	and change ACL to permit the key re-importing.
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3919 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d5200b3bbea13ccd85a87767e807e51d7afeec5e
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jan 19 13:11:21 2010 +0000
-
-    Add GemSafeXpresso 32K ATR.
-    The card is available from http://www.smartcardfocus.com/shop/ilp/id~246/p/index.shtml
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3918 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 54ee99d486299f0ae7b9da948cdb2413d1a01257
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jan 17 21:08:13 2010 +0000
-
-    pkcs15init: use pinpad
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3917 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f205d48258204927d46ba3192c1f194dfb91ff2c
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Jan 16 21:52:47 2010 +0000
-
-    pkcs15init: dissociate object file-id and object ID;
-    ;use macros SC_CALLED, SC_RETURN and SC_TEST_RET;
-    ;change debug level in debug macros;
-    
-    For a new pkcs15 object of a given type the file index is chosen as a first value in the range from 'file-id' to 'max-id',
-    excluding the values that are already assigned to the file indexes of the existing pkcs15 objects of the same type.
-    
-    'file-id' is defined in the template ('key-domain') of the card profile ;
-    'max-id' is 'file-id' + hard coded value 0xFE .
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3916 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 45b95583d0880c14f0e3ec09484841314ab2a356
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Jan 16 20:55:45 2010 +0000
-
-    profile sanity check: in template check for minimal difference between file-ids
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3915 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1a7793c77cfcdbcd91bd5abb0af8aeff2fcc2af2
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jan 15 15:29:16 2010 +0000
-
-    pkcs15init: possible error of 'find_object_by_id' should not be ignored
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3914 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit bb5b8d0493b2d119f5a888e23286d74e29608ea5
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jan 15 14:08:54 2010 +0000
-
-    oberthur: increase sizes of xDF files; source tabified
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3913 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 29d93a07b1f71b1942943e09e8139c60daaa8fda
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jan 15 09:45:11 2010 +0000
-
-    Add comments about unused errors and add an error for locked readers.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3912 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 875fe4a50fb96b180c20f3806b723580bcb8dd0b
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jan 15 09:36:00 2010 +0000
-
-    pkcs11-tool: test hotplug partial commit fix + make a slot ID mandatory and parse it as an unsigned long, not int.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3911 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c5effc32c38c52752f56daa6c5632241835982d3
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jan 15 09:33:27 2010 +0000
-
-    pkcs11-tool: test hotplugging and events (C_GetSlotList/C_WaitForSlotEvent) before others tests and only if --hotplug is given
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3910 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit cc5c03197d645220173e2a63d91220a41b30cf56
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jan 15 09:27:17 2010 +0000
-
-    pkcs11-tool: Check for CKA_ALWAYS_AUTHENTICATE and CKU_CONTEXT_SPECIFIC login for --test operations.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3909 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e595042474aa5cfa3de5dcfddb2c4bca72fb0f2f
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jan 15 09:22:03 2010 +0000
-
-    pkcs11-tool: Call C_Finalize when a fatal error happens. (Otherwise OSX pcsc locks up)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3908 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c6a0e54f9a94a44f0bfc33fcefefba903ba1e013
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jan 13 16:39:37 2010 +0000
-
-    oberthur: accept token 'OCS ID-One Cosmo Card'; ignore warning status 'end of file reached ...'
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3907 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4942760d06300db1706099da7a2fa86fad037820
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jan 13 12:27:05 2010 +0000
-
-    Xiaoshuo Wu:
-    removes the assert line and some unused code, solves a problem with ePass3000.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3906 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d43ea3f0651d20aa2c7db584629e3da7f76eb7b7
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jan 10 21:58:48 2010 +0000
-
-    Remove strange characters.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3905 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0518ed57c5015ebd13d7caa342c2ce982c2fc203
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jan 10 20:33:32 2010 +0000
-
-    no more 'reuse pkcs15 object'
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3904 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7ce6c1d05eadfcf70adcf02143b8481060451920
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jan 10 18:44:02 2010 +0000
-
-    PC/SC: Add SCardCancel to please mingw
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3903 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ece2a6a3403f236853a199e269924cd800729697
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jan 8 15:51:42 2010 +0000
-
-    regression tests: pkcs11-tool API has been changed
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3902 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e2dae6b97bf1916c1c01a3db9825334df2fb7fe8
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jan 8 15:41:07 2010 +0000
-
-    Unlock User PIN with PKCS#11:
-    One of the three unblock methods can be activated from the 'opensc-pkcs11' section of opensc.conf:
-    - C_SetPin() in the unlogged sesssion;
-    - C_SetPin() in the CKU_SPECIFIC_CONTEXT session;
-    - C_InitPin() in CKU_SO session (inspired by Pierre Ossman).
-    -- This last one works, for a while, only for the pkcs15 cards without SOPIN auth object.
-       For the pkcs15 cards with SOPIN, this method will be useful for the cards
-       that do not have then modes '00' and '01' of ISO command 'RESET RETRY COUNTER'.
-    
-    Test commands:
-    # pkcs11-tool --module ./opensc-pkcs11.so --slot 0 --unlock-pin --puk "123456" --new-pin "9999"
-    # pkcs11-tool --module ./opensc-pkcs11.so --slot 0 --unlock-pin -l --login-type context-specific --puk "123456" --new-pin "9999"
-    # pkcs11-tool --module ./opensc-pkcs11.so --slot 0 --init-pin -l --new-pin "9999"
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3901 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 39ca6b156f67a8081e229703cfd74f455065b731
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jan 3 18:26:46 2010 +0000
-
-    pkcs15-init tool: delete both key parts when deleting splitted key
-    
-    Splitted key is stored as the two private keys with the same ID.
-    (It's not conform to PKCS#15, but tolerated by OpenSC.)
-    Previously used 'sc_pkcs15_find_prkey_by_id()' is not appropriated to the case of splitted key.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3900 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f0484968a952960658db2d543720f94a7de8275e
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Dec 18 13:33:03 2009 +0000
-
-    merge changes 0.11.11 -> 0.11.12
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3899 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7cf8760f9f92ab19ec8798fb9d8e51f583c2a665
-Author: s <s at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Dec 10 14:50:32 2009 +0000
-
-    Fix: any of these calls
-    C_CreateObject(hSession, NULL_PTR, 1, NULL_PTR);
-    C_GetAttributeValue(hSession, hObject, NULL_PTR, 1);
-    C_SetAttributeValue(hSession, hObject, NULL_PTR, 1);
-    C_FindObjectsInit(hSession, NULL_PTR, 1);
-    C_FindObjects(hSession, NULL_PTR, 0, NULL_PTR);
-    C_FindObjects(hSession, NULL_PTR, 1, NULL_PTR);
-    C_FindObjects(hSession, NULL_PTR, 1, pulObjectCount);
-    C_DigestInit(hSession, NULL_PTR);
-    C_SignInit(hSession, NULL_PTR, hKey);
-    C_SignRecoverInit(hSession, NULL_PTR, hKey);
-    C_DecryptInit(hSession, NULL_PTR, hKey);
-    C_VerifyInit(hSession, NULL_PTR, hKey);
-    C_GenerateKeyPair(hSession, NULL_PTR, pubKeyTmpl, arraysize(pubKeyTmpl),
-    prvKeyTmpl, arraysize(prvKeyTmpl), &hPubKey, &hPrvKey);
-    C_GenerateKeyPair(hSession, pMechanism, pubKeyTmpl,
-    arraysize(pubKeyTmpl), NULL_PTR, 1, &hPubKey, &hPrvKey);
-    C_GenerateKeyPair(hSession, pMechanism, NULL_PTR, 1, prvKeyTmpl,
-    arraysize(prvKeyTmpl), &hPubKey, &hPrvKey);
-    =>
-    Segmentation fault
-    
-    Remark: Allow calls:
-    C_FindObjectsInit(hSession, NULL_PTR, 0)
-    C_GenerateKeyPair(hSession, pMechanism, NULL_PTR, 0, NULL_PTR, 0, phPublicKey, phPrivateKey)
-    C_UnwrapKey(hSession, pMechanism, hUnwrappingKey, pWrappedKey, ulWrappedKeyLen, NULL_PTR, 0, phKey)
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3891 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1ec5a6b25dd555de12a4c8a1bcecf2cc256a1d4d
-Author: s <s at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Dec 10 12:34:04 2009 +0000
-
-    fix: return CKR_ARGUMENTS_BAD from C_Login, C_InitPIN, C_SetPIN, if pPin == NULL_PTR and PinLen > 0
-    PKCS#11:
-    "To log into a token with a protected authentication path, the pPin parameter to C_Login should be NULL_PTR."
-    "To initialize the normal user?s PIN on a token with such a protected authentication path, the pPin parameter to C_InitPIN should be NULL_PTR."
-    "To modify the current user?s PIN on a token with such a protected authentication path, the pOldPin and pNewPin parameters to C_SetPIN should be NULL_PTR."
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3890 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9dff2deae1fa67ba3bb1d51d519ce029a0c39e8c
-Author: s <s at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Dec 9 13:59:03 2009 +0000
-
-    fix: return CKR_USER_NOT_LOGGED_IN (now CKR_GENERAL_ERROR) from C_GenerateKeyPair for the case where there was no call C_Login
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3889 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 781c3c0fff0c795cb390461fa96ea7dc81a3a88b
-Author: s <s at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Dec 8 18:34:55 2009 +0000
-
-    add to changeset 3887
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3888 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 425ec51f782979a65d98cb3494cf7b1b0f5f8d0d
-Author: s <s at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Dec 8 18:28:22 2009 +0000
-
-    fix:
-    CK_MECHANISM gostMech = { CKM_GOSTR3410_KEY_PAIR_GEN, NULL, 0 };
-    ...
-    C_GenerateKeyPair(hSession, &gostMech, NULL_PTR, 0, NULL_PTR, 0, &hPubKey, &hPrvKey);
-    -> CKR_OK and Generate RSA Key Pair
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3887 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 22a950cd0d6063b7991aa9118aaf867456be8b6a
-Author: s <s at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Dec 8 14:29:49 2009 +0000
-
-    Fix: return CKR_SESSION_READ_ONLY from C_InitPIN, C_SetPIN,
-    C_CreateObject, C_CopyObject, C_DestroyObject, C_SetAttributeValue,
-    C_GenerateKey, C_GenerateKeyPair, C_UnwrapKey, C_DeriveKey if session is
-    read-only.
-    
-    PKCS#11:
-    "C_InitPIN can only be called in the 'R/W SO Functions' state."
-    
-    "C_SetPIN can only be called in the 'R/W Public Session' state, 'R/W SO
-    Functions' state, or 'R/W User Functions' state. An attempt to call it
-    from a session in any other state fails with error CKR_SESSION_READ_ONLY."
-    
-    "Only session objects can be created/destroyed/modified
-    (C_CreateObject/C_DestroyObject/C_SetAttributeValue) during a read-only
-    session."
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3886 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5881b46ac1541e5faf948c04011c8e0db63dd756
-Author: s <s at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Dec 7 12:50:59 2009 +0000
-
-    PKCS#11: Spec does not allow CKR_OBJECT_HANDLE_INVALID from C_EncryptInit, C_DecryptInit, C_DigestKey, C_SignInit, C_SignRecoverInit, C_VerifyInit, C_VerifyRecoverInit, C_WrapKey, C_DeriveKey, C_UnwrapKey
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3885 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5bf000da188db373923b72b3f7536e65ff4e78a9
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Dec 3 13:11:56 2009 +0000
-
-    pkcs15-tool: unblock PIN with pinpad
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3884 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 193ca769800af0866e040583917d4945db46f539
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Dec 3 12:51:12 2009 +0000
-
-    pkcs15-tool: change PIN with pinpad
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3883 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 44e94c8c94dc74572a509c62f96c7ad93f0231de
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Dec 3 11:59:48 2009 +0000
-
-    opensc-explorer: remove debug messages
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3882 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4730e98da10325023bac76855187fe1476d7745d
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Dec 3 11:13:17 2009 +0000
-
-    Thomas Uhle: Just this morning I realised that there is
-    a minor mistake in my patch for opensc_info(). For the Sun Studio 12.1
-    compiler (__SUNPRO_C == 0x5100) and later versions also, it must be
-    (__SUNPRO_C >> 4) & 0xFF to split the micro and mask the major version
-    number.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3881 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6ff96b8c6647faf29f7fc7a6db01c9ec689482e8
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Dec 3 11:11:04 2009 +0000
-
-    pinpad support of PIN changing and unlocking
-    Oberthur and opensc-explorer
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3880 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 490e02b3495bb14bca5f226152787340c1dc585d
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Dec 3 10:47:51 2009 +0000
-
-    after Martin's suggestion: for pcsc do not use '0' protocol when detecting readers
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3879 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit df4bdaf6f72d4f33ee9e4224741a361498a2217f
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Dec 3 07:18:19 2009 +0000
-
-    Update westcos emulation by François Leblanc.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3878 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 93a2b39028e72d22973aaf149ecb79d9e6cfa0f5
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Dec 3 07:10:24 2009 +0000
-
-    Updated westcos driver by François Leblanc
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3877 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 073c9da34223aba1671a6d596b0e9de265f44006
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Dec 3 07:05:15 2009 +0000
-
-    Thomas Uhle: modify Makefile so configure finds the include files
-    of PC/SC lite.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3876 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b2c5ab32092b6b04a6418d863881f7b787a5f9ad
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Dec 3 07:03:53 2009 +0000
-
-    Thomas Uhle: Add information about sun compiler to opensc-tool.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3875 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 06aaa718cc7fec5e9658a0c8daf0203935b62c4c
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Dec 2 11:10:16 2009 +0000
-
-    Describe now option for --help.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3874 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 724c3485a650dff903e099a1a9abbf6b9d22e16c
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Dec 2 11:07:45 2009 +0000
-
-    remove dead code for now - easy to recreate later.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3873 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 29407cf2d885cc6c999df8e4778a0d06fb17438f
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Dec 2 09:52:12 2009 +0000
-
-    fixed and tested by Viktor TARASOV. Thanks!
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3872 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5b21dd6a0523719d00ee2b3b663cc3f1c8a8a07d
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Dec 1 21:10:06 2009 +0000
-
-    basic command to change startkey,
-    so far untested.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3871 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b9935bf410f4b7eed4885cfa3d225027e8752789
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Dec 1 11:47:19 2009 +0000
-
-    cardos-tool: invalid parsing of the 'common system keys' info
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3870 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e4780e82ec4a6b073cad5089c2d0e5d76dce127c
-Author: s <s at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Nov 27 11:15:33 2009 +0000
-
-    add to pkcs11-tool: GOST mechanisms and GOSTR3410 key to show objects on token
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3869 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d201a1d86d247dd005ab9cecb8b16a7dcd413148
-Author: s <s at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Nov 27 11:07:23 2009 +0000
-
-    add get CKA_GOSTR3410_PARAMS attribute for GOST private key
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3868 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f2d6ec2c764ce450e488c6749245e90a6753d0b5
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Nov 25 18:01:30 2009 +0000
-
-    Always print the slot description (reader name in case of OpenSC)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3867 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0756990c4458800c50125d959c7df77e5a4583a2
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Nov 24 13:43:32 2009 +0000
-
-    Patch by João Poupino for Portugese eID card.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3866 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 56dd3ec0ead138fadcfaee87ee6e6b8a8e8dd3e2
-Author: s <s at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Nov 23 16:38:02 2009 +0000
-
-    Modification Rutoken S binary interfaces by Aktiv Co. (OpenSC+Rutoken S driver for Windows works now)
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3865 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 505406c3b0544d2ad35f145850d2607dd7a20ea9
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Nov 23 13:40:05 2009 +0000
-
-    Oberthur: verify PIN with pinpad
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3864 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b372290e72d13cb616ac698903c5ee9500ad9083
-Author: s <s at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Nov 23 11:41:23 2009 +0000
-
-    correct SEC_ATTR_SIZE name (add prefix)
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3863 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 05b96a1f5e001e5196bd4a200b4f63a6ff6a3a29
-Author: s <s at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Nov 20 15:23:12 2009 +0000
-
-    CKR_USER_ALREADY_LOGGED_IN: It indicates that the specified user cannot be logged into the session, because it is already logged into the session.
-    CKR_USER_ANOTHER_ALREADY_LOGGED_IN: It indicates that the specified user cannot be logged into the session, because another user is already logged into the session.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3862 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7cbe5e5470ce6304724161caa0c76088e82678f9
-Author: s <s at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Nov 20 13:15:00 2009 +0000
-
-    use generic iso7816_select_file code, remove duplicate code
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3861 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 052775325a95c2269d7c15203a68fd9c1958b340
-Author: s <s at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Nov 20 12:26:04 2009 +0000
-
-    remove dead code (in compliance with http://www.opensc-project.org/opensc/changeset/3839#file8)
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3860 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5320ca6fd1afa40b475510bd23a34efd3d77376f
-Author: s <s at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Nov 19 15:41:03 2009 +0000
-
-    Corrected GOSTR3410 public key structure
-    
-    Working now with GOST R 34.10:
-    $ pkcs15-init --store-private-key key --key-usage sign,decrypt --auth-id 2 --id 1 --pin "12345678"
-    $ pkcs15-init --store-certificate my_cert --id 1 --pin "12345678"
-    
-    But have problem: no CKA_GOSTR3410_PARAMS by retrieve pub_key from certificate, if pub_key object was removed (see parse_x509_cert, asn1_decode_gostr3410_params)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3859 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5ba09f087b21b20ca5a22ea2172c5882ae26b391
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Nov 17 13:27:15 2009 +0000
-
-    logs: time stamp with 1msec resolution in unix. Thanks to Ludovic Rousseau.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3858 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4f52e7bba8a6989c7a04da51a68eda7150d8b490
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Nov 17 12:12:17 2009 +0000
-
-    reader-pcsc::pcsc_transmit() add log message with the reader's name
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3857 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b41fcbedd9328681deb7930e955773b84af3471a
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Nov 17 11:11:05 2009 +0000
-
-    logs: time stamp; dump_hex() with the static output buffer
-    - time stamp in the log messages: for Windows 1msec resolution, otherwise 1sec;
-    - one more dump hex function, to be easily inserted into the formatted message.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3856 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 11e9cab070600dab23f5c46d545409a56649c294
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Nov 16 21:41:40 2009 +0000
-
-    Fix C coding style to please visual studio. By João Poupino.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3855 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1444f8db954abaa89f8854bfbd744bea34e5fa27
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Nov 16 20:45:26 2009 +0000
-
-    Fix windows build
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3854 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e931fdfd067a40626c2f65e29684b38eb431e1be
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Nov 16 20:35:15 2009 +0000
-
-    Fix C coding style
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3853 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ff8912c6002463ea2493db46b3938184d6554028
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Nov 16 07:32:46 2009 +0000
-
-    Remove plugindir as plugin was removed
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3852 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c5d2618ea3c65effb93da0635c905743f420dc42
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Nov 15 18:08:10 2009 +0000
-
-    Estonian eID: fix charset
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3851 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c398f55373683ea8531a1c71eb46112900aee4ec
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Nov 15 18:03:04 2009 +0000
-
-    Allow to turn off CT-API support
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3850 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a8dc5bdeefa7a4ef022cf3a8586d6ee81a11eca7
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Nov 14 21:55:17 2009 +0000
-
-    opensc-explorer::do_apdu() number of bytes in printed message 'Sending'
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3849 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2005bc2e920bf6ca32510599328ccf08df583a04
-Merge: 6415269 df20fe7
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Nov 13 19:28:13 2009 +0000
-
-    Move branches/martin/0.12 to trunk
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3848 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit df20fe72e139e084381c8c7307d718fa5336145b
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Nov 13 19:01:21 2009 +0000
-
-    merge [3823:3844/trunk]
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/branches/martin/0.12@3845 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 64152699b52d9b8e9ce2f41ee6609f578c4c1588
-Author: s <s at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Nov 13 14:52:25 2009 +0000
-
-    remove dead code
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3844 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 533a33521f4295fc1b3b4d55f65863e452c8ab87
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Nov 13 14:51:32 2009 +0000
-
-     * Update opensc-tool and opensc-explorer man pages
-     * Remove not implemented pksign/pkdecrypt commands from opensc-explorer. Use pkcs15-crypt instead.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/branches/martin/0.12@3843 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2fe567e94d747532003f3ee508f4c318c7173d6f
-Author: s <s at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Nov 13 14:45:33 2009 +0000
-
-    add support for GOSTR3410 keys
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3842 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0eac0fb14cabb83bb901870d42102d2d800ba9a3
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Nov 13 12:25:18 2009 +0000
-
-    Fix #58: properly document "pkcs15-init -T"
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/branches/martin/0.12@3841 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ca0976ba6f7860cc82a1e3d308bf427437262719
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Nov 13 11:48:17 2009 +0000
-
-    Remove signer and related configure elements
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/branches/martin/0.12@3840 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 38ba3ad18d0b6dbe33c7e98bbefcdb2eb3c6bb7f
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Nov 13 11:32:12 2009 +0000
-
-    Remove card->finish() functions that do nothing
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/branches/martin/0.12@3839 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 84de38855fc242204518aa06f596da4aba687474
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Nov 13 11:23:16 2009 +0000
-
-    Fix a compiler warning
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/branches/martin/0.12@3838 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2dfbf4f934c9be535ca891e059dd2e54664930c4
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Nov 13 11:21:58 2009 +0000
-
-    Fix compiler warnings
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/branches/martin/0.12@3837 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e95b0662f6549644f87f54a65d842c6114ddd85c
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Nov 13 11:21:39 2009 +0000
-
-    Fix compiler warning
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/branches/martin/0.12@3836 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit bc1d4c4e06e0d7f2eba136d865ea14612427b475
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Nov 13 11:21:09 2009 +0000
-
-    Fix compiler warnings and a typo
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/branches/martin/0.12@3835 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b34a1a6128b4c6636b6445dcdb515fd87afd7de4
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Nov 13 11:19:46 2009 +0000
-
-    Remove unused variables & fix line endings.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/branches/martin/0.12@3834 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e5b644c2f7a868322f8394c08d81873c6df73859
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Nov 13 11:15:00 2009 +0000
-
-    Remove unused variables
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/branches/martin/0.12@3833 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 48924f32223f9922519662b2957dce546706c585
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Nov 13 11:14:10 2009 +0000
-
-    Remove unused variables
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/branches/martin/0.12@3832 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit bb9423c5f990adcffb481375afec2d0e3e93fcc0
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Nov 13 11:13:35 2009 +0000
-
-    Remove unusued variables
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/branches/martin/0.12@3831 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3a3c0b3fe68e8e7fb29bfb179bffe6e32bbddc44
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Nov 13 11:13:14 2009 +0000
-
-    Remove unused variables
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/branches/martin/0.12@3830 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a869431ff66b462413a6c7a06c93eca7adc144f8
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Nov 13 11:13:01 2009 +0000
-
-    Remove unused variables
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/branches/martin/0.12@3829 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 17b7e1b0413b8a775fb210eff07d4711749b03b4
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Nov 13 11:12:43 2009 +0000
-
-    Remove unused variables
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/branches/martin/0.12@3828 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1a6f8b7468a4d5f0576f76ee67d19f46e4273cde
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Nov 13 11:12:14 2009 +0000
-
-    Remove unused variables
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/branches/martin/0.12@3827 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 684e9b20baa4a9094872b47f5a7c4c70e8e6fae1
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Nov 13 11:10:44 2009 +0000
-
-    Convert newlines to unix style, remove compiler warnings.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/branches/martin/0.12@3826 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5dc6a35aa8e27d20a1cd30affcd266ae7dd55486
-Author: s <s at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Nov 13 09:53:22 2009 +0000
-
-    mix tab/space character [3822]
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3825 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3ea5bb7987601f0cbf42aeb30176af7d318b0ac0
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Nov 13 09:45:21 2009 +0000
-
-    Merge [3804:3822/trunk]
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/branches/martin/0.12@3824 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4f316b2f2abe37d1d02295a9751ad81f74fe8d0c
-Author: jps <jps at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Nov 13 09:12:31 2009 +0000
-
-    patch to improve wesctos pkcs15init, submitted by Francois Leblanc
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3823 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit babc99bf583f027f8566db1baad35ec4d48bc23b
-Author: jps <jps at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Nov 12 16:03:51 2009 +0000
-
-    To enable keygeneration in Firefox and opensc-pksc11.so when using smartcards that require different keybobjects for signing and encryption (CardOS)
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3822 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a06c8ef67fe9151a6c96176d3c240a040fd497df
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Nov 11 20:18:41 2009 +0000
-
-    set default ID style to 'native'
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3821 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1df1bbb0c8de6f993d1beff9aa4355497f9eb321
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Nov 11 18:47:14 2009 +0000
-
-    Intrinsic ID: after Aleksey Samsonov's code revision:
-    - memory leaks after 'memory allocation' and other errors;
-    - coding style;
-    - simplify code.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3820 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 15b1ba0cd7d5e753e49d095bafead91b0a417a4c
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Nov 11 08:42:24 2009 +0000
-
-    Fix two bugs, noticed by Mats Andersson
-    
-    http://www.opensc-project.org/pipermail/opensc-devel/2009-November/012817.html
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3819 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4dc884574e05fafbd3d181e075386ed4b154e20c
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Nov 10 18:51:24 2009 +0000
-
-    Intrinsic ID for the cryptographic objects:
-    with the new pkcs15 profile option 'pkcs15-id-style'
-    the method to calculate the unique object ID for the cryptographic
-    objects 'private key', 'public key' and 'certificate x509'
-    can be choosen from the followings:
-    - actually existing one byte ID: 0x45 + 'number of existing object of given type';
-    - 'Mozilla style': SHA1(rsa.modulus) or SHA(dsa.pub);
-    - 'rfc2459': 'Subject Key Identifier'.
-    
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3818 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 81cc9d605fd88c5d4d815c54baff0c4bc8a25e17
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Nov 10 16:25:58 2009 +0000
-
-    free card applications when erasing card
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3817 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3603a22917c2d8d9220325cac7edf31d0619d864
-Author: s <s at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Nov 10 15:07:40 2009 +0000
-
-    fix: probable endless loop
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3816 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9c9e21e9cc5d5a37ff2b8b07d36606c43f65571c
-Author: s <s at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Nov 10 14:42:29 2009 +0000
-
-    add support for GOSTR3410 keys
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3815 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 16d9d8ff43f147b602a94e14344a7ed753eab748
-Author: s <s at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Nov 10 12:55:55 2009 +0000
-
-    pkcs15-tool.c:71: warning: comma at end of enumerator list
-    pkcs15-tool.c: In function 'print_pin_info':
-    pkcs15-tool.c:911: warning: comparison of unsigned expression >= 0 is always true
-    pkcs15-tool.c: In function 'test_update':
-    pkcs15-tool.c:1254: warning: comparison between signed and unsigned
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3814 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ed93bfa548e6392dde12362d09e1a18f5c878ccb
-Author: s <s at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Nov 10 12:38:09 2009 +0000
-
-    corrected option_help according to options
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3813 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 36f26b63576c5a8d550e82ec9c7a594743d23d37
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Nov 10 10:05:51 2009 +0000
-
-    Do not duplicate reader name in private structure.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/branches/martin/0.12@3812 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e06b0543695ae62fd29650dfddd142f3e9abd675
-Author: s <s at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Nov 9 14:14:00 2009 +0000
-
-    add support for uaToken S
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3811 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a0acb90b48c9e8df4fe7e9fbbc6c3c3ce01388ae
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Nov 7 21:04:53 2009 +0000
-
-    Oberthur card driver: useless assignments
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3810 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 435862ee1e2d994a4a32b6fb03d250513d2a1bf4
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Nov 7 20:45:16 2009 +0000
-
-    suppress errors when verifying PIN status
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3809 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8681d963ab40b92647042d597fcf6866c7905cff
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Nov 7 19:38:15 2009 +0000
-
-    Oberthur pkcs15init: update Oberthur's 'token info' file
-    when initializing token or creating user PIN
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3808 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 004f23f10261ad12c20c3ee5e2692c422dfc0a2b
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Nov 7 10:26:20 2009 +0000
-
-    Oberthur card driver: new style for PIN commands;
-    allow verifying of the PIN status;
-    when verifying SOPIN, try firstly the local one.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3807 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 76f3cfd79cde87202845e0310b78e20d94fe2cea
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Nov 6 10:06:40 2009 +0000
-
-    invalid e-mail address
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3806 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 51e15b8fb4bcd96f74dbc11dcfe80cafc9c6c9c4
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Nov 6 10:00:31 2009 +0000
-
-    For the Oberthur IdOne AuthentIC card: make possible
-    to initialize the card with the PIN unblocking style
-    of the Oberthur's native middleware.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3805 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 450e1fc5aeab264da8aa671ac90730d28b6ae497
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Nov 5 18:27:56 2009 +0000
-
-    Merge [3794:3803/trunk]
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/branches/martin/0.12@3804 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 275c7f930e4a9488a6ca636ec5b74ed695b84efb
-Author: viktor.tarasov <viktor.tarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Nov 2 18:25:30 2009 +0000
-
-    remove useless code
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3803 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 704f59ad5cc4137c5f104998e9375a6948a28619
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Nov 2 10:52:39 2009 +0000
-
-    Enable PCSC by default. Use --disable-pcsc if you do not want it.
-    
-    See http://www.opensc-project.org/pipermail/opensc-devel/2009-November/012755.html
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3802 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4101b6c4518c4694cc03a78e5bfc5a2dc933b0f5
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Nov 2 10:43:06 2009 +0000
-
-    Do not use an absolute path for the default PCSC provider.
-    Just use "libpcsclite.so.1" instead so the library can be either in /lib
-    (Ubuntu) or /usr/lib (Debian) for example.
-    
-    See http://www.opensc-project.org/pipermail/opensc-devel/2009-November/012755.html
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3801 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2885691a1091eb6ba28075d305419f9af9e8b282
-Author: s <s at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Nov 1 14:11:41 2009 +0000
-
-    fix potential memory leak
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3800 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f8c6e28bac3ca6e952f20bea90d287a8f1d22ca2
-Author: s <s at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Nov 1 13:55:52 2009 +0000
-
-    fix memory leak and read after free
-    
-    Example code:
-    int main()
-    {
-    	...
-    	r = C_Initialize(NULL);
-    	assert(r == CKR_OK);
-    	r = C_GetSlotList(CK_TRUE, NULL_PTR, &slot_cnt);
-    	assert(r == CKR_OK);
-    	assert(slot_cnt >= 1);
-    	r = C_GetSlotList(TRUE, &slot, &slot_cnt);
-    	assert(r == CKR_OK);
-    	r = C_OpenSession(slot, CKF_SERIAL_SESSION | CKF_RW_SESSION, 0, 0, &hndl_session);
-    	assert(r == CKR_OK);
-    	assert(hndl_session != CK_INVALID_HANDLE);
-    	r = C_Login(hndl_session, CKU_USER, pin, sizeof(pin));
-    	assert(r == CKR_OK);
-    	r = C_CreateObject(hndl_session, data_tmpl,
-    			sizeof(data_tmpl)/sizeof(data_tmpl[0]), &hndl);
-    	assert(r == CKR_OK);
-    	r = C_DestroyObject(hndl_session, hndl);
-    	assert(r == CKR_OK);
-    
-    	r = C_GenerateKeyPair(hndl_session, &rsa_genkp_mech, rsa_pbkey_tmpl,
-    			sizeof(rsa_pbkey_tmpl)/sizeof(rsa_pbkey_tmpl[0]), rsa_prkey_tmpl,
-    			sizeof(rsa_prkey_tmpl)/sizeof(rsa_prkey_tmpl[0]),
-    			&hndl_pb, &hndl_pr);
-    	assert(r == CKR_OK);
-    
-    	r = C_Finalize(NULL);
-    	assert(r == CKR_OK);
-    	return 0;
-    }
-    
-    ==20626== Invalid read of size 4
-    ==20626==    at 0x41036B: pkcs15_add_object (framework-pkcs15.c:679)
-    ==20626==    by 0x410B27: pkcs15_gen_keypair (framework-pkcs15.c:1761)
-    ==20626==    by 0x40980D: C_GenerateKeyPair (pkcs11-object.c:869)
-    ==20626==    by 0x4078CD: main (pkcs11_1.c:71)
-    ==20626==  Address 0x632d3e0 is 0 bytes inside a block of size 584 free'd
-    ==20626==    at 0x4C24A28: free (vg_replace_malloc.c:325)
-    ==20626==    by 0x4E5452B: sc_pkcs15init_delete_object (pkcs15-lib.c:2903)
-    ==20626==    by 0x41243B: pkcs15_dobj_destroy (framework-pkcs15.c:2721)
-    ==20626==    by 0x40AD91: C_DestroyObject (pkcs11-object.c:96)
-    ==20626==    by 0x407871: main (pkcs11_1.c:68)
-    ==20626==
-    ==20626== 80 bytes in 1 blocks are definitely lost in loss record 76 of 148
-    ==20626==    at 0x4C24137: calloc (vg_replace_malloc.c:418)
-    ==20626==    by 0x40E383: __pkcs15_create_object (framework-pkcs15.c:250)
-    ==20626==    by 0x40E45C: __pkcs15_create_data_object (framework-pkcs15.c:439)
-    ==20626==    by 0x41164C: pkcs15_create_data (framework-pkcs15.c:1441)
-    ==20626==    by 0x411760: pkcs15_create_object (framework-pkcs15.c:1490)
-    ==20626==    by 0x409A35: C_CreateObject (pkcs11-object.c:53)
-    ==20626==    by 0x40783A: main (pkcs11_1.c:65)
-    ==20626==
-    ==20626== LEAK SUMMARY:
-    ==20626==    definitely lost: 80 bytes in 1 blocks
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3799 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3a5db68158568cd8a832b60e04b17d8cba6ebe0b
-Author: s <s at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Nov 1 13:50:45 2009 +0000
-
-    fix memory leak
-    
-    Example code:
-    int main() {
-    	...
-    	C_Initialize(NULL);
-            C_Finalize(NULL);
-    	return 0;
-    }
-    
-    ==3312== 176 bytes in 1 blocks are definitely lost in loss record 109 of 146
-    ==3312==    at 0x4C24137: calloc (vg_replace_malloc.c:418)
-    ==3312==    by 0x4117B8: pkcs15_init_slot (framework-pkcs15.c:716)
-    ==3312==    by 0x41307F: pkcs15_create_slot (framework-pkcs15.c:761)
-    ==3312==    by 0x413263: pkcs15_create_tokens (framework-pkcs15.c:849)
-    ==3312==    by 0x40BB9B: card_detect (slot.c:149)
-    ==3312==    by 0x40BCF9: __card_detect_all (slot.c:167)
-    ==3312==    by 0x4083F7: C_Initialize (pkcs11-global.c:229)
-    ==3312==    by 0x4076BD: main (pkcs11_1.c:27)
-    ==3312==
-    ==3312== 528 bytes in 1 blocks are definitely lost in loss record 139 of 146
-    ==3312==    at 0x4C24137: calloc (vg_replace_malloc.c:418)
-    ==3312==    by 0x41365B: pkcs15_bind (framework-pkcs15.c:167)
-    ==3312==    by 0x40BB43: card_detect (slot.c:139)
-    ==3312==    by 0x40BCF9: __card_detect_all (slot.c:167)
-    ==3312==    by 0x4083F7: C_Initialize (pkcs11-global.c:229)
-    ==3312==    by 0x4076BD: main (pkcs11_1.c:27)
-    ==3312==
-    ==3312== LEAK SUMMARY:
-    ==3312==    definitely lost: 704 bytes in 2 blocks
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3798 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 83b7a9788d08c9cede780def45617ebcedf7359a
-Author: s <s at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Nov 1 13:45:56 2009 +0000
-
-    trunk is now post release
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3797 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 30ab50600b003461eff0c90dbb342bc86d82dcce
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Oct 25 20:22:11 2009 +0000
-
-    Merged [3783:3794/trunk]
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/branches/martin/0.12@3795 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a8d8262d6da9737daceee4c1687faa97d5e027b7
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Oct 24 06:38:06 2009 +0000
-
-    we created a -rc2 for openssl 1.0.0 support too.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3794 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1ecd64ed9305f91f54982abbf7f5eec989575f19
-Author: s <s at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Oct 23 18:16:59 2009 +0000
-
-    fix: compile with openssl-1.0 beta3
-    http://www.opensc-project.org/pipermail/opensc-devel/2009-October/012702.html
-    Thanks to Kalev Lember
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3791 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 425c0ccb69df112a7ca34da50401ff867c34367c
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Oct 23 13:09:48 2009 +0000
-
-    Prepare release candidate.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3789 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 12213dee5c6f3a63dd44300281e036d3886e685b
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Oct 23 13:08:32 2009 +0000
-
-    Improved myeid driver (by Aventra)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3788 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6cd345d3163c5f88b79ade51766666f6b5f5ff51
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Oct 23 12:12:40 2009 +0000
-
-    Default PCSC provider is libpcsclite.so.1 instead of libpcsclite.so
-    
-    See Debian bug #511344
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3787 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5926c08c9198c3282b7828af0f3c2ceb8a0be1dc
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Oct 22 18:28:25 2009 +0000
-
-    Cleanup westcos driver to remove warnings - by François Leblanc.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3786 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 56fb57603b58117e2acc94b51328941e1eb635e5
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Oct 22 09:18:16 2009 +0000
-
-    Merge [3758:3783/trunk]
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/branches/martin/0.12@3785 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 95a5ab065401968c7f300ee4bd8d391d96279013
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Oct 22 08:59:59 2009 +0000
-
-    Re-implement PIN cache on PKCS#15 layer; remove it from PKCS#11. Re-name and log PKCS#15 options to better reflect the purpose.
-    
-    Data objects and PKCS#15 init are left broken currently.
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/branches/martin/0.12@3784 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 268755c4d6076a9c763b931ba01beb9dc7608dfb
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Oct 21 09:23:26 2009 +0000
-
-    latest changes.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3783 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8746d0232909a75dea438d3d11c0c1090b59c898
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Oct 21 09:08:22 2009 +0000
-
-    rewrite code to support openssl 0.9.7 so rsa variable is properly set.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3782 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e2848c7094eb1355995f205436cb348d858b3d59
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Oct 21 07:27:19 2009 +0000
-
-    Make opensc / westcos driver compile with openssl 0.9.7:
-    It tests the version of openssl and uses the old RSA_gererate_key
-    if older the 0.9.8. By Douglas E. Engert.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3781 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 59c9a8eae0a35813846d563565d6f00dcb5bd2ab
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Oct 21 07:24:58 2009 +0000
-
-    remove the variable not initialized error for "tag",
-    and to fix another error when loading a 3des key when
-    the string passed to sc_hex_to_bin is not terminated.
-    By Douglas E. Engert
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3780 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b2df781e8db0329d6472c32a537a0f5e3b1dbc88
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Oct 21 07:22:56 2009 +0000
-
-    Fix warnings in muscle code - by  João Poupino.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3779 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2446c4645988b5a0e79d73c3b7aab45952a592ab
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Oct 20 12:27:26 2009 +0000
-
-    next release could be 0.11.11, trunk is "-svn" preview.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3778 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 03bc2565944972ee23376cd5884eabe57a9b24a1
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Oct 20 12:25:16 2009 +0000
-
-    Create new release 0.11.10
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3776 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7fa19788e227e71f7888b401beaba620bf7aaaab
-Author: s <s at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Oct 13 14:20:03 2009 +0000
-
-    fix misprint
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3775 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4196e9f15633ecc6ca3a5b4979b222c5d8b06d2a
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Oct 13 08:29:29 2009 +0000
-
-    PC/SC: Log enabled options.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/branches/martin/0.12@3774 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 615b1814713d9de8f1f92bb88f63cee422c30584
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Oct 12 09:26:05 2009 +0000
-
-    Revert [3752]
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/branches/martin/0.12@3773 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 02ea9d738893f2722f6dd13a148eb1a26130faa3
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Oct 9 13:03:23 2009 +0000
-
-    Fix windows/nmake build
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3772 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 82ab3bfc22c64a860ce96cf4eb6159b5f47ccf10
-Author: s <s at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Oct 9 05:46:20 2009 +0000
-
-    rollback: "fix pkcs11 access with multiple PINs"
-    http://www.opensc-project.org/pipermail/opensc-devel/2009-October/012607.html
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3771 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b7845debb0a2f697da14ff4d538cb0636d2b0123
-Author: s <s at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Oct 6 13:46:41 2009 +0000
-
-    framework-pkcs15.c:683: warning: comparison of distinct pointer types lacks a cast
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3770 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d9c52b85a4abca07b1ae8b95c74862697f6d03f9
-Author: s <s at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Oct 6 13:32:27 2009 +0000
-
-    fix OpenSC PKCS#11 object grouping
-    
-    Thanks to Pierre Ossman
-    
-    http://www.opensc-project.org/pipermail/opensc-devel/2009-October/012553.html
-    http://www.opensc-project.org/pipermail/opensc-devel/2009-October/012580.html
-    http://www.opensc-project.org/pipermail/opensc-devel/2009-October/012582.html
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3769 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c36bd197e3cbe48d6df1f0f9b0babc538fc4f114
-Author: s <s at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Oct 6 11:17:41 2009 +0000
-
-    fix: key id for automatic selection of the predefined directory (for rutoken-tool)
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3768 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit dd045ff6384b08e0fa99988569559dbc42584c3c
-Author: s <s at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Oct 6 10:59:00 2009 +0000
-
-    remove dead code
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3767 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 616c7fea7597e9d1c193414c41916e68fd52a966
-Author: s <s at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Oct 6 08:22:47 2009 +0000
-
-    correct options "small" and "default" in rutoken.profile
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3766 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ff9951d94d29bc644a6abf9cc79b4b5879ecc1bb
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Oct 6 07:36:51 2009 +0000
-
-    kill lots of warnings (unused variables, unsigned/signed comparison etc.)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3765 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 80f16d4f4e2b4fb05a542e9f8755e09514a24aab
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Oct 6 07:25:35 2009 +0000
-
-    remove gemsafeV2 code - not working properly, not maintained.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3764 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 17195678405082762be23d3963378bbd16b59838
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Oct 6 06:40:18 2009 +0000
-
-    Add more NEWS entries.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3763 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b7de6380e8bf1ad66066da30d37d3eda9f6429cc
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Oct 6 06:36:21 2009 +0000
-
-    westcos: use generic select_file function (Aleksey Samsonov).
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3762 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 46b55bb870ebc84783f5e9c61cc6dbc6bbf1e8d6
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Oct 6 06:34:05 2009 +0000
-
-    Allow building westcos without openssl. (François Leblanc)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3761 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8402c6248ab7775ca2278d4e9dc017c14fd292d7
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Oct 6 06:32:26 2009 +0000
-
-    New GemsafeV2 Emulation code by Georges Bart
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3760 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ea370692724dabe3c2b13b35e3623376c12e668c
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Oct 5 20:10:07 2009 +0000
-
-    Merged r3749:3758 from trunk
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/branches/martin/0.12@3759 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 91815f380a2620203122bacda1f0662a19220f3f
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Oct 5 19:59:05 2009 +0000
-
-    PC/SC: better separation between OpenSC and PC/SC types.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/branches/martin/0.12@3758 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 97a8f73b9ce2d0d9c7b23dcc42534e54aeaa14c8
-Author: s <s at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Oct 5 18:40:51 2009 +0000
-
-    add GOST R 34.10-2001 algorithm (only PKCS#11) by Aktiv Co.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3757 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 64916e01b5b6878a397190a231c2b3c06fb05047
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Oct 3 17:04:32 2009 +0000
-
-    Accidental sc_error removed.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/branches/martin/0.12@3756 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9c7eb8122afb1653d4b1bfe27a5c5b1bf9ced211
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Oct 3 14:41:14 2009 +0000
-
-    Add support for Portugese eID on IAS and Gemsafe cards, by João Poupino.
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/branches/martin/0.12@3755 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a8dc97e0dc19ff538edfda89d2184c393bdc0318
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Oct 3 10:13:45 2009 +0000
-
-    Cardos security env patch for Italian CNI card.
-    By Emanuele Pucciarelli, http://itacns.corp.it/hg/itacns/file/adc0b2ceec86/patches/115-cardos-secenv.patch
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/branches/martin/0.12@3754 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 99e84ae82a4f32518cf5f91d81f8a512654c9a35
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Oct 3 10:07:55 2009 +0000
-
-    Fix spelling
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/branches/martin/0.12@3753 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ab2ed07b78f09af05b06ab566355e4482a5bace3
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Oct 3 10:06:53 2009 +0000
-
-    Fix APDU sanity check.
-    By Emanuele Pucciarelli,  http://itacns.corp.it/hg/itacns/file/adc0b2ceec86/patches/010-apdu.patch
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/branches/martin/0.12@3752 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 64f95782020f6305810a4550fc33762377dfab16
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Oct 3 09:31:07 2009 +0000
-
-    apdu.sensitive is not in use since [2868]
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/branches/martin/0.12@3751 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9da39d84629fe22492989b640fc9f7fcc30bb4fc
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Oct 3 07:48:28 2009 +0000
-
-    Merged r3719:3749 from trunk
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/branches/martin/0.12@3750 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 45e12e6ff52ba2275c5421416debf8b8bdbff9c9
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Oct 2 10:56:58 2009 +0000
-
-    Move the declaration of sbuff[] to avoid a compiler warning
-    
-    card-entersafe.c: In function ‘entersafe_write_rsa_key_factor’:
-    card-entersafe.c:1131: warning: declaration of ‘sbuff’ shadows a previous local
-    card-entersafe.c:1126: warning: shadowed declaration is here
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3749 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit bceeb38977ccd12988874f22a9d26dea2cbca363
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Oct 2 10:54:38 2009 +0000
-
-    comment out 2 unused static functions
-    
-    card-entersafe.c:1591: warning: ‘entersafe_card_ctl_1024’ defined but not used
-    card-entersafe.c:1378: warning: ‘entersafe_preinstall_rsa_1024’ defined but not used
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3748 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2e1b4dbadee99ab784962b1895d89856817c720c
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Oct 2 10:52:32 2009 +0000
-
-    remove unused variables
-    
-    card-entersafe.c: In function ‘entersafe_cipher_apdu’:
-    card-entersafe.c:172: warning: unused variable ‘r’
-    card-entersafe.c:172: warning: unused variable ‘i’
-    
-    card-entersafe.c: In function ‘entersafe_process_fci’:
-    card-entersafe.c:434: warning: unused variable ‘len’
-    card-entersafe.c:434: warning: unused variable ‘taglen’
-    card-entersafe.c:433: warning: unused variable ‘p’
-    card-entersafe.c:433: warning: unused variable ‘tag’
-    
-    card-entersafe.c: In function ‘entersafe_create_file’:
-    card-entersafe.c:775: warning: unused variable ‘r’
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3747 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d2d59cf3eb880534198f010143dcc4498499c938
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Oct 2 10:49:28 2009 +0000
-
-    card-entersafe.c:226: warning: ‘tmp_rounded’ may be used uninitialized in this function
-    card-entersafe.c:226: note: ‘tmp_rounded’ was declared here
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3746 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 10547c9c8d18dc5874c7db5147063b4096def027
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Oct 2 10:48:20 2009 +0000
-
-    card-entersafe.c:496: warning: ‘r’ may be used uninitialized in this function
-    card-entersafe.c:496: note: ‘r’ was declared here
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3745 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9a95a40e813b4e7fcff970762d1d2485766c0c63
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Sep 25 19:29:38 2009 +0000
-
-    Implement pinpad support as used by Portugal eID, by João Poupino
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/branches/martin/0.12@3744 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8874c50e86c64a15dba129fde5a893fbad6797bd
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Sep 21 11:59:17 2009 +0000
-
-    remove spaces at end of line
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3743 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6fd22203113a3d82728588e9ebc4b9e67cc25a20
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Sep 20 10:57:11 2009 +0000
-
-    Bump the version number
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/branches/martin/0.12@3742 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4439f4d3a2f00e95f7e3dd6f5ce0fae722ff7031
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Sep 18 11:54:52 2009 +0000
-
-    fix pkcs11 access with multiple PINs
-    
-    Thanks to Roman Himmes for the patch
-    http://www.opensc-project.org/pipermail/opensc-devel/2009-September/012426.html
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3741 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2763c08d09b785aa636ea7bd3663c2520343e17a
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Sep 17 07:50:28 2009 +0000
-
-    Add myeid driver by Aventra.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3740 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2a6c41be277e2fb7dcb1e6723720918a96c95b00
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Sep 16 11:29:54 2009 +0000
-
-    Fix "serial->len is used uninitialized", By Aleksey Samsonov
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3739 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 75cee4ff8e481072753327e1f2a2fcbfa06e4e58
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Sep 15 12:33:35 2009 +0000
-
-    PC/SC: Fix display detection and clean up
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/branches/martin/0.12@3738 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e350239b37ee4cb355d838c873309b96fac46d3c
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Sep 15 12:29:17 2009 +0000
-
-    Fix debug file closing.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/branches/martin/0.12@3737 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 46a4b5b70ec560817d93f8afb202e67010556915
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Sep 15 07:59:20 2009 +0000
-
-    EstEID: Fix compiler warnings, add support for PIN retries related PKCS#11 token flags, add a version number for debugging.
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/branches/martin/0.12@3736 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b6f9345ea1f443a5571ede4a781c713218deecde
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Sep 15 07:51:50 2009 +0000
-
-    Improve EMV and default driver
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/branches/martin/0.12@3735 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0f4092f12d5c335a44cec30ffde78c83bd558c76
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Sep 15 07:50:46 2009 +0000
-
-    Fix "log.h:64:4: warning: backslash and newline separated by space"
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/branches/martin/0.12@3734 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6155ae366ace67f4f98cad8aea3add7be72b7491
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Sep 14 12:04:24 2009 +0000
-
-    Add back needed debug level check. Thanks to Aleksey Samsonov
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/branches/martin/0.12@3733 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 831d1a539e288472eafea3318f9390312f557245
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Sep 14 10:12:24 2009 +0000
-
-    PKCS#11: Fix a crash in C_GetMechanismList if pulCount is NULL
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/branches/martin/0.12@3732 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a614dff522e24196b72ac2c8839450bc21ab7148
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Sep 14 10:05:40 2009 +0000
-
-    PKCS#11: Implement more token flags that describe available PIN retries.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/branches/martin/0.12@3731 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f6d4da7919cc5a5e16b536238d13fbe14c44f171
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Sep 14 09:48:56 2009 +0000
-
-    PC/SC: Improve core and pinpad code
-     * Make opensc-tool -l display pinpad capabilities, if available
-     * Detect reader capabilities when a reader is found, not when a connection to a card is opened
-     * Fix unpadded PIN block parameters to not be rejected by the latest free CCID driver
-     * When locking the card and it has been reset by some other application (or re-attached), clear cache and lock again
-     * Enable pinpad detection by default
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/branches/martin/0.12@3730 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a64cdc1d8e8bfbda24c600fb0c31bc67d4513db3
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Sep 14 09:35:15 2009 +0000
-
-    sc_error removal missing bits
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/branches/martin/0.12@3729 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7df1c600f19400cc8e080feb1fa9ac020c7e4179
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Sep 14 09:15:58 2009 +0000
-
-    Remove empty files: emv.c, emv.h
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/branches/martin/0.12@3728 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1aed8cdec41ab1e242c345946b03a29480d860fe
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Sep 14 09:08:16 2009 +0000
-
-    PKCS#15-emu: remove dead code
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/branches/martin/0.12@3727 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit cd5aff8ea01fc37819c10a6bc543348d47a48c95
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Sep 14 09:03:33 2009 +0000
-
-    PC/SC: More return codes are handled.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/branches/martin/0.12@3726 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 446fe0f18d2178f1908e6d48a86b837319cc25e1
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Sep 14 08:59:58 2009 +0000
-
-    PKCS#11: Spec does not allow CKR_DEVICE_ERROR from C_Initialize
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/branches/martin/0.12@3725 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 847e0ade96daf32e1fc118f8490e28b9eec5c6d8
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Sep 14 08:56:39 2009 +0000
-
-    PKCS#11: translate SC_ERROR_CARD_UNRESPONSIVE
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/branches/martin/0.12@3724 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 17593afa600a48aa9605f249c22540c8534a436c
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Sep 14 08:53:38 2009 +0000
-
-    Fix iconv handle leak
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/branches/martin/0.12@3723 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6a48771ce1c64859394cf74752e51a9e3b777627
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Sep 14 08:51:53 2009 +0000
-
-    Implement CKA_ALWAYS_AUTHENTICATE
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/branches/martin/0.12@3722 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d672fde4499fef4380cc3d8b88e496986687ec03
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Sep 14 08:46:59 2009 +0000
-
-    Remove sc_error and sc_ctx_suppress_errors_* in favor of sc_debug/fprintf
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/branches/martin/0.12@3721 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d3201511c7efc5d30c9105a1c92dac63f4af4808
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Sep 12 11:46:00 2009 +0000
-
-    r3717:3719 from trunk
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/branches/martin/0.12@3720 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3dbc0a714308980a8f35c82160a94609e888f6b2
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Sep 12 07:04:48 2009 +0000
-
-    More Westcos cleanups by Aleksey Samsonov
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3719 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e31d2ff966445f5c0fd8956b48fe16528f22eda6
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Sep 11 09:48:51 2009 +0000
-
-    New westcos driver by François Leblanc.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3718 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 89e18e51dd45f7a46e386e535e58e0e4961f2722
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Sep 6 15:56:08 2009 +0000
-
-    Branch for next major release changes.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/branches/martin/0.12@3717 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 886fa8931f8ea0d182dc7f0b7ce8a525e09c2cf1
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jul 29 07:03:59 2009 +0000
-
-    trunk is now post release.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3716 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a4951622598919c33c6db5223eb45d6e179e95e1
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jul 29 07:02:37 2009 +0000
-
-    Prepare for new release
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3714 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5f185e30799ea0efbaff71364fe4484d1310b609
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jul 23 08:56:41 2009 +0000
-
-    Weitao Sun: no one can create more than 15 files
-    under 5015 df. I increase it from 15 to 48, and all are OK.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3713 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 61b8f0a35d3f1ed2c821a6bed240f0c833b3dc7f
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jul 23 08:30:43 2009 +0000
-
-    Latest version from scute svn with this change:
-    Stef Walter: Make all constants UL that should be.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3712 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0c2fe83c3bf0ad9f759be51f14b85367a1dbb00d
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jul 22 12:24:33 2009 +0000
-
-    Aktiv Co./Aleksey Samsonov:
-    fix a bug in rutoken driver.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3711 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 16f045bf0c86114abad712e5c7226da7f8612cef
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jul 22 10:09:21 2009 +0000
-
-    Douglas E. Engert: major update for the PIV smartcard.
-    
-    The major issue is with getting the length of an object or the cert
-    contained in an object. The PIV card does not have a directory on the card,
-    So the previous version tried to put off as long as possible the reading
-    of objects for performance so as to avoid having to read objects that would
-    not be used. The first standard, NIST 800-73, set maximum sizes for objects.
-    800-73-2 removed this for certificates.
-    
-    A certificate object can contain a certificate which might be compressed.
-    The only way to get the length of the compressed certificate is to decompress
-    it. Thus the decompressed certificate could be larger then the container object,
-    so even if the PIV card had a directory, one would still need to decompress
-    the certificate to find its length.
-    
-    OpenSC sc_read_binary will use the length obtained by using
-    sc_select_file(...,&file_out), and thus the lengths must be determined
-    in sc_select_file.
-    
-    Change are to card-piv.c and pkcs15-piv.c and include:
-      * The old cache code which was not working was removed.
-      * New cache code was added which caches all object read from the card
-      * If an object has a cert, the cert is decompressed and also cached.
-      * As part of reading an object the first 8 bytes are read
-        and this is then used to allocate a large buffer to read in the
-        object.
-      * If pkcs15 or pkcs11 asks about a certificate, the cert object
-        will be read, and the cert decompressed, to get the actual length.
-      * If piv_select_file is called with the file_out != NULL the object
-        will be read to get the length If called with NULL it will not be read.
-      * The enumeration of the objects now starts with 0.
-      * sc_ctx_suppress_errors_on and off are used to avoid file not found
-        messages which are are a by product of not having a directory.
-      * "Unsigned Card Holder Unique Identifier" object in card-piv and pkcs15-piv.c
-         had conflicting paths, as NIST 800-72-1 had two tables with different
-         paths. The enumtag for it in card-piv.c was also wrong.
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3710 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d9cd831b4f7c416da0b4f590ecb58f6805cd2817
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jul 22 10:06:32 2009 +0000
-
-    Douglas E. Engert: The pkcs15-gemsafeV1.c does not detect of the
-    card present is in fact a gemsafeV1 card, and thus it can end up
-    issuing commands to the wrong cards.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3709 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8529b7ba3e07ec848a04d51d9783e48d8411c0c9
-Author: jps <jps at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jul 2 13:59:38 2009 +0000
-
-    Add support for JCOP31 v2.4.1 with the modified muscle applet[1].
-    This add support for 2048bit key and extended APDU.
-    
-    [1] http://www.opensc-project.org/pipermail/opensc-user/2009-June/003147.html
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3708 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e8b1f540bd9e25fe812e62049b11666a40f24835
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jun 28 10:08:17 2009 +0000
-
-    Kalev Lember: fix onepin-opensc-pkcs11.dll manifest embedding
-    with Microsoft compilers.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3707 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a3b0d6ae84e12cc7b56b0838443154e1a432abd6
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jun 28 07:26:55 2009 +0000
-
-    Aktiv Co. / Aleksey Samsonov:
-    use generic code instead of identical funciton
-    (now that the generic code was fixed).
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3706 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a2032f5e83837488c374a5e0c207420fc263ac87
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jun 28 07:25:47 2009 +0000
-
-    Aktiv Co. / Aleksey Samsonov:
-    use generic set_security_env code, remove duplicate code.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3705 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3cf4707b1a81432bf9eb38c913458c2bdac21a8c
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jun 28 07:23:16 2009 +0000
-
-    Aktiv Co. / Aleksey Samsonov:
-    Remove dead code.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3704 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2a0b63e0ad9d571680ee735d8434ffa3a4edfcd7
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jun 28 07:22:24 2009 +0000
-
-    Aktiv Co. / Aleksey Samsonov:
-    Add assert() calls to check constant buffer size.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3703 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 25ab286fed958dd478832fec4e541ff82693e559
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jun 28 07:20:37 2009 +0000
-
-    Aktiv Co. / Aleksey Samsonov:
-    Check buffer length (*outlen)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3702 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7d282a9e0eeed19f0da4890904fe8556fc8fd3a4
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jun 28 07:19:38 2009 +0000
-
-    Aktiv Co. / Aleksey Samsonov:
-    Fix for the case when "apdu.resplen < 2" and checked buffer length.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3701 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 265eb5923bcce500b45029ae04f84cf69d47f0e4
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jun 28 07:17:19 2009 +0000
-
-    Aktiv Co. / Aleksey Samsonov: fix case depending on length.
-    also no need to null resplen or le (done by sc_format_apdu).
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3700 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit be526c840feb9626b3dcc42481118221986cfa3d
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jun 28 07:11:16 2009 +0000
-
-    Move emv driver to the end.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3699 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c44b7cbbeb65b387bf9d73184485d818b9b29066
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jun 25 08:45:05 2009 +0000
-
-    iso7816_set_security_env(): correctly set P1 parameter in case of
-    SC_SEC_OPERATION_DECIPHER
-    
-    Thanks to Aleksey Samsonov for the patch
-    http://www.opensc-project.org/pipermail/opensc-devel/2009-June/012263.html
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3698 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b3e9ce36a4b817a0a53ec0a11b9f440182a04d27
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jun 24 15:29:59 2009 +0000
-
-    add a NEWS entry too.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3697 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7931ded481170704ca047ae5442e5a6b2a299926
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jun 24 15:26:37 2009 +0000
-
-    Add new rutoken_ecp driver by Aktiv Co. / Aleksey Samsonov
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3696 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 490d1b84aa30b75a574bc738ae5c68aff6674d5d
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jun 16 09:17:53 2009 +0000
-
-    print_file(): inverse "write" and "erase"
-    
-    Thanks to Aleksey Samsonov for the patch
-    http://www.opensc-project.org/pipermail/opensc-devel/2009-June/012212.html
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3695 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8b4a1f673bfc81290e93233c971ed453ca2173f6
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue May 12 14:35:49 2009 +0000
-
-    cardos_sm4h(): fix memory leaks. Thanks to cppckeck(1)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3694 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit dab3723c95fef974d69d471edce150a0c390eaf4
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue May 12 14:29:30 2009 +0000
-
-    sc_pkcs15emu_add_object(): fix a memory leak. thanks to cppcheck(1)
-    
-    [pkcs15-gemsafeV1.c:419]: (error) Memory leak: obj
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3693 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit bb900ff9b851c7c1f5b628072b67ebcfa78fcb6b
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue May 12 14:27:39 2009 +0000
-
-    do not cast calloc() return value
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3692 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0db85da76a1305c711e5b783e3bae481d8b78df8
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu May 7 13:09:03 2009 +0000
-
-    prep next release.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3689 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3fa5747e33690bc3f488b14f26ed6ce8fd23e105
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu May 7 10:57:07 2009 +0000
-
-    Fix security issue.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3688 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit dd9a40ad0ef23e50c37e713c36ad77d78e81f1a0
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed May 6 16:25:50 2009 +0000
-
-    avoid a compilation failure with --disable-openssl
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3687 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f0e03ec4f6f97a3408980b55dcf7bffd49b30496
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Apr 23 18:02:38 2009 +0000
-
-    Fix --disable-man install from svn checkout, by Ludovic Rousseau
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3686 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 33a13139c5d7a54b05cdec4f50390c76da46fb9a
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Apr 23 18:00:42 2009 +0000
-
-    Fix --disable-man install from svn checkout, by Ludovic Rousseau
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3685 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 23e247cafe56e695a12670ba5a87a193447afb4b
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 21 16:43:00 2009 +0000
-
-    Fix GNU libiconv detection
-    
-    By Kalev Lember
-    
-    The attached patch fixes GNU libiconv detection by adding an additional
-    libiconv symbol check to autoconf -liconv link test. Right now some
-    iconv implementations have only iconv* symbols (GNU libc), some have
-    only libiconv* (GNU libiconv), and some have both defined (Mac OS X's
-    iconv), so it's necessary to check for both variants.
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3684 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 09a442adb434de0a122fd1e89e43a1786fc85437
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 17 07:19:03 2009 +0000
-
-    Fix SCardDisconnect reset parameter.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3683 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 07fce14a6b756142392b5b1ab730cf5f473c1548
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 15 07:52:04 2009 +0000
-
-    Move sc_check_sw to opensc.h
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3682 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 86b4d65c4c52894e45eb03e6f33958cc8e611167
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 15 06:18:49 2009 +0000
-
-    Export sc_check_sw, required by external drivers and utilities.
-    Thanks to Marc Rios Vallès.
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3681 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b2f8effbf5f4ec422aeed1f64bb395cb3e52a43f
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 14 15:21:53 2009 +0000
-
-    Update news file too.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3680 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 60415958954bedd81cd29090f3c401eafd77a1db
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 8 10:31:18 2009 +0000
-
-     * Correctly set offsets for PINs for PIN modification operations with pinpads. Thanks to Robert Konklewski.
-     * Only set messages if the reader has display capabilities.
-     * Detect rejected pinpad commands
-     * Whitespace fixes
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3679 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 16baddcc740892f6ddd56974d5c0ccef74a686b8
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 8 09:40:21 2009 +0000
-
-    Engine API is not used.
-    
-    Thanks to Robert Konklewski for noticing this.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3678 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit bfc69348f700e8467ceec0a5030bbae2a8666d37
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 3 19:54:42 2009 +0000
-
-    Actually print SCardControl result, thanks to martin
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3677 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ef4b1e1410837726452ded9590c6c5fce234a9fe
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 3 19:17:15 2009 +0000
-
-    reader-pcsc - minor cleanups in reader features
-    
-    1. Indent fix.
-    2. Reorder conditions.
-    3. Do not print error if SCardControl fails.
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3676 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0f050d9cec8cdf48f2320cc2651bf7ef3b62aec1
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Apr 2 10:33:16 2009 +0000
-
-    Document latest change.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3675 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 46702385562bb0a8f710c4f80b17f40b39ce5ade
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Apr 2 10:32:02 2009 +0000
-
-    Entersafe changes by Weitao Sun:
-    1.Card type FTCOS/PK-01C added. (new)
-    2.Limit pin length in range [4,16). (bug fix)
-    3.Can not unblock PIN. (bug fix)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3674 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 117d790aeaec42d07746b20735fa5b6c88459b47
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 25 14:31:21 2009 +0000
-
-    Do not use msc_crypt_process (OP_PROCESS). This operation is used to do
-    multipart encryption when, for example, the data is too big to fit in
-    one APDU. It basically calls the Cipher.update() method until all data
-    has been processed. However, the Java Card API documentation advises
-    against using update():
-    
-    "This method requires temporary storage of intermediate results. In
-    addition, if the input data length is not block aligned (multiple of
-    block size) then additional internal storage may be allocated at this
-    time to store a partial input data block. This may result in additional
-    resource consumption and/or slow performance.  This method should only
-    be used if all the input data required for the cipher is not available
-    in one byte array. If all the input data required for the cipher is
-    located in a single byte array, use of the doFinal() method to process
-    all of the input data is recommended."
-    
-    As the card's JVM was returning an internal exception when using
-    OP_PROCESS, it was decided to implement an msc_crypt_final_object()
-    function in OpenSC that uses the msc_object_*() functions to read/write
-    all the data from the card. This way, it is possible to transmit/receive
-    "arbitrarily" large data chunks to/from the card and use doFinal(). This
-    is the fallback method when, for example, using 2048 bit keys and the
-    card doesn't support extended APDUs.
-    
-    Thanks to Joao Poupino for the patch
-    http://www.opensc-project.org/pipermail/opensc-devel/2009-March/011978.html
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3673 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7f0476ab2aef23f61b84f5d7e8e59add643801ec
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 25 14:22:34 2009 +0000
-
-    pcsc_internal_transmit(): do not limit the size of the reception buffer
-    to 258. This check is no more needed now that pcsc-lite can handle
-    extended APDU.
-    
-    Thanks to Joao Poupino for the patch
-    http://www.opensc-project.org/pipermail/opensc-devel/2009-March/011978.html
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3672 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 04a5c99f77a1ac17396e592e85f740c05b434142
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 25 13:55:25 2009 +0000
-
-    Detect the eToken 72K and activate RSA 2048 and extended APDU for it.
-    
-    Thanks to Joao Poupino for the patch
-    http://www.opensc-project.org/pipermail/opensc-devel/2009-March/011978.html
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3671 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e0f35451575ad57c1cde1a180c6f6c2bc15a560a
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 25 13:50:41 2009 +0000
-
-    Change MSC_MAX_APDU to make some buffers larger to support extended
-    APDUs. The change was only from 256 to 512 bytes since it is more than
-    enough for 2048 bit keys;
-    
-    Thanks to Joao Poupino for the patch
-    http://www.opensc-project.org/pipermail/opensc-devel/2009-March/011978.html
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3670 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7b07db6b59ab5c5ec208da8f29a38fe430a06547
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 25 13:47:46 2009 +0000
-
-    msc_get_challenge(): return SC_SUCCESS instead of dataLength in case of
-    success
-    
-    Thanks to Joao Poupino for the patch
-    http://www.opensc-project.org/pipermail/opensc-devel/2009-March/011978.html
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3669 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 89b2ac778fc95022bf70b52ca0e5c83f4d7fbfcb
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 25 13:42:13 2009 +0000
-
-    msc_get_challenge(): use 0x62 instead of 0x72 for GET CHALLENGE as it is
-    the value used by the Muscle applet (INS_GET_CHALLENGE)
-    
-    Thanks to João Poupino for the patch
-    http://www.opensc-project.org/pipermail/opensc-devel/2009-March/011978.html
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3668 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9862d431e8fafd96392d5fe9fce6908286e3121b
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Mar 21 11:17:14 2009 +0000
-
-    Fix typo
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3667 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9668f0aa33143306c3b57c482e030c660a18f2d6
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Mar 21 11:09:12 2009 +0000
-
-    Add support for LCD detection on pinpad devices.
-     * Update IOCTL definitions to PC/SC part 10 v2.02.05
-     * Return SC_SUCCESS instead of 0 if returning SC_ codes.
-     * Detect the presence of a display with FEATURE_IFD_PIN_PROPERTIES
-    
-    Tested with patched CCID driver on OS X, with SPR532 (no display) and OK3821 (with display)
-    
-    Known CCID reader with a display:
-    
-    ATMEL_AT91SO.txt:  wLcdLayout: 0x0210
-    CardMan3821.txt:  wLcdLayout: 0x0210
-    Kobil_EMV_CAP.txt:  wLcdLayout: 0x0210
-    Xiring_XI-SIGN.txt:  wLcdLayout: 0x020C
-    Xiring_XI-SIGN_6000.txt:  wLcdLayout: 0x020C
-    
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3666 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3b0faecbb1e1e70ad6b18b01ce4f6b0911a76c63
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Mar 19 17:54:45 2009 +0000
-
-     * Display the default CCID message for PIN verification if the reader has a display
-     * Part 10 -> PC/SC v2
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3665 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 464a4f6d7411bc8c9ae3553b32ac04007e24e5f6
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 18 10:18:18 2009 +0000
-
-    Fix Global Platform PINs with CCID pinpads.
-    
-    Thanks to François Leblanc for the report:
-    http://www.opensc-project.org/pipermail/opensc-devel/2009-March/011947.html
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3664 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9ef196c2cdc1083667fef95f21983ed63e50ebd1
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Mar 12 08:33:37 2009 +0000
-
-    store the generated public key on the token.
-    
-    Thanks to Rickard Bondesson for the patch
-    http://www.opensc-project.org/pipermail/opensc-devel/2009-February/011884.html
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3663 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit cd6adb4e269db0549b0f442660c27693918758d8
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Mar 7 21:55:40 2009 +0000
-
-    Fix Windows PINPAD mingw issue
-    
-    Thanks to François Leblanc
-    
-    http://www.opensc-project.org/pipermail/opensc-devel/2009-March/011932.html
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3662 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 50f9ef865bffdf83c7f81eed0d1fe807af9fae6c
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Mar 6 09:30:54 2009 +0000
-
-    check if len or p is 0/NULL and return.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3661 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 54a35a2f4fec5ce16cfab5717e071c2d340b8da4
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Mar 6 09:26:41 2009 +0000
-
-    fix typo.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3660 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3347ededf614e39ae63713eb5da180af8d62d9ba
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Mar 5 18:37:55 2009 +0000
-
-    Improve this function even more.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3659 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit aadf09d1de53d785bfbf3ad936893d54f5f1bb6a
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Mar 5 15:28:17 2009 +0000
-
-    resolve an "undefined code" situation.
-    the old code was undefined, but ok (variables where never used
-    again in the "goto error" case). but the new code should
-    be clearer on this.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3658 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9dd1407703d51ca3fa65fb6ab91d58a22003ef3f
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Mar 5 15:15:24 2009 +0000
-
-    change base id so it does not overlap with the next one.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3657 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 33d5e392eeed3530e667ac7fb995fe97f0c2bcb3
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Feb 26 08:58:06 2009 +0000
-
-    created final release.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3656 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2752c331080a4a4b9bb456fba2b1f5bde6b3420d
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Feb 25 09:13:35 2009 +0000
-
-    removed unused variable
-    
-    misc.c:317: warning: unused variable 'i'
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3654 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 042d47aaebd31319ada4be142688c3951b0169fc
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Feb 25 09:10:38 2009 +0000
-
-    iattr_extract(): use sizeof(CK_CERTIFICATE_TYPE) for a
-    CKA_CERTIFICATE_TYPE
-    
-    thanks to Wan-Teh Chang for the better patch
-    http://www.opensc-project.org/pipermail/opensc-devel/2009-February/011892.html
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3653 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4987d22c9aff09dc372aa7dbd0572adcae6ab3a7
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Feb 24 17:15:57 2009 +0000
-
-    attr_extract(): use sizeof(CK_ULONG) instead of sizeof(CKA_CERTIFICATE_TYPE)
-    
-    Thanks to Marc Rios Valles for the patch
-    http://www.opensc-project.org/pipermail/opensc-devel/2009-February/011890.html
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3652 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit dc3f8f65098bdeadc20c62f1fa32b8a3cd8e8f13
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Feb 3 20:11:30 2009 +0000
-
-    Default PCSC CFLAGS from pkg-config
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3650 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit abe9112f2b103c92897c79ca973eae15a09b5759
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Feb 1 08:26:30 2009 +0000
-
-    update NEWS file from 0.11.7 branch.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3649 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit fe195e9b33b09867e28933d542c480208fc1da7b
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Feb 1 08:19:49 2009 +0000
-
-    trunk code is now working towards 0.11.8
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3647 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1bf7e9c41874b892e9dcb2450d4a0fe30a719721
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jan 30 11:59:12 2009 +0000
-
-    typo fix
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3645 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 24d69c655d885b59cc5a5c74c22786d0d119f241
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jan 29 11:50:21 2009 +0000
-
-    hide_empty_tokens should not affect emulated cards (always on)
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3644 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 830ba34b67b8ff76d3f22a83c7edf8b03772b220
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jan 29 11:47:45 2009 +0000
-
-    Fix native windows build, add iconv support
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3643 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 93998e95612b7d99eee9eff27466029f82e2851b
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jan 28 12:43:30 2009 +0000
-
-    Optionally load SCardControl132 on apple
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3642 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit aadf4ad0377c28f75c10d757a26746f0082d13f5
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jan 28 12:28:41 2009 +0000
-
-    Fix pinpads on OS X
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3641 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 34a75de5d75f0f740f0dfb177e1434474e07894e
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jan 28 12:10:13 2009 +0000
-
-    Rutoken updates
-    
-    By Aktiv Co. Aleksey Samsonov
-    
-    - use PKCS#15 (not builtin PKCS#15 emulator)
-    - rutoken.profile (add privdata)
-    - correct using ACL
-    - correct erase procedure
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3640 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 09a849c906c27eb49afdd56da5c12c52c5f8a84e
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jan 23 09:30:42 2009 +0000
-
-    Set default of hide_empty_tokens to true
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3639 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e1d49190c1f6d63c71844e276f4d9cf5aa1de446
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jan 23 09:27:30 2009 +0000
-
-    Typo
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3638 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 17cf43eeb1a4cdd70509c98b546d499a4d46d26c
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jan 23 09:14:15 2009 +0000
-
-    Rename PKCS#11 v2_20_mode option to plug_and_play
-    
-    As it is the only feature it controls.
-    Also, change the default to true.
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3637 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 98841d1e6154a7171771ffa28513a041fe3450eb
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jan 23 09:00:11 2009 +0000
-
-    Finally remove eval stuff from autoconf
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3636 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ef38618c3431e3774073756758881c36cd876b8c
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jan 22 14:29:25 2009 +0000
-
-    Remove unused OPENSC_ETC_PATH
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3635 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a5f32a99dba81222156fc8c31ab12808d1a11c1e
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jan 21 13:19:18 2009 +0000
-
-    Move all private factories into private headers, the iso7816 factory is the only one which is actually exposed
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3634 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 74f6d41dc6928c898ae69b2940197608f4197043
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jan 21 13:01:37 2009 +0000
-
-    Add sc_get_iso7816_driver as it is required for external drivers
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3633 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 304f227d79b0641919501fd22af105fc6615decf
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jan 20 08:45:12 2009 +0000
-
-    Add SCARD_E_NO_SERVICE to internal-winscard.h
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3632 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit fbd51c705edce808036c9fa388fef60f88147e14
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jan 20 08:42:47 2009 +0000
-
-    Revert 3630
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3631 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ce5c5f3ae93de8ddadfba801cb54cb68e54b93bc
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jan 19 19:43:19 2009 +0000
-
-    Add SCARD_E_NO_SERVICE to internal-winscard.h
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3630 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 78ac13a96ac5eab333dcc1b0381975df5f3c3bde
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jan 19 13:39:52 2009 +0000
-
-    Add PACKAGE_SUFFIX
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3629 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 584e0a1b2fce0eecb6fb20302ba1903a787113e1
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jan 19 13:32:29 2009 +0000
-
-    Expose version components into config.h
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3628 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c58bcfab843858dbb347dd2ef9af96da6e64ebbe
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jan 19 12:06:38 2009 +0000
-
-    Configurable for PKCS#11 v2.20 related changes.
-     - Correctly report Cryptoki version if v2.20 is used.
-     - Consistently report no version for hardware/software we know no version information about.
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3627 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4d5c61d90c9444a516a07f34e251b18046b4b2ea
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jan 19 11:57:20 2009 +0000
-
-    Correct PC/SC -> OpenSC error code translation.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3626 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5a7515cd7ffa59f89d0d185238de029dc68706a5
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jan 18 23:16:53 2009 +0000
-
-    Recognize SCARD_E_NO_SERIVCE:
-    {{{
-    $ /Library/OpenSC/bin/opensc-tool -a
-    [opensc-tool] reader-pcsc.c:881:pcsc_detect_readers: SCardEstablishContext failed: 0x8010001d
-    [opensc-tool] reader-pcsc.c:990:pcsc_detect_readers: returning with: Unknown error
-    No smart card readers found.
-    }}}
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3625 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2b41afbb3f35dabdd516649b5debf9d92e9c747b
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jan 16 21:27:46 2009 +0000
-
-    Set hardcoded default for profile_dir
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3624 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit cdbd4c1193560cd4f4f0664f3382e9baa2ceebd6
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jan 16 20:52:36 2009 +0000
-
-    More iconv build fixes
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3623 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 96d387b5e9092f960c86c93f2f84e2551c0dc5be
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jan 16 20:21:27 2009 +0000
-
-    Fix external iconv override
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3622 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c9c6f9f2b2d50a6a392b486a8137036bb13dc8d3
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jan 16 17:48:26 2009 +0000
-
-    Correct iconv support
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3621 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 51824acab7175cbb91de03a566867bc604fc7f6c
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jan 16 17:13:32 2009 +0000
-
-    Revert r3612, the autoconf warning is correct and be the default in future
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3620 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0876222c5f9e9740a4f656a4044861494d80a194
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jan 16 16:44:35 2009 +0000
-
-    Make PKCS#11 module default slot configuration more sensible:
-     * Increase default slot count to 16, which equals 4 concurrent readers by default
-      * 2 OpenCT + 2 PC/SC on Linux for example
-     * Rename num_slots to slots_per_card
-     * Rename internal PKCS#11 variables, remove unneeded defines.
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3619 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c6f753dc00bbc89ce8fa31445aae4a7115b35cdf
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jan 16 16:12:50 2009 +0000
-
-    Limit virtual OpenCT readers to a sane default of 2 readers/tokens by default.
-    
-    Most users don't use more than one or two tokens concurrently. This way default configuration (or with no configuration file) works even after you insert a PC/SC reader as OpenCT does not "eat up" all PKCS#11 slots with 5 virtual readers.
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3618 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 300dfeb08874da78361a5ceded44d498d69fd942
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jan 15 23:55:00 2009 +0000
-
-    link with iconv on Mac OS X, to support [3616]
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3617 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6ffec4205590acf435d05bdc4477ae2e2f16f436
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jan 15 23:20:48 2009 +0000
-
-    Linux compatible PKCS#11-friendly changes to EstEID PKCS#15 emulation driver to display the name of the cardholder in token label field.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3616 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 315c0edc6e4d7bdcdf881d29c6ed9090dcfc0aa3
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jan 15 21:40:44 2009 +0000
-
-    PC/SC readers have always only one slot per reader.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3615 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2e2a998f10da567a20b194efde3165224de5d459
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jan 15 21:23:09 2009 +0000
-
-    Remove some unused/prehistoric defines.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3614 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7e7b94d879ade4545ae4ddbd586f362b0ea75f95
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jan 15 21:08:30 2009 +0000
-
-    Fix PKCS#15 emulation handling:
-     * Work as expected without a configuration file
-      * "Normalize" the configuration file: show the used default and give examples with opposite values.
-     * DWIM:
-      * If there is no config file: try all builtin drivers
-      * If there is a configuration file, allow to turn emulation off
-      * If there is a configuration file, allow to filter the list of internal drivers
-     * Introduce a PKCS#15 layer card flag for emulated cards
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3613 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6f72e22b31fecce574c5a67bb6c604d39a10c916
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jan 15 20:05:09 2009 +0000
-
-    Get rid of configure warnings:
-    {{{
-    configure: WARNING: winscard.h: accepted by the compiler, rejected by the preprocessor!
-    configure: WARNING: winscard.h: proceeding with the compiler's result
-    }}}
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3612 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 86fe58e3261bbefe72db64bf94fe890c2723ab8a
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jan 15 20:01:52 2009 +0000
-
-    Provide default system PCSC_CFLAGS on Mac OS X
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3611 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c64fd881e931898065fdcac4641b673e392bc233
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jan 15 20:01:09 2009 +0000
-
-    Mac OS X 10.5.6 fixes the ATR padding bug.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3610 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1809d50799fa88994d71ae0bc0d71ad7755567c9
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jan 1 20:55:50 2009 +0000
-
-    Fix doc build issues
-    1. VPATH issue.
-    2. Parallel build issue, suggested by Ludovic Rousseau.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3609 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8828faeccfb0e5bafcebf3b98a223bb2ef028308
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Dec 28 21:28:53 2008 +0000
-
-    Allow delete data objects by specifying application-name and label
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3608 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8456a321f8fb132f49fb1e01a500828df07e8237
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Dec 28 18:45:29 2008 +0000
-
-    Add PKCS#11 specification limitation note
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3607 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8c364fdd5411a984183fa75ef0e963556cdcde6c
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Dec 28 18:37:03 2008 +0000
-
-    Typeo
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3606 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8a6bc59e668924f871857d65ee20c85fa91c2252
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Dec 28 16:07:51 2008 +0000
-
-    Create new type "privdata" in all profiles with different
-    ACL settings, and check C_CreateObject parameter CKA_PRIVATE aka
-    pkcs15_create_data args.auth_id variable, aka sc_pkcs15init_new_object
-    object->flags & SC_PKCS15_CO_FLAG_PRIVATE to decide if "data" or "privdata"
-    profile needs to be used.
-    
-    Tested with cryptoflex 32k and opensc-explorer, now I no longer can
-    "get" the data object file stored with "--private".
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3605 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a89b14668f7a9b4884055c4b16aa90ec14a4a179
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Dec 28 16:01:04 2008 +0000
-
-    Enable lock_login by default for security.
-    Disable soft_keygen by default for security.
-    Make defaults code more readable.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3604 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6e56f8384adee3fcabb4c3b42a330d022e094844
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Dec 11 09:18:09 2008 +0000
-
-    #include <wintypes.h> on __APPLE__ to define DWORD, LONG, etc. Windows types
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3603 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5b5a7d3c58fc0ac85c3b33dcf4148eb57a6c0aff
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Dec 6 20:04:11 2008 +0000
-
-    Upgrade to safe and sane values of late 2008
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3602 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5617c9d5354e297344e7aee566fc06bbc3d910f6
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Dec 6 18:49:58 2008 +0000
-
-    Fix bug #86, thanks to ville.skytta
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3601 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit de89aa47e723e017f4385efe22b1875653a25226
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Dec 6 11:41:00 2008 +0000
-
-    Fixes #109
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3600 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f4c85e7502391a9eb6c062ea1c09b2abb12d8f08
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Dec 5 15:57:51 2008 +0000
-
-    Cosmetic fix for [3595]
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3599 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 94d0f8d835163a9e3973f81ace6de970d0b73129
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Dec 5 15:53:31 2008 +0000
-
-    Remove ancient unused code
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3598 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a7967258aad92e382baffa99667b31db709c598e
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Dec 5 15:48:49 2008 +0000
-
-    DWIM: If you don't specify a reader on the command line and you have more than one reader (for example, OpenCT virtual readers and one existing PC/SC reader) the tools will skip to the first reader that has a card in it.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3597 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6f3012d95905d248169c1ea23571a7f01b6fa6db
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Nov 27 10:44:57 2008 +0000
-
-    add CKM_SHA256* and CKM_SHA384* logs
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3596 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1e41d4d267df0613346bddca4e9fd945c873fecf
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Nov 24 22:06:27 2008 +0000
-
-     * Fix issues with pkcs11-tool testing of C_GenerateRandom/C_SeedRandom and OpenSC PKCS#11 implementation of those functions.
-    Thanks goes to Rickard Bondesson who noticed the issues.
-    
-    http://www.opensc-project.org/pipermail/opensc-devel/2008-November/011436.html
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3595 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 36112bf6e07d02f5853fcf10b3a60f524b6ef7eb
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Nov 24 21:55:28 2008 +0000
-
-    typos
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3594 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7b93c51230668ec958c26cc7f11377c8b6d7ee00
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Nov 24 21:53:56 2008 +0000
-
-    Missing SHAs
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3593 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 04b30cdac324965d6043833cc9c3f544ee8d34dd
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Nov 21 22:34:31 2008 +0000
-
-    Add --list-token-slots / -T to pkcs11-tool to list only slots with tokens.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3592 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit bb6f6f79520033a3dad66f9a388c50c9656f7268
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Oct 27 19:17:36 2008 +0000
-
-    mingw32->mingw*
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3591 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d7941bf85032e40b4159b94b643ec538785d7def
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Oct 27 19:16:28 2008 +0000
-
-    Re-add pcsc-lite compile-time dependency
-    
-    Win64 changed the SCARDCONTEXT from LONG to ULONG_PTR,
-    pcsc-lite did not follow this on 64bit platforms.
-    This breaks the pcsc module.
-    
-    To solve this we use installed winscard.h in order to get proper
-    declerations.
-    
-    As mingw32 does not have winscard.h we keep current types. mingw64 and
-    pcsc-lite system have winscard.h.
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3590 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4ad85b3d91ca983c9a459827c2af228acadc7fe1
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Oct 26 19:13:14 2008 +0000
-
-    Add some more debug information to pcsc
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3589 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d771870d5ce06eb3e72d767a0efa51ba00fcd53b
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Oct 26 14:48:47 2008 +0000
-
-    Resolve some conflict with win64
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3588 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d2f428590b336b0c35d6bcbebb894047018f815f
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Oct 20 15:04:29 2008 +0000
-
-    use 0x%08lx instead of 0x08%lx
-    
-    Thanks to Alon Bar-Lev for the patch
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3587 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4a1e1192a6e8ad2e1a0e686dfa41e10bbd3ece0b
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Oct 20 07:46:24 2008 +0000
-
-    display PC/SC error codes as 0x08%lx instead of %lx to make it explicit
-    they are hex values
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3586 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b4c5c8d539d04f5b832ee7e697f3ca40daea843d
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Oct 20 07:27:41 2008 +0000
-
-    use SCARD_S_SUCCESS instead of 0
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3585 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1e5cd2466e94ca67eea2d6607a7736bc1f4f8156
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Oct 10 09:42:36 2008 +0000
-
-    Add documentation:
-    # (max_virtual_slots/num_slots) limits the number of readers
-    # that can be used on the system. Default is then 8/4=2 readers.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3584 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6b89748111c892a1b2c4949ffdf9007376f0ea6a
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Oct 10 09:39:27 2008 +0000
-
-    slot_get_token(): return CKR_TOKEN_NOT_PRESENT if CKF_TOKEN_PRESENT is
-    not set.
-    
-    Thanks to Douglas E. Engert for the patch
-    http://www.opensc-project.org/pipermail/opensc-devel/2008-October/011361.html
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3583 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 001f03f18d1e56f69b718e0f3a2b1af09abebbe5
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Oct 9 13:05:13 2008 +0000
-
-    card_removed(): warning: comparison between signed and unsigned
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3582 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6eb3ecd10771785efd4d26d1c4acce83ece83e56
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Oct 9 12:59:02 2008 +0000
-
-    card_initialize(): correctly associate a reader to each virtual slot.
-    
-    Thanks to Douglas E. Engert for the patch
-    http://www.opensc-project.org/pipermail/opensc-devel/2008-October/011359.html
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3581 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e2b329e7c9ca49bc854076aeebe04fc113b1dd69
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Oct 9 09:02:42 2008 +0000
-
-    make the * targets depend on only one dependency to avoid problems on
-    concurrent make (-j)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3580 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ac8bb831c4e784f42649246146cd0885c604f685
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Oct 9 08:35:32 2008 +0000
-
-    remove html.out and man.out before filling them to avoid problems
-    when/if they already contain a html.tmp or man.tmp file (on the 3rd
-    execution of make)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3579 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f6405222707b8f55f30d2c1756c215691d8e2cf9
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Oct 9 08:32:14 2008 +0000
-
-    cardos-info is now cardos-tool
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3578 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit df74ebcdc02d5944aa9644ef5a2136ce98d06faa
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Oct 4 19:52:56 2008 +0000
-
-    Handle spaces correctly
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3577 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit acb06323aa9193ef2d3c378eb29e9e3248a3aa40
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Oct 4 19:35:16 2008 +0000
-
-    Make src/tools/cardos-info.bat DOS format
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3576 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2659c00f0d10d3b2b70982acc28223584f66d24c
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Oct 4 19:33:31 2008 +0000
-
-    Make src/tools/cardos-info.bat DOS format
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3575 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 350811017796d877c35ea117aeaaa668f5598e78
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Oct 4 19:32:05 2008 +0000
-
-    Fixup cardos-info scripts
-    
-    1. They are not binaries.
-    2. No need for resources.
-    3. Put in separate files.
-    
-    Anyway, do we actually need these? why not just document
-    that cardos-tool should be used instead?
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3574 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a767600ee8a85823121f1b2ddc9ba981617b575b
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Sep 22 14:36:46 2008 +0000
-
-    fix apdu length check: 0..3 is wrong (too short). 4 is ok.
-    5 is not (length byte for data, but no data?). 6 or more is ok
-    (length byte and data). checking for "5" is not important.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3573 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 042d9d06a530f6ffddd7edd9a07102a0145c8409
-Author: jps <jps at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Sep 22 14:21:01 2008 +0000
-
-    An erased CardOS with a StartKey version 0xFF can now be directly formatted.
-    Verbose output contains now some useful data.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3572 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8136c8b40fe7e9405bdb53725f437cf4f39360e4
-Author: jps <jps at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Sep 22 10:38:34 2008 +0000
-
-    fix some bad crash on Mac
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3571 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 524672345bac517d503d64cb25342f8f58e0b1bb
-Author: jps <jps at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Sep 22 09:47:43 2008 +0000
-
-    CardOS 4.2C is working too after changing Default StartKey to 16 * 0xFF
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3570 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e0d1bb5410e5fcee08fd68d34ec3e6b27d14f48f
-Author: jps <jps at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Sep 22 08:35:54 2008 +0000
-
-    fixing typo
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3569 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit aee10c8a1355956c3bb254445e104752611bcda1
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Sep 22 07:01:34 2008 +0000
-
-    Fix a comment and allow cardos 4.3B too.
-    Thanks to JP for testing.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3568 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit cbf0c28d635f8511fce05342ffabb80298e3bc18
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Sep 19 10:21:14 2008 +0000
-
-    fix a few missing  \n
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3567 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5c29dcdb94632d69b990fa90bbc6e35e3524b3fa
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Sep 18 17:44:54 2008 +0000
-
-    commit changes: cardos-info is now cardos-tool.
-    and it knows to format, at least some cards/tokens with cardos.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3566 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 021dfaccba8965bc8d04b7903e016cab8583158c
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Sep 18 17:43:38 2008 +0000
-
-    rename files only.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3565 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 19a6ecddbf07bc892142e9653c731cd36ea8fb5a
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Sep 11 11:39:47 2008 +0000
-
-    the "-" for make must be in the first line of a multi column command,
-    not somewhere in the middle. this code makes shell look for "-rm" command
-    which does not exist. fixing.
-    
-    "-" is not required in these cases, as "rm -f" always returns 0.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3564 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ff4d6dd101194cb93305a161a47af85085e6a001
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Sep 10 12:44:40 2008 +0000
-
-    Fix for two apparent C code bugs
-    
-    By Stanislav Brabec
-    
-    entersafe_init_pin_info() was declared as int, but defined and used as
-    void, resulting in a function returning an unused pseudo-random value.
-    
-    card-gemsafeV1.c uses comparison 'type == "DF"', which is always false,
-    as it compares pointer to a string with pointer to the string "DF" in
-    the code.
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3563 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c89d27f7559603b4c871320ebc0a7c493a9c424e
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Sep 8 14:04:49 2008 +0000
-
-    Don't removed generated external files during distclean
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3562 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 29ee5e116ccbbec6fd03930c4f90bfed681db9e1
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Aug 27 06:19:36 2008 +0000
-
-    Update trunk for new release.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3559 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5ce2fcdc8cbd06dec05d8acc1c4146d2590558b8
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Aug 20 15:20:23 2008 +0000
-
-    Document recent changes.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3558 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9468d989cf5f279e11f1551164624c2cd1b25948
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Aug 20 15:17:59 2008 +0000
-
-    Douglas E. Engert:
-    The pkcs15-gemsafeV1.c code assumes that the key_ref is always 3. But that is
-    not always the case. In our case it is 4. The patch tries to determine the
-    key_ref by looking at what appears to be a table of allocated keys, and picking
-    the first allocated key.
-    
-    In case this is not always true, the patch will also allow for the the
-    opensc.conf card flag = n to specify the key_ref as the low order 4 bits of the
-    flag.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3557 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 27d00f9265e053c574690d9cf27d4d579d29a09d
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Aug 20 05:41:20 2008 +0000
-
-    Add new entersafe driver for ePass 3000 tokens.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3556 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5ef6b5ff7d798f32958978483bbb1353ed8abfe8
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Aug 12 14:48:54 2008 +0000
-
-    remove check for label - if you set one with "pkcs15-init -C -l your-label"
-    this check doesn't work correctly.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3555 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 56ea99d8a009e76096c97384d8d420a279df3af6
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Aug 12 09:51:43 2008 +0000
-
-    print_mech_info(): replace printf by fprintf to correctly redirect the
-    log
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3554 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 07247596d69ab5a186c076e3e379b5074f26261c
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jul 31 13:25:16 2008 +0000
-
-    Apply security fix.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3552 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1b1ae308e0f5e9e560f3c12325d1aa416e03cd54
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jul 31 12:43:44 2008 +0000
-
-    update export script.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3550 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c528205cdeb9010ebb804de6e8d8b53ed6b18c16
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jul 31 12:18:13 2008 +0000
-
-    and update the date.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3548 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 262a630bfb797039c99db4f8a297034620bf041c
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jul 31 12:17:58 2008 +0000
-
-    document this change.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3547 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e243e7f322e0e1f9f94ae41db6ab63f016d8baad
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jul 31 12:17:29 2008 +0000
-
-    make the sign_with_decrypt hack configureable.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3546 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 29d78fde39220226bc396dccd016832c938b0106
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jul 31 12:13:15 2008 +0000
-
-    move checks to pkcs15_bind, where we can look at the config.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3545 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f4e8c61c50df4f1c9bf0858c8cb0b2ffb3f7051a
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jul 30 14:00:47 2008 +0000
-
-    Update NEWS
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3544 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 59dc6f5157e96ef0ae69db1947c247ef57dfd406
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jul 30 11:57:40 2008 +0000
-
-    update configure and NEWS file.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3543 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 973bf9a7910898c61f5d83ca0cfb43719244932e
-Author: cg2v <cg2v at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jul 27 15:50:01 2008 +0000
-
-    export a GET DATA operation for cardos so opensc-explorer's do_get works
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3540 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 625d14c8809b3c84ae5f279eaed4d2bab820cbf2
-Author: cg2v <cg2v at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jul 27 15:18:59 2008 +0000
-
-    Don't free uninitialized memory if pem_encode fails.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3539 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 758adbc7ac41821a2b5e1d4883c0ff6101123421
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jul 21 14:39:37 2008 +0000
-
-    Chaskiel Grundman:
-    I found the following patch to opensc-explorer handy when cleaning up
-    after some failed keygens (but not all, since you can't delete private
-    key objects). It switches the card to the admin lifecycle at startup:
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3538 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 64fd479aa501d7662bdadf54233aa75db973a6f1
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jul 21 14:35:21 2008 +0000
-
-    Chaskiel Grundman:
-    Nowhere in pkcs15init/pkcs15-cardos.c is the user pin ever
-    requested or presented to the card.
-    Since the update acl for the key object uses the user pin, the GENERATE
-    KEY operation fails when it isn't logged in.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3537 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2599fa795da9eec2289ab81e7c67cea146e2b0f3
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jul 2 10:15:09 2008 +0000
-
-    Do not delete .exports files on make clean
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3536 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4fc6c498edf91c03601d8f2dc640c14001144ba3
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jul 2 09:55:32 2008 +0000
-
-    Make PC/SC work on Windows again
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3535 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a3796270d4b3f10e51b05c15d1e9b30c48445b87
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jun 11 10:14:43 2008 +0000
-
-    Detect libtool-1 or libtool-2 at runtime
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3534 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7534621a8918c60fdfcdc7778d9a54db76c95ad3
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jun 9 08:32:42 2008 +0000
-
-    Revert pic changeset
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3533 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c18dbe5669b51ace19f1dc96cd9c3e10c596652b
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jun 9 08:31:38 2008 +0000
-
-    More aclocal->m4
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3532 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 38f3ae2518db5eec8e076e1dcea4c07d00520b70
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jun 9 08:10:11 2008 +0000
-
-    upgrade from http://autoconf-archive.cryp.to/acx_pthread.html
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3531 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 555dcd912e1d20aee928148ea1306fa1c06d7fcc
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jun 5 20:21:30 2008 +0000
-
-    Revert autoconf version prereq
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3530 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a9db36f7bb0c61e2587b8ea488097940f5ce82ac
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jun 5 17:06:27 2008 +0000
-
-    Rename aclocal->m4 to be more standard
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3529 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7d6cf6b694271a8c9ea41cba1ae740939dec6339
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jun 5 17:03:47 2008 +0000
-
-    Prepare for libtool-2
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3528 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit df27108452f07240fb7b41f0af9307a9237a3fad
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon May 26 11:35:56 2008 +0000
-
-    No point to maintain static list of available drivers in configuration file, user can always use opensc-tool to see available drivers
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3527 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 47013af374f958e7402d1804809e9ea41c01aa98
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon May 26 10:46:16 2008 +0000
-
-    opensc-explorer double free and cleanups
-    
-    $ opensc-explorer
-    OpenSC Explorer version 0.11.4-svn
-    OpenSC [3F00]> cat
-    only working EFs may be read
-    OpenSC [3F00]> cat
-    only working EFs may be read
-    opensc-explorer: sc.c:492: sc_file_free: Assertion `sc_file_valid(file)' failed.
-    Aborted
-    
-    $ opensc-explorer
-    OpenSC Explorer version 0.11.4-svn
-    OpenSC [3F00]> cd ff00
-    OpenSC [3F00/FF00]> cat
-    only working EFs may be read
-    OpenSC [3F00/FF00]> cd ..
-    opensc-explorer: sc.c:492: sc_file_free: Assertion `sc_file_valid(file)' failed.
-    Aborted
-    
-    By Aktiv Co. Aleksey Samsonov
-    And some more Cleanups
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3526 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4fd85ce0cf249550ff2d770f7c9fd056d9f12ee2
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon May 26 08:30:39 2008 +0000
-
-    print_generic() & print_print(): size is a CK_ULONG (unsigned) so compare
-    using "!= (CK_LONG)(-1)" instead of "> 0"
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3525 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4d1218b64f57f1b70e4921b4379727f559e5bd4c
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu May 22 12:37:57 2008 +0000
-
-    completely initialize pkcs11_secret_key_ops structure with NULL pointers
-    
-    secretkey.c:225: warning: missing initializer
-    secretkey.c:225: warning: (near initialization for 'pkcs11_secret_key_ops.destroy_object')
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3524 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 96064e195c3395905a288be4bf30dad261386ef8
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu May 22 12:30:37 2008 +0000
-
-    add missing prototype for sc_pkcs15emu_rutoken_init_ex()
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3523 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit bdaf49b0c80743f0c287659138d0280273505b20
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu May 22 12:30:16 2008 +0000
-
-    add missing prototype for sc_pkcs15emu_tcos_init_ex()
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3522 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 82314eaa565846d661d4ddbee857901c6d6361bc
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu May 22 12:26:08 2008 +0000
-
-    do not use system as a variable name. system() is also a function
-    
-    card-akis.c:400: warning: declaration of 'system' shadows a global declaration
-    /usr/include/stdlib.h:730: warning: shadowed declaration is here
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3521 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 99a16c66dbdff170189ff1b3e232273709997814
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu May 22 12:23:25 2008 +0000
-
-    remove two unused variables
-    
-    reader-pcsc.c:739: warning: unused variable 'rv'
-    reader-pcsc.c:862: warning: unused variable 'again'
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3520 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ca2da1bd678ddfb4c6de610875edb2859d3dbc8a
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu May 22 12:22:23 2008 +0000
-
-    Avoid variable name space collision
-    
-    reader-pcsc.c:396: warning: declaration of 'priv' shadows a previous local
-    reader-pcsc.c:367: warning: shadowed declaration is here
-    reader-pcsc.c:909: warning: declaration of 'reader' shadows a previous local
-    reader-pcsc.c:901: warning: shadowed declaration is here
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3519 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f2b103547fd13aaeb60ff32fb99804ba89b13db8
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu May 22 12:14:39 2008 +0000
-
-    add a prototype for compat_dummy()
-    
-    compat_dummy.c:2: warning: no previous prototype for 'compat_dummy'
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3518 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit fb7c59e7aa23ba5d2faa6d98db535d60c2485a0e
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu May 22 12:13:19 2008 +0000
-
-    use #ifdef instead of #if
-    
-    pkcs15-cardos.c:547:5: warning: "SET_SM_BYTES" is not defined
-    pkcs15-cardos.c:585:5: warning: "SET_SM_BYTES" is not defined
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3517 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 28c0c6283d736b863160b3940effeb7c47753a4a
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue May 20 09:47:27 2008 +0000
-
-    print_ptr_in(): change log format
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3516 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 232a26b62d26ebbedafb8c65d763b351de7899f7
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue May 20 09:41:44 2008 +0000
-
-    C_Initialize(): log the value of the pInitArgs argument
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3515 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0d71a75b1ac54af4707f26ca7131f879e9f8a01a
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed May 14 18:34:32 2008 +0000
-
-    Fixup configure help strings
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3514 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d7bb718e24abe47c65e1c4890212e1d4bc844d31
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon May 12 09:41:48 2008 +0000
-
-    C_Finalize(): do not unload the module since the application may try to
-    make PKCS#11 calls again
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3513 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e14cf57ad1d6561dba946a145988b5c573a670bb
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat May 10 09:55:01 2008 +0000
-
-    Better handle openct reader replug, revert last change in pkcs11-pin
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3512 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a40cf036bbe71d0089b71bcca4b1e6f1d298d757
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri May 9 22:22:41 2008 +0000
-
-    Fix sc_pkcs15_verify_pin() to handle OpenCT hotplug correctly
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3511 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 91177e51ec77d00c4739cce6e177ef8d11fba74c
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon May 5 13:00:01 2008 +0000
-
-    Use size_t instead of int when needed, plus some other minor changes
-    
-    Patch bug.1 included in Ticket #176
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3510 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8624796f3786eb0842cf7ac1cd1982d5316fb731
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon May 5 09:51:39 2008 +0000
-
-    use type size_t instead of int since the 3rd argument of
-    sc_format_asn1_entry() is void *
-    using int will fail on a 64-bits platform
-    
-    Closes Ticket #176
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3509 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 96b0f4a670358328933e35f6f362a2a4ca3fa70d
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri May 2 17:56:52 2008 +0000
-
-    Verify PIN support Plug&Play
-    
-    If card was reset or reader reconnected, verify can restart
-    transaction, as upper level will not cache PIN in this case.
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3508 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e237574742c0790edb5550a74540b12df032da44
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 29 17:01:19 2008 +0000
-
-    Plug&Play support
-    
-    This is not the best solution, but focus on smallest code change.
-    
-    Changes:
-    
-    1. Add detect_readers() to reader opts, this adds new readers to the end
-       of the readers list until list is full.
-    
-    2. Add sc_ctx_detect_readers() that calls readers' detect_readers().
-    
-    3. Fixup pcsc_lock() so that it reconnect to the card and report proper
-       error so caller may be notified if session was lost.
-    
-    4. Allow context to be created without readers.
-    
-    5. Call sc_ctx_detect_readers() from PKCS#11 C_GetSlotList with NULL_PTR.
-    
-    6. Allow no reader at detect_card, as reader my be removed.
-    
-    7. Since I broke ABI, I updated the external module version requirement
-       to match OpenSC version. In the future a separate version should be
-       maintained for each interface, this should be unrelated to the package
-       version.
-    
-    Alon
-    
-    ---
-    
-    svn merge -r 3480:3505 https://www.opensc-project.org/svn/opensc/branches/alonbl/pnp
-    
-    M    src/tools/opensc-tool.c
-    M    src/pkcs11/pkcs11-global.c
-    M    src/pkcs11/slot.c
-    M    src/libopensc/reader-pcsc.c
-    M    src/libopensc/internal-winscard.h
-    M    src/libopensc/ctx.c
-    M    src/libopensc/reader-ctapi.c
-    M    src/libopensc/libopensc.exports
-    M    src/libopensc/reader-openct.c
-    M    src/libopensc/opensc.h
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3506 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c862f88ce77fb40fa8ed65eb18699f46ed4fcea2
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 29 06:11:34 2008 +0000
-
-    SIGSEGV print_tags_recursive - fix
-    
-    Patch opensc-0.11.4.trunk-r3502-fix-segv_print_tags_asn1.diff (for trunk
-    trunk revision 3502) is draft.
-    
-    
-    Example 1 (SIGSEGV):
-    
-    OpenSC Explorer version 0.11.4-svn
-    OpenSC [3F00]> cd ff00
-    OpenSC [3F00/FF00]> asn1 0001
-    Printing tags for buffer of length 512
-    [Switching to Thread -1211906368 (LWP 25131)]
-    
-    By Aktiv Co. Aleksey Samsonov
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3504 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6c740b907e4424e393249f958671d72f6ddb9df0
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 29 06:09:00 2008 +0000
-
-    More MSVC fixups by Douglas E. Engert
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3503 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e928d5565c19f54f0d6a2c17ee8ee400b0c15764
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Apr 28 07:57:03 2008 +0000
-
-    convert C++ in C comment
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3502 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 932cc41f30499c76b8456e1a1d8432d140546236
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Apr 28 07:45:28 2008 +0000
-
-    convert C++ comment in C comment
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3501 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7201fc7ace10a7050382a258832fedd8f48dd7b0
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Apr 28 07:44:07 2008 +0000
-
-    convert a C++ comment in C comment
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3500 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 63b55ea0aa84301b11868be9c9cb619b8c8c8f51
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Apr 28 07:42:22 2008 +0000
-
-    rutoken_new_file(): initialize sec_attr
-    
-    pkcs15-rutoken.c:372: warning: 'sec_attr' may be used uninitialized in
-    this function
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3499 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0b239489fc27635c61fd3fea0a39dec38ab30d71
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Apr 28 07:36:07 2008 +0000
-
-    completely initialize the sc_pkcs11_framework_ops structure (using NULL
-    for undefined callbacks)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3498 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 040ac682d8207999b2c32c8d1fdb4f3909dc4860
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Apr 28 07:33:26 2008 +0000
-
-    completely initialize the struct fmap fields
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3497 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c1311c8c6a097f21a7dba18feadbf1c1d9ae197b
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Apr 28 07:24:57 2008 +0000
-
-    card.c:756: warning: unused variable 'j'
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3496 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ab99cc50bda5385ab48196d5f49dca977aca9592
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Apr 28 07:23:03 2008 +0000
-
-    convert C++ comment in C comment (ISO C90)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3495 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 514d471f0e2e9ee969d1988d593c32d22859f288
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 25 12:49:11 2008 +0000
-
-    Use O_BINARY at rutoken
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3492 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 597bcd76358156fbca9485bb6857c714cba43317
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 25 11:51:03 2008 +0000
-
-    Cleanup some Windows issues with open
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3491 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 104ff0ed662d18905ec481bdb508212d759f7938
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Apr 24 16:34:08 2008 +0000
-
-    rutoken: Some MSVC fixups, by Aktiv Co. Aleksey Samsonov
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3490 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8110595fb64bb3b0c0b25e6a9b8b128eba32747e
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Apr 24 06:32:28 2008 +0000
-
-    Add PATH comment for Windows users
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3489 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 886d6ac3ca0bc0ef6777ca0df509f0ff82e7b329
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 18 20:37:55 2008 +0000
-
-    Add --force to autoreconf
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3479 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8d7bce4de23d216889234e26b72272cad6255011
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 18 14:08:23 2008 +0000
-
-    ruToken fixups
-    
-    http://www.opensc-project.org/pipermail/opensc-devel/2008-April/011057.html
-    
-    By Aktiv Co. Aleksey Samsonov
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3478 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e19d6a93ed730651cae523fd18d0b8b01b447f61
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Apr 17 10:05:50 2008 +0000
-
-    Make sure we generate opensc.conf every time
-    
-    There is no dependency for autoconf variables, and
-    we provide the opensc.conf for Windows MSCVER build.
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3477 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a160f0ebf764413d65d7dd8b7debaebaf94a710e
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 16 04:42:31 2008 +0000
-
-    common/main.c is part of getopt package
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3476 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5d218007c359d11a12508846a851e67af8367b19
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 16 04:32:56 2008 +0000
-
-    Fix last reference to VERSION and not PACKAGE_VERSION
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3475 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 715a794db98340457d03e7c9adf08083f683a547
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Apr 13 17:57:44 2008 +0000
-
-    Add PKCS11-Spy to installer
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3474 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d1f6df897e3a190f21b95b50845b02c8f93272d8
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Apr 13 17:51:20 2008 +0000
-
-    Add simple Windows installer script for OpenSC
-    
-    As nobody want to maintain UI installer, at least
-    provide an installation script.
-    
-    The opensc-install.bat should be run from the
-    installed location.
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3473 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 606052c90133028742f5b853af860e8b736d42c8
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Apr 12 21:54:02 2008 +0000
-
-    Add --get-conf-entry, --set-conf-entry to opensc-tool
-    
-    Although not perfect, will enable installer/users
-    to perform some simple tasks against configuration file.
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3472 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 865f6e9c70cfd21e2581fc07f273174029a7ff29
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 11 12:52:46 2008 +0000
-
-    More fixups to maintainer-clean
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3471 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c50280cb289b8167d7462592188d2ed5f4a74d5d
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Apr 10 12:21:18 2008 +0000
-
-    afxres.h is not needed
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3470 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f503c3482fbd5d0366ff05b364e3ea4d114e4a94
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 8 19:16:48 2008 +0000
-
-    No need for Makefile.mak in win32 anymore
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3469 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d84077749b73fb7b25489ee2c2e4f4255ee9f43d
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 8 18:36:42 2008 +0000
-
-    Distribute autoconf generated files for MSVC build
-    
-    Construct resource files and winconfig.h using autoconf
-    substitutions.
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3468 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9dff29af2db600a8c74af39fdb73895ed48b7ade
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 8 17:56:27 2008 +0000
-
-    Typeo
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3467 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5f567f7a3c5b3f62228fd1e706c6051dc6b2bef3
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Apr 7 21:35:11 2008 +0000
-
-    More MSVC build additions
-    
-      (1) use the exports for opensc-pkcs11.dll, onepin-opensc-pkcs11.dll,
-          and pkcs11-spy.dll
-    
-      (2) don't link common.lib with scconf.lib, to avoid duplicate messages
-          later.
-    
-      (3) add piv-tool to openssl_programs.
-    
-    By Douglas E. Engert
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3466 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f9347111db5e644db78ec1e47419d59ed433ad88
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Apr 7 21:28:37 2008 +0000
-
-    Support OPENSC_FEATURES for MSC build
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3465 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 54c1c735f312c2910f680316e96193054cb1de52
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Apr 7 19:42:43 2008 +0000
-
-    Attached are the latest mode to OpenSC svn 3462 to use the Makefile.mak
-    files to build on Windows.
-    
-    I got rutoken to compile, and took out the #ifdef's I had in last week.
-    The rutoken programmer declared some variables in the middle of a block
-    rather then having all the declare statements at the beginning of a block
-    as is normally done in C. The Microsoft compile treats this as an error.
-    (Actual many errors.)
-    
-    The makedef.pl is no longer needed, as the exports files can be used.
-    Note that in the original Makefile.mak files only opensc.def and
-    pkcs15init.def were created.
-    
-    winconfig.h has a number of changes. As discussed last week this could
-    be created by autoconf. I also noted that the Active State Perl that
-    was required for the makedef.pl has a psed command that could be used
-    like sed to update winconfig.h.  I did not attempt to do this.
-    
-    
-    
-      win32/Make.rules.mak - Use ENABLE_OPENSSL and ENABLE_ZLIB
-    
-      src/tools/Makefile.mak - add the rutoken.tool.exe
-    
-      src/tools/eidenv.c - use PACKAGE_VERSION
-    
-      src/pkcs11/Makefile.mak - reorder the objest to match the list in the
-               Makefile.am. Makes it easier to read.
-    
-      src/include/winconfig.h - The windows version of the config.h
-               Changes based on discussions on the list last week.
-    
-      src/common/Makefile.mak - renamed modules.
-    
-      src/pkcs15init/Makefile.mak - reordered, and added back the rutoken modules
-               replaced the use of makdef.pl to sue the exports file.
-    
-      src/scconf/Makefile.mak - reordered objects.
-    
-      src/libopensc/card-rutoken.c -
-               error. Moved the declares to the beginning of blocks.
-    
-      src/libopensc/Makefile.mak - reorder names, and add rutoken.
-               Use the libopensc.exports file.
-    
-      src/libopensc/pkcs15-prkey-rutoken.c - more moving of declare statements.
-    
-    By Douglas E. Engert
-    
-    http://www.opensc-project.org/pipermail/opensc-devel/2008-April/011011.html
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3464 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 66d819a3a6c4dcfec7e2fa078d2c570a42187ed8
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Apr 7 19:25:21 2008 +0000
-
-    ruToken C fixups
-    
-    http://www.opensc-project.org/pipermail/opensc-devel/2008-April/011011.html
-    
-    By Douglas E. Engert
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3463 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6e65efb2578dabb6a86bc93c4dfb04b72dc5a4ca
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 4 20:38:20 2008 +0000
-
-    Some more build cleanups
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3462 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 376139d1f130dcc8d07f8e309468ebd37749a914
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 4 19:21:59 2008 +0000
-
-    Fix future issue with distcheck
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3461 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6f226114387333e03e7f166adf9e93ec5a4bca29
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 4 16:46:50 2008 +0000
-
-    Fix some duplicate symbols with Windows header files.
-    Thanks to Douglas E. Engert.
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3460 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e4eeba26cd86da6532c3149861dd07a215e27d8a
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 4 16:21:08 2008 +0000
-
-    Fix MSVC compiler error
-    
-    http://www.opensc-project.org/pipermail/opensc-devel/2008-April/010997.html
-    
-    Thanks to Douglas E. Engert
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3459 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ac0c291f9c0653cb9a4dff9ab7904fcce3c402ee
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 4 06:05:38 2008 +0000
-
-    Fixup WINAPI location
-    
-    By: Douglas E. Engert
-    
-     (2) Change the typdefs for the SC_*_t routines.
-      The WINAPI had to be moved. For example from:
-        typedef PCSC_API LONG (*SCardEstablishContext_t)...
-      to:
-        typedef LONG (PCSC_API *SCardEstablishContext_t)...
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3458 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 317ad765c59cf45c183974f678f4fd32ad85f8ed
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 4 05:39:34 2008 +0000
-
-    Solve some Windows conflicts
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3457 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 94d884922cbe350e0a635b676e366ed515fda402
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 2 19:48:12 2008 +0000
-
-    Fix default PC/SC provider for darwin, thanks to Martin Paljak
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3456 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0e2c664d34f38b9b8ff15214290c2392f33341ae
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 2 05:44:12 2008 +0000
-
-    Rename PC/SC library into PC/SC provider.
-    Sync symbols between configuration and source.
-    Put default provider in opensc.conf, opensc-tool.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3455 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 65a427e419243b4abe5ee1d8715c0859c329bf3a
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 1 20:41:07 2008 +0000
-
-    Ignore -svn component so distcheck will pass for svn versions
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3454 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 47c7cf2bbe2f0d93250667520c133adb33f533ca
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 1 20:32:28 2008 +0000
-
-    Readd -svn version suffix, removed at revision 3446
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3453 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3f7aa03520d58c1fefd47dc45a16ab8273a5da5e
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 1 20:10:43 2008 +0000
-
-    Add --with-pcsc-module to configure
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3452 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c9b19135fca4610e75a15cc5241115204b81968b
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 1 19:58:30 2008 +0000
-
-    More separate srcdir fixups, make distcheck work
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3451 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 87db3c96c2578a9c595701cb9c63e89957195d97
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 1 19:04:33 2008 +0000
-
-    More separate srcdir fixups
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3450 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 39abe22798f5ebdcf66edb5fd23bd94a0b4e1b30
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 1 17:08:17 2008 +0000
-
-    More separate srcdir fixups
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3449 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 503b028acba4cfa5529e90b3e1964dfd02b32592
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 1 16:55:23 2008 +0000
-
-    More separate srcdir fixups
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3448 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 13878512f57cd0c880872064ec1bea363d61db7f
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 1 13:04:48 2008 +0000
-
-    do not use api/*/*.xml but explicitely expand the first * to avoid
-    catching api/xsl-stylesheets/catalog.xml
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3447 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 69dd0baf30a4e03f9473e079ffbf644e3537c101
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 1 13:01:43 2008 +0000
-
-    use $(srcdir) for dist_noinst_DATA
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3446 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7e30721378c9fc11881740cbc0d0756baf8b80d8
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 1 12:43:26 2008 +0000
-
-    use $(srcdir) when needed to be able to build in separate build
-    directories using: cd foobar ; ../configure srcdir=..
-    
-    Thanks to Douglas E. Engert for the patch
-    http://www.opensc-project.org/pipermail/opensc-devel/2008-March/010959.html
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3445 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9ffe2e159d5a8935ce615c91120678bcd93e4cb3
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 1 12:35:08 2008 +0000
-
-    use "pkcs15.h" instead of <opensc/pkcs15.h> (and similar)
-    
-    Thanks to Douglas E. Engert for the patch
-    http://www.opensc-project.org/pipermail/opensc-devel/2008-March/010959.html
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3444 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 77fac9721fb3033d0f4269c5eb40c39f72e7f193
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 1 09:32:40 2008 +0000
-
-    #include <opensc/pkcs15.h> to avoid a compilation warning
-    
-    rutoken.h:4: warning: 'struct sc_pkcs15_prkey' declared inside parameter
-    list
-    rutoken.h:4: warning: its scope is only this definition or declaration,
-    which is probably not what you want
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3443 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9d20a071d6510bc9aeec1b8f0f7d5520d0a855c3
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Mar 29 20:34:38 2008 +0000
-
-    Trivial
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3442 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2f997da12564f1acf48ecc7d3aab78764551695f
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Mar 27 14:13:00 2008 +0000
-
-    Install PKCS#11 providers at bin for Windows
-    This will place file in more expected location, and
-    reduce runtime dependencies as dependency DLL will be located
-    at the same directory.
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3441 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 80a16f686d91dcfed957da8899d58f814b0b3c52
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 26 06:24:37 2008 +0000
-
-    ruToken cleanups
-    
-    Move constants out of standard files.
-    Create ruToken specific interface.
-    Update symbols.
-    
-    Thread at:
-    http://www.opensc-project.org/pipermail/opensc-devel/2008-March/010917.html
-    
-    Cleanup of:
-    http://www.opensc-project.org/pipermail/opensc-devel/2007-December/010617.html
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3439 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d0e0dd2820d4475c372971c8313d886eb396d56b
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Mar 24 16:05:31 2008 +0000
-
-    Cleanup conventions to meet other OpenSC projects
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3438 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 500b36ae080db315305f8d34637b138614cb7ac2
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Mar 20 13:36:50 2008 +0000
-
-    Revert last
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3434 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 622e3425e3c698ed23937c410754e1bfd35b4e86
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Mar 20 13:06:57 2008 +0000
-
-    Need AC_LIBTOOL_DLOPEN for PKCS#11 module
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3433 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 314f2a5501c39cc857522734c770fec15a87847c
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 19 21:23:47 2008 +0000
-
-    Cygwin should load .dll version of PKCS#11
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3432 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a88a5439404cd9bd38129572491868b1d0756f4e
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 19 20:30:36 2008 +0000
-
-    Fixup compile under cygwin
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3431 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8436f089c58a3d8c453edd933aa43fee5b49da8d
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Mar 17 15:17:56 2008 +0000
-
-    pkcs15-gemsafeV1.c:478: warning: 'sc_pkcs15emu_add_pubkey' defined but
-    not used
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3430 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4f53d06c173d9cb525d2146339183af11442f69d
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Mar 17 15:09:16 2008 +0000
-
-    change type from int to unsigned int to avoid 2 compiler warnings:
-    pkcs15-gemsafeV1.c:150: warning: comparison between signed and unsigned
-    pkcs15-gemsafeV1.c:331: warning: comparison between signed and unsigned
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3429 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2800607c4a1bb72c92b84a6938479d29b6f30bc0
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Mar 17 15:09:16 2008 +0000
-
-    rename index -> index_local to avoid a compiler warning
-    pkcs15-gemsafeV1.c:126: warning: declaration of 'index' shadows a global declaration
-    /usr/include/string.h:304: warning: shadowed declaration is here
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3428 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 875d99e46a460a6532d33669fb28b6d0702dee6c
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Mar 17 15:09:16 2008 +0000
-
-    use sc_debug/sc_error instead of fprintf(stderr, ...)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3427 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a05564447a2d04348bbced863d636e68fda74343
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Mar 17 15:03:51 2008 +0000
-
-    add ATR for the GemSafeXpresso 16k R3.2
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3426 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5217ebc2d2265dda329ca62cec28e226fcac6bb3
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Mar 15 19:58:28 2008 +0000
-
-    Fix opensc.conf dist again
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3425 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 760b89f37ec76631784cb9eeb689e6a56dd13621
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Mar 15 18:12:58 2008 +0000
-
-    Don't distribute opensc.conf
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3424 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 97a3455e6c5d7e9a4e2b930f109f2b086cd13232
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Mar 15 13:24:44 2008 +0000
-
-    Fix typo
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3423 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5e5a053e9afa6eec4e3ff2ae768f9c8e146cb424
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Mar 15 13:24:05 2008 +0000
-
-    Fixup autoconf detection
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3422 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f49f765ac68da0a5e177fc0ab9e2ac240826cf69
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Mar 15 11:05:26 2008 +0000
-
-    Fix libtool versioning issues
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3421 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1635782e6200b0c473f5cc0696df197e815f3258
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Mar 14 21:26:42 2008 +0000
-
-    Fixup autoconf help
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3420 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3e78a50edc5f985755f3539defd75e508f4459d6
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Mar 14 07:44:09 2008 +0000
-
-    Minor cleanups
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3419 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c7d2788f01210f04121a16010d87239712289503
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Mar 10 18:17:56 2008 +0000
-
-    Support >=autoconf-2.60
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3418 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2761549c1117df8ede365140971bcb8560ee4f1a
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Mar 10 16:38:01 2008 +0000
-
-    use new MKDIR_P macro, but depend on automake >= 1.10.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3417 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7ec2b320d6f20f357c4c7b1474ce5c98471e33b3
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Mar 10 07:10:53 2008 +0000
-
-    Remove emptyline
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3416 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b0ad68658ee3e09e9954e4a0d4b4aac7cd88cffc
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Mar 10 06:45:23 2008 +0000
-
-    automake&co define mkdir_p, not MKDIR_P.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3415 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8ac87f1b1eac646bbc29646874241fcf4ea17fb8
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Mar 9 21:24:24 2008 +0000
-
-    Remove useless comments
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3414 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5e4abcc6753560e477915e4d2028af5e307b37e7
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Mar 9 19:44:12 2008 +0000
-
-    Some build cleanups
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3413 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 72449f06352280b8fdf26b31f3fa2e06a92961cf
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Mar 9 15:34:28 2008 +0000
-
-    Make export-wiki.sh static across projects
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3412 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 679a4c04dea930b665be978084fc300605149ceb
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Mar 9 15:13:11 2008 +0000
-
-    export-wiki.xsl now works with new trac
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3411 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 440ea331db03909e5b041c2b43f699fe148aa981
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Mar 9 12:01:22 2008 +0000
-
-    Windows DLL suffix is actually delta
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3410 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c9af12d475292542d2f6417850bc6f4149b7d7ac
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Mar 9 11:48:03 2008 +0000
-
-    Add some missing AC_PROG
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3409 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 800e5b0b4101c7596b9c94de04a009644630a7ad
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Mar 8 15:36:27 2008 +0000
-
-    We don't need version constraint
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3408 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0a809dd5cb55b61b1726bf64a5e85db18edbb107
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Mar 6 16:06:59 2008 +0000
-
-    Complete rewrite of OpenSC build system.
-    
-    1.  Build system now supports MinGW (Windows) compilation using msys and cross compilation.
-    2.  Ability to explicitly disable and enable dependencies of the package.
-    3.  openct, pcsc and nsplugins features are disabled by default.
-    4.  Modified pcsc driver to use pcsc dynamically, no compile time dependency is required.
-    5.  --enable-pcsc-lite configuration option renamed to --enable-pcsc.
-    6.  Install opensc.conf file (as opensc.conf.new if opensc.conf exists).
-    7.  Add--enable-doc configuration option, allow installing documentation into target.
-    8.  Add --disable-man configuration option, allow msys mingw32 users to
-        build from svn without extra dependencies.
-    9.  Add export files to each library in order to export only required symbols.
-        Windows native build may use these files instead of scanning objects' symbols.
-    10. Add opensc-tool --info to display some general information about the build.
-    11. Create compatibility library to be linked against library instread of recompiling the
-        same source files in different places.
-    12. Add different win32 version resource to each class of outputs.
-    13. Make xsl-stylesheets location selectable.
-    14. Some win32 fixups.
-    15. Some warning fixups.
-    16. Many other autoconf/automake cleanups.
-    
-    Alon Bar-Lev
-    
-    svn diff -r 3315:3399 https://www.opensc-project.org/svn/opensc/branches/alonbl/mingw
-    
-    _M   .
-    D    configure.in
-    _M   src
-    _M   src/openssh
-    M    src/openssh/Makefile.am
-    _M   src/tools
-    M    src/tools/rutoken-tool.c
-    M    src/tools/opensc-tool.c
-    M    src/tools/cardos-info.c
-    M    src/tools/pkcs15-crypt.c
-    M    src/tools/pkcs15-init.c
-    M    src/tools/piv-tool.c
-    M    src/tools/netkey-tool.c
-    M    src/tools/eidenv.c
-    M    src/tools/cryptoflex-tool.c
-    M    src/tools/util.c
-    M    src/tools/pkcs11-tool.c
-    M    src/tools/pkcs15-tool.c
-    M    src/tools/util.h
-    M    src/tools/opensc-explorer.c
-    M    src/tools/Makefile.am
-    _M   src/pkcs11
-    M    src/pkcs11/pkcs11-global.c
-    M    src/pkcs11/framework-pkcs15.c
-    M    src/pkcs11/mechanism.c
-    M    src/pkcs11/pkcs11-display.c
-    M    src/pkcs11/pkcs11-object.c
-    A    src/pkcs11/opensc-pkcs11.exports
-    M    src/pkcs11/sc-pkcs11.h
-    M    src/pkcs11/pkcs11-spy.c
-    M    src/pkcs11/openssl.c
-    M    src/pkcs11/Makefile.am
-    A    src/pkcs11/pkcs11-spy.exports
-    _M   src/tests
-    _M   src/tests/regression
-    M    src/tests/regression/Makefile.am
-    M    src/tests/sc-test.c
-    M    src/tests/pintest.c
-    M    src/tests/Makefile.am
-    _M   src/include
-    _M   src/include/opensc
-    M    src/include/opensc/Makefile.am
-    A    src/include/opensc/svnignore
-    M    src/include/Makefile.am
-    _M   src/signer
-    _M   src/signer/npinclude
-    M    src/signer/npinclude/Makefile.am
-    M    src/signer/Makefile.am
-    A    src/signer/signer.exports
-    _M   src/common
-    A    src/common/compat_dummy.c
-    D    src/common/getopt.txt
-    D    src/common/strlcpy.c
-    D    src/common/LICENSE
-    A    src/common/compat_getopt.txt
-    A    src/common/compat_strlcpy.c
-    A    src/common/LICENSE.compat_getopt
-    A    src/common/compat_getopt.c
-    D    src/common/strlcpy.h
-    D    src/common/ChangeLog
-    D    src/common/getpass.c
-    D    src/common/my_getopt.c
-    A    src/common/compat_strlcpy.h
-    A    src/common/compat_getpass.c
-    A    src/common/compat_getopt.h
-    A    src/common/ChangeLog.compat_getopt
-    D    src/common/README.strlcpy
-    D    src/common/my_getopt.h
-    A    src/common/compat_getpass.h
-    A    src/common/README.compat_strlcpy
-    D    src/common/strlcpy.3
-    A    src/common/README.compat_getopt
-    D    src/common/getopt.3
-    D    src/common/README.my_getopt
-    A    src/common/compat_strlcpy.3
-    A    src/common/compat_getopt.3
-    M    src/common/Makefile.am
-    M    src/Makefile.am
-    _M   src/pkcs15init
-    M    src/pkcs15init/pkcs15-oberthur.c
-    M    src/pkcs15init/profile.c
-    M    src/pkcs15init/pkcs15-lib.c
-    M    src/pkcs15init/pkcs15-rutoken.c
-    A    src/pkcs15init/pkcs15init.exports
-    M    src/pkcs15init/pkcs15-gpk.c
-    M    src/pkcs15init/Makefile.am
-    _M   src/scconf
-    M    src/scconf/Makefile.am
-    M    src/scconf/parse.c
-    A    src/scconf/scconf.exports
-    _M   src/libopensc
-    M    src/libopensc/card-rutoken.c
-    M    src/libopensc/compression.c
-    M    src/libopensc/sc.c
-    M    src/libopensc/card-piv.c
-    M    src/libopensc/pkcs15-openpgp.c
-    M    src/libopensc/pkcs15-postecert.c
-    M    src/libopensc/pkcs15-tcos.c
-    M    src/libopensc/opensc-config.in
-    M    src/libopensc/reader-pcsc.c
-    A    src/libopensc/internal-winscard.h
-    M    src/libopensc/ctx.c
-    A    src/libopensc/libopensc.exports
-    M    src/libopensc/pkcs15-piv.c
-    M    src/libopensc/pkcs15-infocamere.c
-    M    src/libopensc/internal.h
-    M    src/libopensc/pkcs15-actalis.c
-    M    src/libopensc/pkcs15-starcert.c
-    M    src/libopensc/card-oberthur.c
-    M    src/libopensc/pkcs15-atrust-acos.c
-    M    src/libopensc/p15card-helper.c
-    D    src/libopensc/part10.h
-    M    src/libopensc/ui.c
-    M    src/libopensc/card-gpk.c
-    M    src/libopensc/pkcs15-wrap.c
-    M    src/libopensc/pkcs15-gemsafeGPK.c
-    M    src/libopensc/log.c
-    M    src/libopensc/pkcs15-esteid.c
-    M    src/libopensc/pkcs15-prkey-rutoken.c
-    M    src/libopensc/log.h
-    M    src/libopensc/Makefile.am
-    M    src/libopensc/reader-openct.c
-    _M   aclocal
-    M    aclocal/Makefile.am
-    _M   win32
-    M    win32/Makefile.am
-    A    win32/versioninfo.rc.in
-    A    win32/ltrc.inc
-    A    configure.ac
-    _M   doc
-    _M   doc/tools
-    M    doc/tools/pkcs15-profile.xml
-    D    doc/changelog.sh
-    D    doc/export-wiki.xsl
-    _M   doc/api
-    _M   doc/api/file
-    M    doc/api/man.xsl
-    _M   doc/api/asn1
-    _M   doc/api/apps
-    _M   doc/api/init
-    _M   doc/api/types
-    _M   doc/api/card
-    M    doc/api/html.xsl
-    _M   doc/api/misc
-    _M   doc/api/util
-    M    doc/Makefile.am
-    D    doc/export-wiki.sh
-    AM   doc/nonpersistent
-    A    doc/nonpersistent/export-wiki.xsl
-    A    doc/nonpersistent/Makefile.am
-    A    doc/nonpersistent/export-wiki.sh
-    A    doc/nonpersistent/svn2cl.xsl
-    D    doc/generate-man.sh
-    D    doc/svn2cl.xsl
-    M    Makefile.am
-    A    svnignore
-    _M   etc
-    M    etc/opensc.conf.in
-    M    etc/Makefile.am
-    D    man
-    _M   solaris
-    M    solaris/Makefile
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3405 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 56a4322c3484cc47f937a4ad1e9a130858314f0c
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Mar 6 15:04:29 2008 +0000
-
-    Convert constant SC_PKCS11_MAX_VIRTUAL_SLOTS to configuration option.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3404 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 741330ba1942ae4eaf7c57e1a7ab0dc2a1874957
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Mar 6 15:00:04 2008 +0000
-
-    Allow specifying application name for data objects at pkcs15-init.
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3403 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1875a25c4090b261d9eeb419beeb74bae9735650
-Author: alonbl <alonbl at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Mar 6 14:56:31 2008 +0000
-
-    PKCS#11 "Application and processes" instructs the sequence
-    that should be taken after fork().
-    Applications should call C_Initialize() immediately after fork()
-    to reinitialize the provider.
-    
-    The change monitor the pid that calls C_Initialize(), if it is
-    different than previous C_Finalize() is called.
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3402 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9740726f165ad393ee7473463813497664f173f6
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Feb 29 15:37:46 2008 +0000
-
-    sc_asn1_decode_integer/asn1_encode_integer: correctly manage negative
-    numbers and some positive numbers like 128
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3401 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 04942bb4f6b8cb6d1bfb29b8d26742c10fcf38f8
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Feb 29 10:18:51 2008 +0000
-
-     * Correctly return CKR_PIN_INCORRECT if PIN is out of range.
-     * By Alon Bar-Lev from svn diff -r 3397:3398 https://www.opensc-project.org/svn/opensc/branches/alonbl/pkcs11-login-rv
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3400 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5a04a103fbca1d8b031379aa258976f385efb249
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Feb 25 20:36:59 2008 +0000
-
-    do not use memory quota
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3392 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c46c366f1d62e65f2a07039cb4e32682a4f3d947
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Feb 25 19:47:11 2008 +0000
-
-    check tpin before trying to delete application
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3391 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 69742ed3a909611940950295a4e10571b0949ec6
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Feb 14 17:02:02 2008 +0000
-
-    circumvent the 'padded with zeros' ATR bug on Mac OS X <=10.5.2
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3388 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8db7c8c124c42060c8e3992b7d758718d40faa85
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Feb 10 16:13:55 2008 +0000
-
-     * Fix protocol forcing. Whenever connecting, use  whatever protocol is available / currently set on card and only force the protocol with a cold reset when different
-     This fixes pcsc_lock->pcsc_reconnect->protocol mismatch error escaping from reader-pcsc.c if some other application has set the card to a different protocol.
-     * pcsc_reconnect uses PC/SC return values, pcsc_reset uses OpenSC; 0 -> SC_SUCCESS
-     * CCID driver with OmniKey 1021 returns SCARD_W_UNPOWERED_CARD when a card is inserted upside-down. Translate the currently unknown error into 'Unresponsive card'.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3386 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a4bad4452e7d6acdb75c129fa28c5291f4606b79
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Feb 1 14:31:02 2008 +0000
-
-    Add support for the Austrian A-Trust ACOS card
-    
-    Thanks to Franz Brandl for the patch
-    http://www.opensc-project.org/pipermail/opensc-devel/2008-February/010675.html
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3318 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 91288d495550af6c8c0eb544c089510f1854ec32
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jan 11 16:28:00 2008 +0000
-
-    remove $(pkcs11dir)/opensc-pkcs11.so so that creating the symbolink link
-    does not fail if the file already exists.
-    
-    Thanks to Jean-Pierre Szikora for the bug report
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3314 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e9135ff34779cbae1d3a9740dc46bfe3d535e965
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jan 4 13:13:53 2008 +0000
-
-    print_binary(): everything except printable characters (including space)
-    are displayed in hex
-    
-    Thanks to Ian Young for the patch
-    http://www.opensc-project.org/pipermail/opensc-devel/2008-January/010641.html
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3313 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 156f368f9daa0f8db35e7038d65d8fc6f4121419
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jan 4 08:57:12 2008 +0000
-
-    add two missing files for ruToken support
-    
-    Thanks to Ian Young for the bug report
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3312 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a9ff90382e62aeedd9c483bb26b01fb1078a7776
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jan 3 09:44:40 2008 +0000
-
-    update comment to reflect the fact that lock_login is now false by
-    default
-    
-    Thanks to Eric Dorland for the patch
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3311 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit bf9d6beaac8bd079d4cb77bd90711133f90d1f0d
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jan 3 08:59:14 2008 +0000
-
-    new patch for ruToken support
-    
-    Thanks to Andrew V. Stepanov
-    http://www.opensc-project.org/pipermail/opensc-devel/2007-December/010631.html
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3310 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 513a3dde0ab9f57275dc9267808bb8dbd1e7e5a9
-Author: pk <pk at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Dec 28 18:18:57 2007 +0000
-
-    support for TCOS3
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3309 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1667798217e60324ab649ab67019c6b03ac0c841
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Dec 21 16:40:27 2007 +0000
-
-    Remove unused code.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3308 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 743ecfe89e025a031842577b0112ee75608fcb86
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Dec 21 16:37:22 2007 +0000
-
-    Remove copy of Estonian eID ATR
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3307 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 27257f2278b4b9874fd8a26c1158a39cea6325c9
-Author: jps <jps at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Dec 19 09:58:29 2007 +0000
-
-    support for Siemens CardOS V4.2C
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3306 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit bb7bdc208f8158784155c2da8d33946cc945e35b
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Dec 17 13:47:25 2007 +0000
-
-    redefine trace macro to avoid compiler warnings when _DEBUG is not
-    defined
-    
-    rutoken-tool.c:107: warning: statement with no effect
-    rutoken-tool.c:165: warning: left-hand operand of comma expression has no effect
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3305 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0ecc294ed8bea00c712e90b0db3ea29eef935730
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Dec 17 13:39:20 2007 +0000
-
-    add support of ruToken
-    
-    Thanks to Andrew V. Stepanov for the patch
-    http://www.opensc-project.org/pipermail/opensc-devel/2007-December/010617.html
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3304 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4d098d96502cb8f5086b52182cf809986af79c2e
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Dec 7 09:46:21 2007 +0000
-
-    do not add a signature prefix for D-Trust cards
-    
-    Thanks to Simon Eisenmann for the patch
-    http://www.opensc-project.org/pipermail/opensc-devel/2007-December/010609.html
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3303 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d2bec293d2dd03178154885cfbc4d82aaaaacd97
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Nov 15 15:52:46 2007 +0000
-
-    gemsafe_init(): the applet supports also SC_ALGORITHM_RSA_HASH_NONE
-    
-    thanks to Douglas E. Engert for the patch
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3302 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 44b2d51385a5a1cae9f82f021a523a521c047042
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Nov 15 14:07:13 2007 +0000
-
-    gemsafe_flags2algref(): return 0x12 instead of 0x13 for
-    SC_ALGORITHM_RSA_PAD_PKCS1
-    
-    thanks to Douglas E. Engert for the patch
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3301 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4bf320b3044252e47ecc863ee210b4b6ca46f906
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Nov 13 09:38:18 2007 +0000
-
-    add support of /usr/lib/pkcs11/ directory. See
-    http://wiki.cacert.org/wiki/Pkcs11TaskForce
-    
-    Thanks to Alon Bar-Lev for the better patch
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3300 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 82253cd635fcbc30281b8e24c48827980cc98b15
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Nov 13 09:13:17 2007 +0000
-
-    sc_pkcs15emu_gemsafeV1_init(): remove addition of
-    SC_ALGORITHM_RSA_PAD_PKCS1 algorithm since it is already done in
-    card-gemsafeV1.c:gemsafe_init()
-    
-    Thanks to Douglas E. Engert for the patch
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3299 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 83cef7bfc0187721f5d5e47bb5532552c7304b7f
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Nov 13 07:52:43 2007 +0000
-
-    remove spaces and tabs at end of lines
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3298 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit acda677fd0e0fadf441109ad58eb9276b549d532
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Nov 13 07:48:08 2007 +0000
-
-    sc_pkcs15emu_add_pin(): do not devide pin length by 2 in BCD case since
-    it is already done in sec.c line 262
-    
-    Thanks to Douglas E. Engert for the patch
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3297 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 07e6b23a266f051666aa375b5cb6d43ad2d9cb3a
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Nov 12 10:18:54 2007 +0000
-
-    add initial support of Gemsafe applet V1 cards
-    
-    Thanks to David Mattes for the patch
-    http://www.opensc-project.org/pipermail/opensc-devel/2007-November/010558.html
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3296 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1eb6fba8824f2b8f34c688a1e890a81e114e6705
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Nov 12 10:16:31 2007 +0000
-
-    rename sc_pkcs15emu_gemsafe_init_ex() in
-    sc_pkcs15emu_gemsafeGPK_init_ex() and sc_pkcs15emu_gemsafe_init() in
-    sc_pkcs15emu_gemsafeGPK_init()
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3295 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f3a3fd6081f4a24ef46746026c729f7dfc4cc52d
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Nov 12 10:09:57 2007 +0000
-
-    rename pkcs15-gemsafe.c in pkcs15-gemsafeGPK.c
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3294 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 88ee3980e39043ac6885100e8823c39bea4a0ed1
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Nov 12 09:59:57 2007 +0000
-
-    rename gemsafe in gemsafeGPK so we can also have gemsafeV1, gemsafeV2,
-    etc.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3293 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ca92ec661f21482bd8f93448d5d8db893e27e55b
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Nov 9 08:35:23 2007 +0000
-
-    patch from Douglas E. Engert for bug #165
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3292 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit caf420709096a139ad840b0aff436172a4fe4aa9
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Nov 9 08:29:15 2007 +0000
-
-    setcos_match_card(): replace sc_error() by sc_debug() since some cards
-    are not SetCOS bug respond to the APDU: 00 CA DF 30 05
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3291 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f9476144182dcc1568518f436ec8e5368841902a
-Author: gurer <gurer at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Oct 6 12:03:47 2007 +0000
-
-    This should be limited too.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3278 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 57f7f6e6e5b5493e9fbf952a5c0d4c1fcacf2702
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Sep 29 07:43:25 2007 +0000
-
-    ignore paths with a AID in it
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3277 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5cdd93982dea3eb9490da559845eaf46fd1ebc52
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Sep 28 19:10:39 2007 +0000
-
-    the so-puk is optional
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3276 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ab94915277aea058f5cbe5bf547e6bfc36b79942
-Author: gurer <gurer at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Sep 27 18:19:17 2007 +0000
-
-    two new debugging commands.
-    
-    asn1 2f01
-    Dumps asn.1 content of a file
-    
-    apdu 00:20:00:00:04:31:31:32:32
-    Send the custom APDU inside the session
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3275 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3a0626fe08c0b3eb10f5f54022ca23693a8411b0
-Author: gurer <gurer at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Sep 27 06:24:06 2007 +0000
-
-    cosmetic patch
-    piv-tool and netkey-tool added to the svn:ignore
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3274 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4dd4d52921556812f9652cf65bdf097e775e2a81
-Author: gurer <gurer at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Sep 23 10:19:43 2007 +0000
-
-    AKIS can handle bigger data blocks, but that causes GET_RESPONSE calls.
-    So for a 300 byte file, this saves one transaction (244 + 56) instead of
-    (244 + 11 + 45).
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3273 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 780b4afe8a5fe469f486737f7750dc61855578d4
-Author: gurer <gurer at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Sep 22 20:47:04 2007 +0000
-
-    On a third thought, it is better to not introduce any confusion at all :)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3272 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit eada3a7e1cebd7a2f520071a1822a8ebc71c79ca
-Author: gurer <gurer at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Sep 22 20:34:53 2007 +0000
-
-    On a second thought, it is better to stay compatible with released
-    0.11.4 code, and still use ISO7814 pin_cmd.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3271 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3b470220510c5a3c3b92dbd5a44f29caf7a5e214
-Author: gurer <gurer at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Sep 17 11:41:28 2007 +0000
-
-    * instead of using a custom PIN VERIFY command, pin_reference is
-    reported back, and used for verifying.
-    
-    * PIN CHANGE command is implemented (that is really different
-    from ISO7816)
-    
-    * max_pin_len is set to 16 in akis_init
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3270 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 09be225b83c0637cbe52feb07823f6e0f2b5f519
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Sep 10 07:09:28 2007 +0000
-
-    cleanup *.tmp as well.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3269 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 833fae2a6b0b6a8913ad20f550dd3727c95cb876
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Sep 10 07:03:06 2007 +0000
-
-    Add code to check version information in several files. done by Peter Stuge.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3268 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 61769bfbeef8fb41e3ca3c3977f8af17f9a53958
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Sep 10 06:41:24 2007 +0000
-
-    Release 0.11.4 without changes.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3267 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit af9199b0592a4aaa86ff847c224578dd17ae8c26
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Sep 10 06:22:36 2007 +0000
-
-    Appy patch by magog to build a static opensc_a.lib on windows.
-    Also removes *.lib on "make clean".
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3265 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6882b13287f92f6c8ea0c1817075a829f0129d2e
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Sep 4 05:39:15 2007 +0000
-
-    fix typo found by Gürer Özen.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3264 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4d1871d74c4a0af471b789651ca2d787a6d653a6
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Aug 29 19:54:10 2007 +0000
-
-    properly check return value
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3263 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c2ee37e6c710b6e9311df47f0efa4c926098aa6d
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Aug 29 19:32:23 2007 +0000
-
-    bugfix: select DF before setting sec. attributes
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3262 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c25e4f765ccd4c9598bea77e0c63a9bb32a069a4
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Aug 28 20:35:27 2007 +0000
-
-    akis update by Gürer Özen: implement logout code.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3261 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 43b7391a940447ae1d30cd000fff25200c266dcb
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Aug 28 20:35:06 2007 +0000
-
-    fix typo, found by Gürer Özen.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3260 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 177ff402f33edfcaaf82a9400eb0d765c23fe442
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Aug 28 20:34:42 2007 +0000
-
-    fix typo, found by Gürer Özen.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3259 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 11ec3adace5db6a5189936849507d72d8a648fa4
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Aug 22 18:38:37 2007 +0000
-
-    mark supported padding and a comment - by  Gürer Özen
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3258 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f9b30e48c4d801694ef59912621a982dfb2afb00
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Aug 22 18:38:02 2007 +0000
-
-    fix typos, patch by Gürer Özen
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3257 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 26e2e5477f631052cae1894832fbf88b8e9f9e02
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Aug 20 20:20:35 2007 +0000
-
-    update version info for windows.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3255 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d27c1c1c36bed3c311d0cf9f06df01d7f2dafd7c
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Aug 19 18:55:44 2007 +0000
-
-    trunk now after 0.11.4 release.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3252 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 68dd0e1c3590c6c7ba162401f1e1b9d2cdd971da
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Aug 19 18:55:11 2007 +0000
-
-    Update news file.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3250 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5504092cd46192aedbd0dcf6db2ec01997d1ab93
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Aug 19 18:37:46 2007 +0000
-
-    update libassuan m4 macro package to current version.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3249 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 832e325ff779a314b4b97601401655d935874adc
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Aug 14 06:17:34 2007 +0000
-
-    fix typo.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3248 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3264588c3eeff766e50f4fffb3a69f4286813785
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Aug 14 06:02:51 2007 +0000
-
-    restores ability to change opensc-explorer debug level at
-    runtime, using "debug" command from opensc prompt. by Jakub Bogusz
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3247 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d68964c7f36d199860a4aa24339abbf2ccae4c63
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Aug 14 05:55:56 2007 +0000
-
-    keep libassuan as most users will not have this.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3246 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9a10cdeebdbd3efd02a73661d3b479dcf4089bc3
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Aug 13 19:10:26 2007 +0000
-
-    add cflags for ltdl.h where needed.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3245 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0cebca4ceb33fcfd3dda70d32add72c40bcdc3cc
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Aug 13 08:32:07 2007 +0000
-
-    the commands line tools do not call lt_dlopen() so do not need to link
-    with libltdl
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3244 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 345ce22c6345d238d3240dee988c1636e02ea193
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Aug 13 08:30:19 2007 +0000
-
-    use LTLIB_CFLAGS and LTLIB_LIBS instead of the global LIBS to find and use
-    libltdl
-    
-    thanks to Alon Bar-Lev for the patch
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3243 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit aeef9bae8970e70666bc67671fddd756dfceee5c
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Aug 10 13:06:50 2007 +0000
-
-    lib-link.m4, lib-prefix.m4 and lib-ld.m4 are provided by gettext but
-    is no more needed after revision 3239
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3242 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4b34601289fb011824c5a75b723c9afedad08ef5
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Aug 10 13:05:25 2007 +0000
-
-    pkg.m4 is an external dependency provided by pkg-config (or similar)
-    package
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3241 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 93b8784896e4a9d4dd3da66b23468c2d9d1722f9
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Aug 10 13:04:09 2007 +0000
-
-    libassuan.m4 is an external dependency provided by libassuan-dev (or
-    similar) package
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3240 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e23612f9adbe00e0cc72dd8613f231f5cf0cbfb5
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Aug 10 12:56:21 2007 +0000
-
-    do not use AC_LIB_LINKFLAGS() since this macro is provided by gettext
-    and we do not use gettext. Use AC_CHECK_LIB() instead
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3239 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f1e1ceafad20b05b69b0359cb5239e8317fa426a
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Aug 10 12:51:30 2007 +0000
-
-    propset svn:ignore to ignore unversioned files
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3238 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a7912a24260420adf99730b4529c2c3049aace5a
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Aug 8 20:06:53 2007 +0000
-
-    add information about cardos 4.2b - latest cardos update.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3237 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f7636ab5dbb9bac038cfdd13e0c078a5916254e8
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Aug 3 07:47:13 2007 +0000
-
-    Add same hack for Prime cards.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3236 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f0cbecfeb1278457ac0c871496efbb753cc06de4
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Aug 2 13:53:40 2007 +0000
-
-    AM_LDFLAGS is not used in libpkcs15init_la_LDFLAGS so explicitly use it
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3235 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c67c5fa70cd1f5e0b333f3b14480e8a2bdeafa2c
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Jul 28 18:27:25 2007 +0000
-
-    revert revision 3403 + 3404, seems to break mac os X.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3234 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7ea1d007919a387bf02d0beb3c0a1c137b05c695
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Jul 28 18:22:07 2007 +0000
-
-    pkcs11-tool crashes while printing its usage message.
-    fixed by Ville Skyttä.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3233 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8e37bfd68dd322971c47552c1d4907721a312c2a
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Jul 28 18:18:39 2007 +0000
-
-    cryptoflex-tool.c:505: warning: array subscript is above array bounds
-    gcc 4.3 warning, reported and fixed by novell:
-    Problem found by David Binderman
-    Patch created by Michal Vaner
-    closes our trac bug #153 and novell bug 238660
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3232 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e1002b91eb73b711e7c9b81f0f69b97d2073e5af
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jul 24 06:42:12 2007 +0000
-
-    fix a compiler warning.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3231 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 25e85b4cc9f5b5021451e278e26252ead62dd148
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jul 22 19:56:03 2007 +0000
-
-    Gürer Özen:
-    * akis_get_data() implemented
-    * akis_delete_file() implemented
-    * akis_set_security_env() implemented, pkcs15 signing works now
-    * life cycle set/get via cardctl implemented
-    * card_ops commented, so it is clear whether a function is supported via
-    iso7816 implementation or not
-    * mark pin apdu as sensitive in akis_pin_cmd
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3230 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 94c62b0b500b091497a6d103947172c9ce46d7fe
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Jul 21 07:31:26 2007 +0000
-
-    create plugin directory if it does not exist.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3229 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8875fe02963fa1bfcea7f1a25352f0550785e678
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jul 20 18:50:23 2007 +0000
-
-    add explicit option to enable/disable the ns plugin. patch by  Alon Bar-Lev.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3228 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c1130f7f93ba667eb290adbebfbad66a14d213ce
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jul 20 14:38:46 2007 +0000
-
-    oops, define tmplen at start of block.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3227 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a577a258132981f41596595f1109676503df99a3
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jul 20 13:47:17 2007 +0000
-
-    silence a warning we get with siemens cards.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3226 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d59917cd21276b029bdb88744ca674de16a97318
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jul 20 12:30:59 2007 +0000
-
-    asn1_decode_entry() allocates (objlen - 1) bytes for SC_ASN1_UTF8STRING
-    types with SC_ASN1_ALLOC flag, then calls the sc_asn1_decode_utf8string()
-    function which then fails with BUFFER TOO SMALL cause it wants to end the
-    string with an extra NULL.
-    
-    allocation size was supposed to be objlen + 1.
-    
-    Patch by Gürer Özen
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3225 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b757ff171929c310a69f4e9d4c2e1f3f87b4288b
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jul 20 12:28:43 2007 +0000
-
-    Gürer Özen send another akis update:
-    * create_file implemented
-    * EF(DIR) hack removed, it is easier to put a real EF(DIR)
-    * SC_CARDCTL_GET_SERIALNR implemented
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3224 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 14bc32dda23631d962284c1d7708757e456d3d45
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jul 20 12:19:27 2007 +0000
-
-    Sign by using the decrypt function.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3223 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 60e3e1e6832fc04e67276a513e0cb591b0dc2583
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jul 17 20:01:55 2007 +0000
-
-    add akis support by Gürer Özen.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3222 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit fc20adecbc68da46c042e262af892e04a0e5d25e
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jul 15 15:29:40 2007 +0000
-
-    Douglas E. Engert:
-    The IdAlly CSP calls C_FindObjectsInit looking for CK_PRIVATE_KEY before
-    C_Login with a pin. If it does not find any, it fails. The pkcs15-piv.c in
-    0.11.3 and 0.11.3-pre3 set the pubkey and prvkey objects as private.
-    This patch removes the SC_PKCS15_CO_FLAG_PRIVATE so IdAlly will work with the
-    PIV cards.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3221 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a974aba32c59da2d117efa94ad9a5b2185945158
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jul 11 14:47:26 2007 +0000
-
-    trunk is now post 0.11.3 release.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3219 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d5600d2035d689479d869355db210986781c0d7b
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jul 11 14:46:45 2007 +0000
-
-    more updates.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3217 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 486db2f58484faf04c9bd09923bed20b0c7bfe98
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jul 11 09:35:36 2007 +0000
-
-    put openssl rsautl in raw signatures mode.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3216 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c224b0c82469989f2dc821d919921b54eae7242d
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jul 11 09:15:45 2007 +0000
-
-    allow regression test suite to work installed as well.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3215 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e9b29d101982d4ccf59a36ab3988406d6b433e7a
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jul 11 09:10:57 2007 +0000
-
-    add test for decrypting binary data of key size.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3214 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0d4ee519763f5f816543493f23c7fc0b165d7bb3
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jul 11 09:07:33 2007 +0000
-
-    stop using p15dump, switch to pkcs15-tool --dump.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3213 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 80c70550c8fee42e264f95f57aa77a5d00d0d4e9
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jul 10 13:03:06 2007 +0000
-
-    document latest changes and update wiki export script.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3212 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 822242794709c04acc48ff39e024f7be686f1be3
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jul 10 12:04:31 2007 +0000
-
-    typo, manifested when explicitely using 'reader_drivers = internal;' in opensc.conf
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3211 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c6a54578fc1fb1880679eefdf7ffc1b31519f782
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jul 9 14:52:03 2007 +0000
-
-    use static without inline - the compiler can optimize the function as
-    inline or not, whatever it prefers. "static inline" is not supported by
-    the visual studio c compiler.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3210 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d7bde1e9e05be6c13b029b2fe47cacd4cbb781e7
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jul 9 14:17:43 2007 +0000
-
-    inline is something the compiler can decide on his own.
-    static is a good hint to the compiler for that - the function isn't used
-    outside of this file.
-    "static inline" is not valid, visual studio doesn't compile that.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3209 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ae627ca3ac3649a0fcbb2b0992b34615a8c55fbc
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jul 9 08:28:30 2007 +0000
-
-    Revert last change, breaks building opensc:
-    ../../src/libopensc/.libs/libopensc.so: undefined reference to `lt_dlopen'
-    ...
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3208 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 703edfb68ee53c35ae8803a83730a629ec86eaa7
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Jul 7 11:29:12 2007 +0000
-
-    improve atr matching for cardos m4.01[a]
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3207 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 174802aa56cd6a94d1b286dd3237851e8c6fb1ea
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jul 4 14:25:39 2007 +0000
-
-    Enables the second PIN (one-time PIN) defined for the same application DF
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3206 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2012f64ba2c7754336ca404362bd3495b3f3b00e
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jul 4 09:19:25 2007 +0000
-
-    add image files to release tar.gz
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3205 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d15326cf96603f87b0e3d590106c54ad8df18c13
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jul 4 08:55:50 2007 +0000
-
-    update the list of distributed .m4 files
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3204 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 70c7bb4dd1577ae51808c14eecce0a01f2e2038d
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jul 4 08:54:45 2007 +0000
-
-    libassuan.m4 is provided by libassuan-dev
-    pkg.m4 is provided by pkg-config
-    lib-link.m4, lib-prefix.m4 and lib-ld.m4 are provided by gettext but
-    should not be needed after revision 3202
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3203 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 69a5c1a843a46fcbd332c67e17147867d5e3813a
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jul 4 08:46:57 2007 +0000
-
-    do not use AC_LIB_LINKFLAGS() since this macro is provided by gettext
-    and we do not use gettext. Use AC_CHECK_LIB() instead
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3202 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a7f102fc2ee9a3270e3834a30da2491fb5c75f78
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jul 4 06:51:36 2007 +0000
-
-    update NEWS with list of all changes (that I remember).
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3201 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 87708593154ad96ac9e8d8dec5d066e0387db0b2
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jul 3 20:44:34 2007 +0000
-
-    add support for asepcos
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3200 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7c5fe33cfee55ac2d89819317774e19291dbcbf3
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jul 3 19:42:34 2007 +0000
-
-    re-add cardos m4.01a ATR
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3199 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4fcabecf9fb05783898af6ceb58bd6e70fe3b511
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jul 3 15:33:28 2007 +0000
-
-    PIN unblock error. Internal pin reference procedure updated.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3198 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit be022c16d357abb73e78db60113ef10a56045742
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jul 3 14:15:15 2007 +0000
-
-    fix version numbers preparing for next release.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3197 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit dea6f8b0909fdbdafdcb60c6bea48bb8ad79090a
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jul 3 14:14:58 2007 +0000
-
-    update pkcs11.h header file from scute.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3196 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 16c5ab4d5b17caa2e747960caf73b404aa90bd28
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jul 3 13:44:45 2007 +0000
-
-    Error when output allocation length is not equal to the signature length. 'Compute_signature' now returns the answer's length
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3195 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8c222a0b44fcce34d2807fa1d01830d5b6dd71a7
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jun 29 14:14:02 2007 +0000
-
-    remove unused definition.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3194 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit db600912c6e870fc9a47cf166e75a00047b1cae5
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jun 29 13:31:04 2007 +0000
-
-    fix duplicate static.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3193 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit cea32a801679a96fe80620d5dab0435c5727c68f
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jun 29 13:19:19 2007 +0000
-
-    make app_name, options and option_help static.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3192 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit fa12a3dd4f9ff9aee3aab154e63b4c0a0ce83dcb
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jun 25 18:01:26 2007 +0000
-
-    implement more flexible cardos detection func
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3191 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1069b4e01884ceb229bdc38d8da98fd0c48d013c
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jun 24 21:03:30 2007 +0000
-
-    Douglas E. Engert: fix more compiler warnings.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3190 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4ca4eba3653fb8c48f7ede4b0c3dd72cd094af53
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jun 21 13:58:38 2007 +0000
-
-    silence more warnings by gcc/sparse.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3189 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit be309330e58cc3deba0d45d6760c6dc6218215f2
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jun 21 13:46:08 2007 +0000
-
-    do not use global variables app_name, options and option_help so they
-    can be static
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3188 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b0bc6df80c74447b8df8f3dbc7273c1aaef9b824
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jun 21 13:38:16 2007 +0000
-
-    fix more warnings.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3187 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 209ee4500784a86c4eb58522520e4db93b049f3f
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jun 21 13:29:57 2007 +0000
-
-    eidenv.c:55: attention : ‘option_help’ defined but not used
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3186 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 41004ac43852b04a6c90af69ef9987ab7336a0fc
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jun 21 13:29:06 2007 +0000
-
-    initialize objs to NULL to avoid: pintest.c:83: attention : ‘objs’ may
-    be used uninitialized in this function
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3185 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2f66c5b87eeaec53e9503e19b6a87b39d3b0efe6
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jun 21 13:20:45 2007 +0000
-
-    correct a typo
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3184 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0c604cb294d6d8e495cf94da205a58c537f3957d
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jun 21 12:58:57 2007 +0000
-
-    silence more warnings.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3183 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c66889dc9eada895bba4b59ddc502877f727853d
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jun 21 12:14:50 2007 +0000
-
-    fix broken changes.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3182 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit de0ca913550a4d9c6d39e7463d2f2b4b7e649a63
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jun 21 12:06:33 2007 +0000
-
-    make sc_pkcs11_print_attrs non static.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3181 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4f0329cd18a3c751080aecbd61ef3feb172069ef
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jun 21 12:01:39 2007 +0000
-
-    silence more gcc/sparse warnings.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3180 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9c35397f50ff364a611d753283cd7adf2d3fff4b
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jun 21 11:34:08 2007 +0000
-
-    revert change - is needed by pkcs15-syn.c
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3179 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 047ee1d73e3510fd7e76f52672253921768dda3f
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jun 21 11:07:00 2007 +0000
-
-    fix more warnings found by gcc/sparse.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3178 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4acfe6b096dca3f7c76ef4aa9736db5b5c0f04fa
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jun 21 10:07:01 2007 +0000
-
-    fix compiler/sparse warnings.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3177 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4cc1a50a4966ca254c1428c9634ef1d362560947
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jun 21 09:37:18 2007 +0000
-
-    Alessandro Premoli:
-    add support for reading, writing and deleting private (require cache_pins) and
-    public data objects in PKCS11. updated the pkcs11-tool and fixed a few
-    bugs in the code. Tested on an aladdin etoken.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3176 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a4cd33e77f85835a8a147065ae2f4fed685c31a7
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jun 21 07:11:21 2007 +0000
-
-    Douglas E. Engert:
-    Looking at framework-pkcs11.c, it looks like there is a bug in the handling of
-    auth_count, if there is more then one pin, and one of the pins is a
-    SC_PKCS15_PIN_FLAG_SO_PIN.
-    
-    The for loop at line 767 will add a slot for each non SO_PIN or UNBLOCKING_PIN.
-    But at line 812, the auth_count is still set to the number of pins, even though
-    the SO_PIN did not cause a new slot to be allocated and thus the test of
-    hide_empty_tokens will not be used.
-    
-    With the attached patch, I can get the expected behavior when hide_empty_tokens
-    = yes in the opensc.conf from pkcs11-tool -L, pkcs11-tool -O and pkcs11-tool -O
-    -l
-    
-    There is only 1 slot allocated, the pkcs11-tool -O shows all the public
-    objects, and pkcs11-tool -O -l (after PIN) shows all the objects, and Heimdal
-    PKINIT still runs.
-    
-    I still think that if two or more slots need to be allocated for multiple auth
-    pins, then all the public objects should be added to each. I have an additional
-    mod for this too.
-    
-    Since the cards I am working with only have 1 pin, the attached mods works for
-    me. Note it looks like the pkcs15-openpgp.c might also be affected by this
-    change as it defines two pins an auth pin and a SO_PIN, much like the PIV card
-    does.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3175 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9946e237de1b09d4939448f354331a84b8e6f689
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jun 21 07:07:49 2007 +0000
-
-    Douglas E. Engert:
-    Major improvments in the PIV card modules:
-    * OpenSC-0.11.2 only supported RSA 1K keys, the patch supports RSA 2K and 3K
-      keys.
-    * The FASC-N in the CHUID object is used as the card serial number.
-    * A PIV card may have additional objects. These can now be read by pkcs11-tool
-      and pkcs15-tool.
-    * The p15card-helper.c module is no longer used. The code to call the
-      sc_pkcs15emu_* routines has been moved back into pkcs15-piv.c and uses
-      existing OpenSC routines to parse the certificate to find the modulus_len.
-    * pkcs15-piv.c will now get the modulus_len from the certificates to store into
-      the emulated prvkey an pubkey objects as they are being created using the
-      sc_pkcs15emu_* routines.
-    * The caching code that was added to card-piv.c in 0.11.2 is disabled, as
-      pkcs15-piv.c will cache the certificate using existing OpenSC routines.
-    * piv-tool will now print a serial number.
-    * The key-usage bits for prvkey and pubkey objects are set in pkcs15-piv.c
-    * The PIV "9E" key was added. It is not a private object, and can be used
-      without a PIN. It is used with the "Certificate for Card Authenticaiton".
-    * When used with the OpenSSL engine to generate a certificate request, the
-      public key saved by piv-tool during a "generate asymmetric key pair" card
-      command can be read from a file pointed at by the environment variable
-      PIV_9*_KEY. Where * is A, C, D or E.
-    * In the card_atr section of opensc.conf, flags = 20; can be used to only show
-      the PIV Authentication cert. This feature was in 0.11.1 but was dropped in
-      0.11.2 when the p15card-helper.c was introduced.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3174 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 20985fcfdc448e850c543c0bfa6a733911e3f7f6
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri May 25 20:10:34 2007 +0000
-
-    Added the application name to logging to allow for easier debugging. Since a
-    lot of testing needed multiple applications to be running, it became important
-    to know what application was making each log entry.
-    This was reported by Russell Larner <rlarner at rsasecurity.com> on 5/17/2007
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3173 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6c324049e780a4c3d65e6eaf6e5820aee4c211f5
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri May 25 20:09:11 2007 +0000
-
-    If a PKCS11 get attrribute failes for some reason, pkcs11-tool may return
-    garbage along with the error message. The attached patch to pkcs11-tool.c
-    initializes the type to 0 so the attribute will be 0 in case of an error.
-    by Douglas E. Engert
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3172 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f065546ccd589568bce8b043b73fd394d61ddb40
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri May 25 20:06:59 2007 +0000
-
-    The framework-pkcs15 will filed the modulus in a certificate and copy it to a
-    pubkey or from apubkey to a privkey object. But it does not copy the
-    modulus_len.
-    
-    This patch will look at pub_info->modulus_len and prv_info->modulus_len and
-    copy the modulus_len while copying the modulus.  This will be used with the
-    pkcs15-piv code when it creates pub and priv objects, as it has no way other
-    then from the certificates to know the modulus_len.
-    
-    By  Douglas E. Engert.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3171 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a8908b8548e02d320376844b3d9668f0f89b3c29
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun May 13 15:43:22 2007 +0000
-
-    252 bytes work as well
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3170 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit dee4faea64422f4595079a570abbdcbd318ad247
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun May 13 09:32:13 2007 +0000
-
-    fix warning
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3169 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 37157f38eec21c5eb2d376706d3e896ea932eb0c
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun May 13 09:31:46 2007 +0000
-
-    bugfix: try to read at most 248 bytes
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3168 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8135be4166282bbffb34f07cb3417320c7a019f3
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun May 13 09:30:53 2007 +0000
-
-    bugfix: avoid recursion
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3167 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b5df8166844fd7bd32cf90b8b4599b07683d5e69
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri May 4 07:13:04 2007 +0000
-
-    fix wiki html export.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3166 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 60195aa9bfffa563aaffb4eb5bd758c426fc634f
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri May 4 06:17:54 2007 +0000
-
-    add date for 0.11.2
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3163 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 36d0cf2301f43febf089e5a944d3b849a0daf792
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 25 06:53:45 2007 +0000
-
-    probe for readline+ncurses too.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3161 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d08da294185cb55d1fe6a4b867ab6d671bb6c034
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 24 07:59:13 2007 +0000
-
-    update NEWS with latest changes.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3159 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e3935077e1b6c2a9b2131ffdf185084e1a023fae
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 24 07:54:18 2007 +0000
-
-    enable pin caching by default.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3158 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c3438ef4ff8300a09a536b38a9de811a04dc567f
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 24 07:52:27 2007 +0000
-
-    use 255/256 bytes as max_send/recv_size by default.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3155 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1645684fd5153f20e72187a878ad9d6c8c3d84ff
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Apr 23 19:23:51 2007 +0000
-
-    increase size of pin buffer
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3153 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 41999694611c988e9948781097ef87f5b2a91725
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Apr 23 19:18:46 2007 +0000
-
-    authenticate if data object is protected
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3151 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 91109128c059d8035e8b6337970d1364c1681447
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Apr 15 17:26:42 2007 +0000
-
-    request at most for 256 bytes
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3149 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c3fcd9f7dd9e510cebf34a3b514d40b7e2b75aa0
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 10 19:49:26 2007 +0000
-
-    Steve Jacobs: fix muscle driver.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3148 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ef7d8ffa864f4223c4949c4e374cb616a6ac9ad6
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Apr 1 17:03:08 2007 +0000
-
-    bugfix: don't use the size of a void pointer, thanks to Carl Przybylek <crprzyby at gmail.com>
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3146 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d0a0103c70c0531fc8802b1141f406125a4f941f
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Mar 29 10:25:16 2007 +0000
-
-    Build a pkcs11 module with only one pin exposed to overcome issues described in #132. Closes #132
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3145 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 60b4570531bc6f2c86dddf7fe34b7b0985616513
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 21 09:41:08 2007 +0000
-
-     * Add support for SCARD_E_NO_READERS_AVAILABLE to describe errors like:
-    {{{
-    sc.c:201:sc_detect_card_presence: returning with: Unknown error
-    SCardGetStatusChange failed: 8010002e
-    }}}
-     * When doing a reset with pcsc_reconnect do a cold reset instead a warm one to allow next change
-     * Change the protocol force feature to change the protocol with a hard reset only when needed to prevent:
-    {{{
-    SCardConnect failed: 8010000f
-    card.c:228:sc_connect_card: returning with: Unknown error
-    }}}
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3144 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit fa272faf68801ee3cc4400e94e9f8b0e615cd35b
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 21 09:34:10 2007 +0000
-
-    Missing file
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3143 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5dba2033639c91171f4e349d15092486a7b2d080
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 21 09:33:40 2007 +0000
-
-    Make sure the right thing is always selected on the card by bypassing cache
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3142 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 62d2d6cbe06c30ca0fa1fb40c296e9538bd1518d
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 21 09:32:36 2007 +0000
-
-    Simplify esteid detection
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3141 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e7d88163ea38f41057703064043f4a0266ffec5b
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Mar 18 17:55:15 2007 +0000
-
-    fix --serial option.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3139 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b9b9d81bbfb148fd7e0ac17e7d8e44019c62ff8a
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Mar 16 20:44:35 2007 +0000
-
-    changes to trunk won#t go into 0.11.2.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3137 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d530108e7e55fa96430df777a98376fc81fa73d6
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Mar 16 20:42:51 2007 +0000
-
-    document changes in this release.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3134 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e7c0443d858b0d55651d91af5782e46463c621d0
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Mar 15 07:59:01 2007 +0000
-
-    remove <link linkend="foo">Foo</link> that can't be solved and generates
-    Error: no ID for constraint linkend: foo
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3133 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 38b9a8091fce6f452a2691c3a93b410352e5556e
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 14 18:26:37 2007 +0000
-
-    add missing header file to noinst_HEADERS.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3132 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 74610a8fdfec5760327742ba6b2dfa274c31d4a7
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Mar 13 23:10:54 2007 +0000
-
-    Ian Young: use proper card type for acos5.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3131 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 25f8509fc1672e3fe11293018dcd811fc9ee5e63
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Mar 13 20:59:15 2007 +0000
-
-    Douglas E. Engert:
-    piv-tool needs openssl, so compile only if it is present.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3130 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1ca622b7f79c033ef55865237176f20a4e49164a
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Mar 13 20:57:55 2007 +0000
-
-    Patch by Douglas E. Engert:
-    use c style comments and different header files (for mac os X?).
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3129 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 97f2569f14e20fa49dbfc01a417cc668d14d9abf
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Mar 13 13:38:24 2007 +0000
-
-    Add acos5 driver by Ian Young.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3128 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 39b5c4239757ea6bdcedd1bb8bf09b1cef052c52
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Mar 12 20:17:29 2007 +0000
-
-    test new chop size (256 bytes by default).
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3127 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit eab8ade2ec923bd239f021546221cf82144ee1e1
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Mar 12 20:15:39 2007 +0000
-
-    changes by Douglas E. Engert:
-    change the do_decompress* to sc_decompress* and the initialize_* to
-    sc_pkcs15emu_initialize_* in the new code.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3126 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c6954a9c333087034c94d3ef460487eecb90160c
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Mar 10 10:46:32 2007 +0000
-
-    full piv update by Thomas harning Jr. and David E. Engert,
-    adding compression etc. Also enables opensc to be compiled
-    with and without zlib support.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3125 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7d00cf350f948ec07900067bf4f30640db82e5d8
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 7 21:26:47 2007 +0000
-
-    don't set max send/recv size per defaults. document how to find
-    out if there is an issue.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3124 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d7758e6c0552cf618c95786d766b9b086c9db76a
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 7 12:39:52 2007 +0000
-
-    after Douglas Engert's remarks on the coding style
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3123 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9e33d45edb65000a2026c163dbb9ca00d81b8001
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 7 09:38:01 2007 +0000
-
-    some ACLs was forgotten; i compute_signature() le should not be more then 256
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3122 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7ce5aa3b135fe927aa02b6881c76d1a84c4efcaf
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Mar 5 17:30:35 2007 +0000
-
-    change inappropriate oberthur profile
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3121 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 282000fbae5eb998ea754171c3b5b1ef477a5425
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Mar 3 20:24:55 2007 +0000
-
-    update Giuseppe Amato email at his request (he is no more working for ST
-    Incard srl)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3120 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1a26ba3d66b13e012c211de29155d67ef4776923
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Feb 9 11:08:11 2007 +0000
-
-    Include files from [3113]
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3119 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 45f5fcea0ee866f79729cbc58a3a7bbc1c5322d2
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Feb 6 14:29:45 2007 +0000
-
-    comment out static and unused functions (sc_pkcs15init_read_unusedspace,
-    sc_pkcs15init_update_unusedspace, merge_paths,
-    sc_pkcs15init_add_unusedspace and sc_pkcs15init_remove_unusedspace)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3118 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d7a55bb423e71196798c6de19879e6969f97b53b
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Feb 6 14:20:44 2007 +0000
-
-    correct 3 warning: unused variable 'entry'
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3117 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 71bef700bfcf025ab8a9c40f0a6b507dcbccbb9c
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Feb 6 14:17:02 2007 +0000
-
-    use SCARD_SCOPE_USER instead of the pcsc-lite specific
-    SCARD_SCOPE_GLOBAL
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3116 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a2f622a21521cb350541894d80e3266b5f2f5612
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Feb 2 22:15:14 2007 +0000
-
-    implement support for SHA2 (still experimental)
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3115 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1b4472ca9faf02632c512a6e951477ece7eb8096
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Jan 20 12:46:40 2007 +0000
-
-    use const, add yet another ACL
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3114 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8cdd0810c7f6a6f68b2d68c1f1de3b80dc2b6097
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jan 19 21:10:24 2007 +0000
-
-    conditionally check 2048 bit rsa key ops
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3113 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 139ff4c39c7ffac2c7b0277e8aa7452234f5453b
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jan 19 21:08:20 2007 +0000
-
-    check key size, set so-pin ref
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3112 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4c72646a355d723291569bef906fa0a3c981984a
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jan 15 20:32:58 2007 +0000
-
-    increase pointer
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3111 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 49fe6b516362957f1e818a057bfacfc8d7dbd40e
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jan 9 21:16:52 2007 +0000
-
-    undo last change: converting a binary file to utf-8 isn't really a good idea ;-)
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3110 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0ccd6daf8dd2ea47bde266102d3ce17cf7e89093
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jan 9 19:41:05 2007 +0000
-
-    improve get_response logic: try to read at least as much bytes
-    as indicated in the 0x61xx response.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3109 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6e32cb6e846be0d4623626814ae3fda19996d66a
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jan 9 07:22:58 2007 +0000
-
-    improve atr masking code - also mask atr to match.
-    and add more debugging messages.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3108 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 05929291054072483d027ffe9ff6c6b813274a0d
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jan 8 21:10:07 2007 +0000
-
-    remove unnecessary assertion
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3107 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1d1b8779e3d3d602914b56b1cb9d37e60445078f
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jan 8 20:19:10 2007 +0000
-
-    use EVP API for DES encryption
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3106 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3db0036e8d497434b050fc8a8bffa6476c6da426
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jan 8 17:04:39 2007 +0000
-
-    use EVP api for DES encryption
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3105 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1bee8bf5c6711f8b21d2f1134586139d35bac9d3
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jan 7 23:40:44 2007 +0000
-
-    off by 1
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3104 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 30d0066a58c50be64562982b9da54c136daaae36
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Jan 6 16:35:38 2007 +0000
-
-    Stop MS visual studio 2005 complaints.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3103 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2e1c80f3fef9c6e6fd541a73907f5fcd33f152bb
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Jan 6 13:23:52 2007 +0000
-
-    use EVP api
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3102 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 83862fc35603c68000710e32e11cb36a4b32c0d5
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jan 5 16:36:33 2007 +0000
-
-    Properly set the defaults for pcsc reader options even if no configuration file is found/available
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3101 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f747fc0c2875a33c4807235b9f115ae80586ce50
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jan 5 16:25:31 2007 +0000
-
-     * Add a few debug lines
-     * Remove the locked status from the reader no matter what SCardEndTransaction thinks - either the card was removed or broken pcsc allowed to reset the card while in a transaction (pcsc-lite before Oct. 2006)
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3100 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9f1d63a56c2c8860adf6b503be107064cf434481
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jan 5 16:20:50 2007 +0000
-
-    Allow to specify at compile time that a card will work only via pkcs15 emulation. This way no matter what is
-    configured in the config file (try_emulation_first option) the card is usable via pkcs15 tools.
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3099 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 779326b9e51de07a4c260b5c29e351c304b018dd
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jan 5 16:13:46 2007 +0000
-
-    Match EstEID based on ATR contents rather than the full ATR itself.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3098 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 210bb4a5aad05114ed457130d20e8e28cd8546f0
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jan 3 11:44:24 2007 +0000
-
-    change encoding
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3097 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 58b193164090f18d5c0f06ef8ab6d7300ce846da
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jan 2 10:06:32 2007 +0000
-
-    prepare Oberthur card support for secure messaging
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3096 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 02215882f3356512a1e8298faacefe7572f691ff
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jan 2 10:06:02 2007 +0000
-
-    prepare Oberthur card support for secure messaging
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3095 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0d0048e5ad05007feb7fb0f4245cc777ed5dc7a7
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jan 2 10:04:35 2007 +0000
-
-    introduce SC_PATH_TYPE_FROM_CURRENT and SC_PATH_TYPE_PARENT path types
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3094 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit dad82e19d7a49ff1efef946642fc2a4a1f1e6bb5
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Dec 29 09:44:13 2006 +0000
-
-    only the first apdu (command) tells us how many bytes we need to get.
-    we need to keep this value and call get_response as often as needed
-    to get them part by part.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3093 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d08c8344ecf5fd3d2b0fb1bf712946970a62cd20
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Dec 22 12:43:00 2006 +0000
-
-    encode max pin length as well
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3092 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1a9d5290f1264b663c6af9344c135e40b2a26146
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Dec 19 22:11:07 2006 +0000
-
-    kill warnings.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3091 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit db0a552d7b3afedd7b1e465dc1a0058640de302d
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Dec 19 21:35:42 2006 +0000
-
-    convert to utf-8.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3090 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f76ec85facbc61e06c88823b125b5207cfd0f398
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Dec 19 21:34:49 2006 +0000
-
-    replace with an ascii test string.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3089 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9287da54da0a1bc6bfe2fac57e5134277434e7d3
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Dec 19 21:34:00 2006 +0000
-
-    convert to utf-8.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3088 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 61c4acc14181dbe9dc328034f4cb582817f17945
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Dec 19 21:33:40 2006 +0000
-
-    convert to utf-8.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3087 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5db87927d4ae4dbe316bad9e83d841fa178c62e0
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Dec 19 21:33:15 2006 +0000
-
-    convert to utf-8.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3086 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ad798221343c6ac6e440820c6ecf72a9bf14d407
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Dec 19 21:32:31 2006 +0000
-
-    convert to utf-8.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3085 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b3ad2f9dd2245ed185a8a716c2ef35018db7c486
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Dec 19 21:31:17 2006 +0000
-
-    convert to utf-8.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3084 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d8544a12eaf2b9c45ef8b1709e3c8e143d9ef568
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Dec 19 21:28:59 2006 +0000
-
-    convert to utf-8
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3083 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 86a90a272e48f56e510e0b52abaa2a78b8ab8dd1
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Dec 19 21:28:40 2006 +0000
-
-    convert to ascii.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3082 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 11064cff899b65d4e6eeb852040c4ff776c0e263
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Dec 19 20:48:56 2006 +0000
-
-    convert to unix style line ending.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3081 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 38720ba5e10d2d59cf1077adb73eb7dfa0a846d1
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Dec 18 21:58:16 2006 +0000
-
-    update to latest muscle code.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3080 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a157eebec55e6008ddff2370146d7065839ee6bc
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Dec 18 21:34:49 2006 +0000
-
-    apcos driver is not yet commited.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3079 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5977ce4f21729201d372e71b797815bce4715b3c
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Dec 18 11:23:42 2006 +0000
-
-    pad only if necessary
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3078 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c3fbf281b3c086099d2a9c1bfeaca403f008acb1
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Dec 18 11:22:51 2006 +0000
-
-    remove comment
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3077 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0199dfa29b96db8025e3ac73d7ee374d87c375c9
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Dec 18 11:22:22 2006 +0000
-
-    use net size if available
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3076 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d537651ab76e6ab649d62e7e9112912a7090f04f
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Dec 18 07:42:06 2006 +0000
-
-    update to latest pkcs11.h version.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3075 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f23ddbdba19f343868cf39f804c27a12c7aa5f3a
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Dec 10 13:33:34 2006 +0000
-
-    make it work with my compiler, add missing parenthesis
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3074 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9aa18ea1cebaef18ce1da8faed268b2a977f63d5
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Dec 10 07:57:22 2006 +0000
-
-    update to latest pkcs11.h from Marcus.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3073 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4857be57d4d78779909624269dae2535bede55c3
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Dec 9 15:46:26 2006 +0000
-
-    Alon Bar-Lev: enables disabling the linkage of pcsc-lite and openct,
-    even if they are installed on system. It adds --disable-openct and
-    --disable-pcsc-lite options.  Also a minor correction for pkg-config
-    (adds PKG_PROG_PKG_CONFIG).
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3072 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 44d54b68dd2dbdbe2b3c3f6ebf7faa6860532555
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Dec 9 15:41:27 2006 +0000
-
-    pkcs11.h with updates from Alon.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3071 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 462cd0defc3df4c7e9985b72d166f271c93ba76d
-Author: jps <jps at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Dec 8 14:56:09 2006 +0000
-
-    Initial support for SetCOSXpresso (GemXpresso R4 with EID 2.x applet)
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3070 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 31f4fada5bc8d7a781545036f1613bd00ffa1498
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Dec 7 10:53:37 2006 +0000
-
-    define these constants where used to kill warnings.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3069 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5610edfc2fd8e6b2fec077b286d48d88245b629d
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Dec 7 10:35:40 2006 +0000
-
-    Thomas Harning:  patch to fix the MuscleCard driver to work in the
-    case of forced drivers.  drv_data is used as a flag so that muscle_init
-    knows if the applet has been selected during initialization.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3068 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b3822c349b9b4c3e837298cd0d1e333faa09a604
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Nov 30 08:14:16 2006 +0000
-
-    update the MuscleCard driver for OpenSC to use an msc_id struct rather than
-    int/bytes and messing around with byte-swapping for that. (by Thomas Harning)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3067 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b9daff9b2887ab3b2dee7075a001f3d63d93c2ac
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Nov 30 08:11:58 2006 +0000
-
-    replace rsa pkcs#11 header files with rewrite.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3066 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f7dc1aa46b036c17d934f0d50a03efeb41ad7e31
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Nov 28 15:54:31 2006 +0000
-
-    remove now useless (see revision 3062) --enable-debug option
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3065 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ff5f55417f3b927eebb8ec89b8191e43db85a9f8
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Nov 28 11:54:51 2006 +0000
-
-    Have equal number of sc_lock and sc_unlock loglines to aid debugging locking.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3064 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 66f3d64e5a15bb79e2d886184ecad86ebb0c06c9
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Nov 28 11:53:57 2006 +0000
-
-    Remove unused headers
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3063 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7164006b44a83f8ad855b62638a9ac24d416dcf5
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Nov 23 22:40:01 2006 +0000
-
-    enable APDU logging again
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3062 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6b40cf4caa13ed804736e40c140d7112185a5cf1
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Nov 22 19:27:52 2006 +0000
-
-    remove unused variable, cleanup
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3061 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9be468b3a8ea9c5b27262481efb3c1d898139075
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Nov 21 22:10:11 2006 +0000
-
-    try to read at most max_recv_size bytes in GET RESPONSE
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3060 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 47441219157abcbfe21722480e22a4788d7c6b8b
-Author: pk <pk at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Nov 18 00:05:48 2006 +0000
-
-    Support for DATEV smartcard classic
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3059 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9abf0cc841897d86f367c98048ee0ec1ea4b91cc
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Nov 17 11:50:41 2006 +0000
-
-    size_t is 64bit on 64bit plattforms, thus use %ld and convert to unsigned long.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3058 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 28c6c1ebc11c61a468731827fc9536886bb14208
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Nov 12 21:01:01 2006 +0000
-
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3057 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4f1bdbe99dbf84d88ca26d7f0d27b1b8323e39cd
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Nov 11 11:47:48 2006 +0000
-
-    fix typo
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3056 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 651d2c554dad0f5a2f37e3e3c537dcfee1faf4e4
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Nov 11 11:46:36 2006 +0000
-
-    remove useless code
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3055 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c208794ca80efb5bbf4577a2a4c13a162b9fab76
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Nov 11 11:09:57 2006 +0000
-
-    check types before concatenating paths
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3054 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ed2c784d44b159b84318264328f2594300bff9ae
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Nov 10 23:07:45 2006 +0000
-
-    update; patch supploed by Douglas E. Engert <deengert at anl.gov>
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3053 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4e401b6c0655c8027f49b22b391b3dacf3628a41
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Nov 9 21:26:19 2006 +0000
-
-    fix typo
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3052 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1a32d02926ad399c31b82f2db711fca1061992f0
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Nov 9 16:05:55 2006 +0000
-
-    Fixes #17
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3051 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2d4bd463b0df3faa3c0d6b857bf7a2202f54e31e
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Nov 6 11:15:09 2006 +0000
-
-    Use do {...} while(0) construction for SC_TEST_RET, SC_FUNC_RETURN and SC_FUNC_CALLED defines
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3050 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7da8984462fdea1bda6403b86cac2209c72a5382
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Nov 2 13:58:58 2006 +0000
-
-    set path type; patch supplied by Thomas Irlet <iksiloev at gmail.com>
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3049 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 71aab076aabb551e6510ed79b9b07d87464df132
-Author: vtarasov <vtarasov at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Nov 2 09:19:17 2006 +0000
-
-    When forgetting PIN set to 'null' the corresponding named_pin's entry
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3048 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ef012c94f58deb33fc763a34260fc242564c7ec6
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Nov 2 06:55:29 2006 +0000
-
-    Thomas Harning: sc_list_files doesn't return the length of the
-    applicable buffer, but instead the # of files. Fixed.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3047 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1c78d9e6888fb83e9ee6efd29842148c391fcbbe
-Author: pk <pk at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Oct 31 17:29:19 2006 +0000
-
-    Netkey E4 emulation
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3046 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 01f72933aff58ee0cce67178c3cbecc4f961cb97
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Oct 30 18:51:48 2006 +0000
-
-    add support to parse the seInfo TokenInfo entry, improve aid support in opensc-explorer
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3045 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e1cba3e8e2ffa854fe562807a4418b534addd9a3
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Oct 30 11:54:38 2006 +0000
-
-    Remove invalid documentation, addresses #95
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3044 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit bd753c4967b74b93d1f6e435556d022e99a30155
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Oct 30 07:37:44 2006 +0000
-
-    use the OPENSC_DEBUG environment variable to overwite the configuration
-    variable debug in opensc.conf
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3043 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 821a009609a0c0e66232b23125cb20b7ee77b961
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Oct 9 15:09:44 2006 +0000
-
-    New EstEID v1.5 card ATR
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3042 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 07b7abdccd003ff6d4b7bea3c52832b12423c942
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Oct 4 07:00:15 2006 +0000
-
-    c_asn1_toki[]: the serialNumber field is not mandatory in ISO 7816-15
-    see
-    http://www.opensc-project.org/pipermail/opensc-devel/2006-October/009025.html
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3041 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 65658db6e4d3bdc89d133755b99316d3a62df68a
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Oct 2 17:26:48 2006 +0000
-
-    make the decision which locking functions to use more explicit; patch supplied by Martin
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3040 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e2dea71ad4070c80cbe91a3d570fc921e26738be
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Oct 2 16:49:26 2006 +0000
-
-    restore backward compatibility: try READ BINARY in case of a unknown file type
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3039 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4a296307acc900d5e9860a1aa7ae9ec297466e6d
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Oct 2 13:46:00 2006 +0000
-
-    c_asn1_ddo[]: the oid field of the DDO is not mandatory in ISO 7816-15
-    See
-    http://www.opensc-project.org/pipermail/opensc-devel/2006-October/009022.html
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3038 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b8e96bb53bd7c6f777a4f476c6b6abeb8bc50942
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Oct 2 10:39:55 2006 +0000
-
-    update doc
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3037 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 45e22aa7be3cf04dae596fb20265f45e9b71016b
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Oct 2 10:34:57 2006 +0000
-
-    add the possibility to read the pin from stdin
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3036 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit aeae39f47de731cad6f30ac2cf9854b6e0917e8f
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Oct 1 20:52:37 2006 +0000
-
-    fix warnings
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3035 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7c823d89cad571207a3431d7d2fe142e8d1ce8cf
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Oct 1 20:39:53 2006 +0000
-
-    fix warning
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3034 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a946dc98bf55644805062012f79bb36b9278cab8
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Sep 27 22:10:12 2006 +0000
-
-    set CKF_USER_PIN_INITIALIZED only if we really have a pin object
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3033 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1ac9b2aba18e3cc048e1772836c22669a964fe9e
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Sep 27 12:02:02 2006 +0000
-
-    sc_pkcs15_make_absolute_path(): a 0 length path stays a 0 length pat
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3032 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 45fc35051371ebc64abe762b5e95843ae8b07ba4
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Sep 27 12:01:31 2006 +0000
-
-    iso7816_process_fci(): dump the filename in Hex + ASCII instead of just
-    ASCII in the debug log
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3031 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 11779dce600486b88d69f90d0498faec4112de1c
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Sep 26 18:17:14 2006 +0000
-
-    fix apdu
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3030 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 636f6942915a33a5aeddc55442b9fa364624d774
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Sep 26 18:01:03 2006 +0000
-
-    check if the ef type is in range; thanks to Thomas Irlet
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3029 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b45617c4513a53ea684e1948098427f3a1bdb0f8
-Author: henryk <henryk at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Sep 26 10:55:02 2006 +0000
-
-    Make absolute paths from all paths read from the PKCS#15 directories by prepending the DF(PKCS#15) path if necessary.
-    Fixes compatibility with Siemens HiPath SIcurity formatted cards which use relative paths.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3028 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 12c6b11bddb9e555a8ee9ccd5789cdd2307925c2
-Author: henryk <henryk at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Sep 26 10:43:28 2006 +0000
-
-    Fix handling for SIMPLE-TLV records with a three-byte length
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3027 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 325b9480ea9e12d8bd68db5a3264e270785fb8e8
-Author: henryk <henryk at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Sep 26 10:36:35 2006 +0000
-
-    opensc-siemens.diff
-    Adds support for record-oriented files in linear variable, simple-tlv format.
-    TODO: Add support for all the other file formats, too.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3026 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5a0e1849d53ffebf9e867552ac7b81a1c8ccfb33
-Author: henryk <henryk at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Sep 26 10:31:03 2006 +0000
-
-    Make do { ... } while (...); into while (...) { ... };.
-    Fixes behaviour with empty files.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3025 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f087a937ff699c6cc06162db9cc67c2381c41e7f
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Sep 24 14:05:06 2006 +0000
-
-    implement workaround for the Taiwanese id card
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3024 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8d38746c284fadce9d7a38ee5aff46b1b73ed301
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Sep 24 12:50:41 2006 +0000
-
-    keep index and count parameters
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3023 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit bf389495a891a413bea65ad6c7eea33bac4fcfb4
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Sep 22 14:34:51 2006 +0000
-
-    add starcos spk 2.4 ATR
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3022 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit eb3b27709ce64820cb71e58891b32de7b9691875
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Sep 22 14:18:22 2006 +0000
-
-    bugfix
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3021 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 91912bab20b7b3c818023ee266208b97a2e0b68d
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Sep 20 13:33:50 2006 +0000
-
-    scconf needs strlcpy too.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3020 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d2e004d09b70c41ad21b025de244fd9062b7be9a
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Sep 20 12:32:59 2006 +0000
-
-    ntohl is in ws2_32.lib / dll.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3019 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a39e3824e4a598df7d338e0c4caec0f323a47d12
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Sep 20 12:10:05 2006 +0000
-
-    don't forget part10.h (only used on windows I think).
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3018 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a127dd93ef1b8fd39655483df7138aeecf8dd27b
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Sep 18 05:30:41 2006 +0000
-
-    add option to write data objects; patch supplied by Cornelius Kölbel <cornelius.koelbel at lsexperts.de> et. al.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3017 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1104e92bdef3e97ee79dee61b14cdce134fc739e
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Sep 17 18:34:52 2006 +0000
-
-    remove check for T0 as it seems to work for T1 as well
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3016 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b4f8b149ee198f3665c75c44fb7b15283773e09f
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Sep 14 12:56:06 2006 +0000
-
-    use <option></option> for command arguments
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3015 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f4742772a73e64ba422b4cdf2360b34ec7368127
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Sep 14 12:46:45 2006 +0000
-
-    using --pin with set --login
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3014 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 35d3d51d478e2134a8a9184bf652eb2858d3c864
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Sep 14 09:17:16 2006 +0000
-
-    explicit that --module is to load a "PKCS#11 module (or library)" not
-    just a module
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3013 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3e2e82dde92a1782a37b07aeb13d4ba14f3e3346
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Sep 14 08:55:06 2006 +0000
-
-    C_GetInfo(): use "OpenSC (www.opensc-project.org)" instead of
-    "OpenSC Project (www.opensc-project.org)" for the manufacturerID to
-    avoid a truncation at 32 characters
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3012 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b1a87b6fa5f90b6b2f241445a7e61361916937a7
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Sep 4 20:01:20 2006 +0000
-
-    Make sure every new opensc instance sees the card from the sight starting point.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3011 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3fab062b09c8df360c36e280b1e3e053b0d92d03
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Sep 3 15:58:36 2006 +0000
-
-    Update for [2836] chganges.
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3010 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 198b68a6d3d0afee69273cc4ee04772ce318a438
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Aug 27 18:25:43 2006 +0000
-
-    shorten string, fixing #98.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3009 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d555218152e501a2c2f9625e801058ea71e95ac1
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Aug 19 08:44:22 2006 +0000
-
-    fix typo
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3008 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit adc082b95736477e9858423a20e8f6ec123b504f
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Aug 16 16:36:00 2006 +0000
-
-     * Fix endianness for PCSCv2 part 10 IOCTLs
-     * Add support for start/finish style IOCTLs
-     * Add support for the same pinpad functionality on windows
-    
-    Some code from Robert Konklewski and Ludovic Rousseau
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3007 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4608716c53f71ae8c4f19fa9641f65886bc15000
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Aug 13 21:20:05 2006 +0000
-
-    Douglas E. Engert:
-    Change PKCS11-Spy so it looks in HKEY_LOCAL_MACHINE, before
-    HKEY_LOCAL_USER.
-    
-    This should not cause any problems, as the HKEY_LOCAL_MACHINE,
-    "Software\PKCS11-Spy" would not normally be set, accept while
-    the sysadmin of the machine as trying to debug a login type problem.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3006 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit aec987df38c4286790856fce1402ead70e01bfa1
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Aug 3 21:05:59 2006 +0000
-
-    build fixes for win; patch supplied by Douglas E. Engert <deengert at anl.gov>
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3005 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b5dbdd947593481d0855bf9c9b0f4d2fcf0c15d9
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Aug 2 19:43:13 2006 +0000
-
-    fix warnings
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3004 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 42ad6be451632f0e8d0ba9d1a113b8ed6cfe313f
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Aug 2 19:31:34 2006 +0000
-
-    win build fixes; patch supplied by Douglas E. Engert <deengert at anl.gov>
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3003 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 81fd37e61750eeb086125ab7e5794f3ce714d09f
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Aug 1 18:49:08 2006 +0000
-
-    fix sc_compare_path_prefix(); patch supplied by Henryk Plötz <henryk at ploetzli.ch>
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3002 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0037ceb09c933b1e17b44bc19e86712b2c8a6901
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jul 23 08:02:37 2006 +0000
-
-    check the value of the pin type before accessing the array; patch supplied by Henryk Plötz <henryk at ploetzli.ch>
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3001 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit aaa71dd46a771fa33430240141eb1c15887f7588
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jul 18 20:37:07 2006 +0000
-
-    spelling fixes by ville.skytta at iki.fi
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3000 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5efe5b3603f199cbc2acecc79ccbda0ddeb6b41a
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jul 14 08:18:57 2006 +0000
-
-    bugfix: copy the first n characters (if possible)
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2999 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 886e63c60e2ea6092e02c9ad931f983f56fe6162
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jul 13 21:01:46 2006 +0000
-
-    cardos v4.3b support
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2998 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ae5866b2443a3b6157fe86d2eb16c3e4b4402604
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jul 13 20:40:50 2006 +0000
-
-    don't accept invalid OIDs
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2997 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 940c67b78a985b2722b12f6213efd11cef9064ec
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jul 13 20:37:05 2006 +0000
-
-    cardos v4.3
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2996 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d502887f5562cff7a9cfc16474fa1c55717acb42
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jul 13 20:35:17 2006 +0000
-
-    bugfixes ...
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2995 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9a5bf3602d1bb7f4ad3d756ea7293da862c9ea0e
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jul 13 19:59:23 2006 +0000
-
-    initialize pointer
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2994 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 126593aa01ca927a8491997cb9649ef998cd4fab
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jul 12 08:12:38 2006 +0000
-
-    - use strlcpy() instead of strncpy() to always have a terminating
-      NUL-byte
-    
-    - use sizeof(field) instead of SC_PKCS15_MAX_LABEL_SIZE-1 or equivalent as
-      the 3rd argument of strlcpy()
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2993 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 382a7d63011fb9b7f9f9c1ffafe634a627853f72
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jul 12 08:09:58 2006 +0000
-
-    add $(top_srcdir)/src/common/strlcpy.c to libscconf_la_SOURCES since
-    src/scconf/parse.c now uses strlcpy().
-    
-    Note that, since libopensc uses libscconf, strlcpy() will be available
-    from any program linked with libopensc
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2992 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5e922b5325ce4d77cba124e33808bac08d63618e
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jul 12 08:06:59 2006 +0000
-
-    add -I$(top_srcdir)/src/common so that strlcpy.h is found
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2991 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9ce3d4c663a384c9224c7e4b728c1a1c40c1ce47
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jul 12 08:05:54 2006 +0000
-
-    add strlcpy.{c,h} from
-    ftp://ftp.openbsd.org/pub/OpenBSD/src/lib/libc/string/
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2990 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2495268d98ea753de62b5094c697e7d570297bde
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jul 12 07:43:38 2006 +0000
-
-    - remove src/common/getopt.h since it collide with /usr/include/getopt.h
-    
-    - replace @GETOPTSRC@ by $(top_srcdir)/src/common/my_getopt.c in
-      Makefile.am files
-    
-    - change the detection of getopt_long in configure.in since GETOPTSRC is
-      not used anymore. my_getopt.c is now always compiled and used but
-      provides getopt_long() only if HAVE_GETOPT_H is NOT defined (ie. if
-      getopt_long() is not provided by the system)
-    
-    - src/common/my_getopt.c: the code is within #ifndef HAVE_GETOPT_H
-    
-    - move the useful lines of src/common/getopt.h in src/common/my_getopt.h
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2989 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1eb33bc946c926d60045112cfce90eeea43fc4e8
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jul 12 07:32:40 2006 +0000
-
-    rename README in README.my_getopt
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2988 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 39a4d12795376e03f620ec910575d0f2384f472e
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jul 12 06:41:10 2006 +0000
-
-    use LIBASSUAN_* instead of ASSUAN_* so the assuan library is correctly
-    found and we avoid "undefined symbol: assuan_strerror
-    (.libs/opensc-signer.so)", etc
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2987 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit fdd0baa633a6cec2d4a6a1f18cf637acb1cdd623
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jul 11 22:25:45 2006 +0000
-
-    bugfix: return error if OID is invalid
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2986 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c044be5c725abe3bc8afcca2bda64aa14a2026f2
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jul 11 21:43:44 2006 +0000
-
-    fix typo
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2985 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a29a92686e7f8b7c6d8eb970e179eff547c595fa
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Jul 8 12:31:33 2006 +0000
-
-    changes for cardos 4.3b
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2984 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6287cf4d9beb6349f839541d4f05e3e5117e53c9
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jul 5 19:45:53 2006 +0000
-
-    replace static buffer with dynamically allocated buffer.
-    patch by Tomasz Lemiech to fix a problem with setec cards.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2983 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7dd7df4e7c01b6338a036f2da78c38cc952964a8
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jul 5 19:36:26 2006 +0000
-
-    Tomasz Lemiech wrote: I found that struct c_asn1_odf[] in pkcs15.c does not
-    define secretKeys object (as specified in PKCS#15 v. 1.1 standard, par. 6.2).
-    I consider this to be an omission. My Setec card contains objects of this type
-    and all PKCS#15 operations fail with "Unable to parse ODF". Attached patch
-    fixes this issue.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2982 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 607e85ad9b2e6b221ffe35ad566dc6a97ea86c99
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jun 27 21:54:24 2006 +0000
-
-    add new atr reported by Sven Loeschner as Cryptoflex 32k Card.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2981 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ee3724047919177761258b693cccb313cf610e3f
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jun 27 17:56:19 2006 +0000
-
-    Added doxygen comments
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2980 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit bf23c032ca18ebe35f5bb06e4cad0faefac51389
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jun 27 17:49:19 2006 +0000
-
-    Endian-independent way to convert numbers to a byte array + vice versa
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2979 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ec3892773151428b282199ec00d934e2c32ad153
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jun 26 21:03:11 2006 +0000
-
-    check for environment variable first on windows, too.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2978 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit fae6f3feae828f42144f3d5f8328050872c8670a
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jun 23 16:09:18 2006 +0000
-
-    fix apdu types and response buffer length
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2977 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6df2a05975d499b09cee4fde52fdd7475d664a0a
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jun 21 20:05:17 2006 +0000
-
-    bring implementation in accordance with the docu in opensc.conf
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2976 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f1d9cda57cc654a699b0ac272671d840796bec46
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jun 19 23:04:13 2006 +0000
-
-    the cryptoflex manual states the last two bytes of the atr are some
-    software version so we can ignore them. use the atr mask to do that.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2975 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5c9c6aaff0997d375c3e7331b707cb796709747b
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jun 19 19:01:39 2006 +0000
-
-    fix docu
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2974 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6d96437c4af0b8c83dfa9009e414e8f5f72fd97b
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jun 18 20:52:10 2006 +0000
-
-    The applet returns unexpected values when entering a wrong PIN; this is a work-around by Thomas Harning
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2973 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 409fe3a9a0ffc1c266e7b5bb638b12fb44bb6de0
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Jun 17 15:07:49 2006 +0000
-
-    fix warnings
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2972 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 88bae5c923e440811f2e2c9f88029bc982455322
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Jun 17 12:24:04 2006 +0000
-
-    remove iso logout function, remove dummy logout functions and remove logout call from sc_unlock()
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2971 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 56914205886a3d35a9fd391c9e74ecb1e92114ef
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jun 16 20:47:59 2006 +0000
-
-    fix warning
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2970 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 746dc392d8d6ca09d822105fedbdae346efe995a
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jun 8 08:12:50 2006 +0000
-
-    Fix makefile: add muscle files.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2969 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 50490acca0c32b37c71b8e86748648b7a2811ade
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jun 7 08:33:37 2006 +0000
-
-    Added support for MuscleCard applet. Thanks to Thomas Harning, David Corcoran of Identity Alliance
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2968 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e225efc982df05c54414ee7dc9a599bd283603a3
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jun 6 06:00:51 2006 +0000
-
-    add new card reported to work by  Christian Koegler. Thanks Christian!
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2967 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit cd9e42af3bbfe1efd06e330a91d78e3ef1c911e1
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue May 30 20:59:15 2006 +0000
-
-    commit NEWS update.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2966 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f9dd89e53ba48ab9376f8c1185c142ed02db0d51
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue May 23 20:53:15 2006 +0000
-
-    sprintf bad. maybe even potential exploitable?
-    bug found by ville skytta using pscan.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2964 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5d1f80d9fa23938afa1dae9ba6a86c49d7ca9bd0
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue May 23 12:55:40 2006 +0000
-
-    fix compiling netkey-tool on win32.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2963 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d42495b01d49e7b26a856f23e0acb7dd363abe72
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue May 23 09:09:29 2006 +0000
-
-    try to fix windows compile (include netkey-tool and cryptoflex-tool).
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2960 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0f64e9d3f17af1d05f7d88112167d6bc636020bd
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat May 20 16:06:42 2006 +0000
-
-    make objects on piv card public.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2957 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c7a5ce3b50dcd5a98328b9efde99cb0a7954b291
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat May 20 16:05:14 2006 +0000
-
-    revert prior change as it breaks the regression tests.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2956 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1c56f74b6ccb89f3e26bb31bd1a5eb8ec6e5c057
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed May 17 09:07:17 2006 +0000
-
-    pcsc_connect(): use an explicit debug message if the reader supports PIN
-    verification/modification but that feature is not enabled in opensc.conf
-    (enable_pinpad = true)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2954 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit bfe05f31dce164e66b5ca2346b98837a10854bbb
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon May 15 18:48:30 2006 +0000
-
-    check for existing public key before creating one from the certificate; patch supplied by Albert Solana <asb at c3po.es>
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2953 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 77ce30fe264aefabd655da154b4cfbb413127302
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri May 12 20:03:45 2006 +0000
-
-    Douglas E. Engert:
-    removes the private bit on the pubkey. Without this change the openssl req with engine can not be used to generate a certificate request, as it will not be
-    able to find the public key that should have been saved by the piv-tool when
-    the private key was generated on the card.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2951 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 45007b3da71d2170d21228e34c79ae568901801e
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri May 12 20:01:26 2006 +0000
-
-    compile fixes for win32.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2949 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7f5595a1e35b2545f3956a5f78321c5408ac37d3
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed May 10 06:18:00 2006 +0000
-
-    document changes so far.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2948 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0cab6858e63a0d574b21fcc0b90ca6b34f3532a3
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed May 10 06:14:56 2006 +0000
-
-    trunk is now used for changed past 0.11.1.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2946 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b28f8ed9c4ef3b1591c1405a2cc84e29947ffc3e
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue May 9 21:35:07 2006 +0000
-
-    improve buffer length check
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2943 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f7110c593bc75b082e43af05db7a6ba749f9e39d
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue May 9 19:39:33 2006 +0000
-
-    oops, we forgot to update the version. fix that for opensc 0.11.1.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2942 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0c39b21b991002b8e0300cc996032d64b1403655
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri May 5 10:35:02 2006 +0000
-
-    set the default for lock_login to false (as documented in opensc.conf)
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2941 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit dd44fd8234b2bdcdb77241d0369308256c25f4cb
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri May 5 10:10:00 2006 +0000
-
-    if the card doesn't support a logout functionality it's not an error
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2940 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9b52eebddae87d669376ce35525d6eef28fada7b
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri May 5 10:06:38 2006 +0000
-
-    bugfix: Le must be <= buffer size
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2939 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d78f5ad5c29eeba9c1ed59d47221862e45de8b33
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu May 4 06:50:56 2006 +0000
-
-    piv fixes by Douglas E. Engert.
-    This patch will allow a flag in the opensc.conf file to be set to
-    only expose the PIV authentication certificate and matching keys.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2938 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9e5ed96912985c745310f4d09a8954794e1583a3
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed May 3 07:16:38 2006 +0000
-
-    use correct ef attribute in switch statement; thanks to Chaskiel M Grundman <cg2v at andrew.cmu.edu>
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2937 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 21c821194bc9d8e7917da2a2a8cff1946aa75c6e
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon May 1 10:27:06 2006 +0000
-
-    close memory leaks.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2935 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a48fe86b6693f4e82326b8b7d9b69baec8f7add5
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon May 1 10:26:17 2006 +0000
-
-    close some memory leaks.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2934 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 65a2cabffc011d1a069947c3970697104edcf411
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon May 1 10:23:15 2006 +0000
-
-    make sure result is null-terminated.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2933 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6cfbd9d4f91c6b29310f512b838fc0819b6a1f02
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon May 1 10:22:25 2006 +0000
-
-    at least partialy close memory leak.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2932 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 45742fc5d09da271f5b2ff6068acad9c032b4fb0
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon May 1 10:21:16 2006 +0000
-
-    check df before dereferencing it.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2931 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 449a1841b1f237ff0032e7ee01d0d2f083ab9849
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon May 1 10:20:22 2006 +0000
-
-    free(data)
-    (allocated by sc_pkcs15_read_data_object, no reference kept anywhere).
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2930 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5cb1c13c453c6310e9e4c37fe71484f7ae20c9e7
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon May 1 10:17:11 2006 +0000
-
-    if exec() fails, exit with return code 1.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2929 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 56082ee3a03fe55cd970ddb6bfb3915a7859e0fb
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon May 1 10:16:48 2006 +0000
-
-    initialize with NULL, so the later check for NULL will work.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2928 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b507ee68e4d64011bf9191ed6d7e810b74593cf5
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon May 1 10:12:36 2006 +0000
-
-    add support for d-trust cards.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2927 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8fe04d5a86fc00f421ec974425541ed7a1757398
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon May 1 10:10:35 2006 +0000
-
-    revert bogus change.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2926 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6258b954e3d2be94f7ffbf1c51edbaf4cf8fe8ad
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon May 1 10:07:53 2006 +0000
-
-    bogus change, no segfault here.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2925 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7c6baba8e7508c2c19b7b82b6d72ca1013a317a6
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon May 1 10:06:35 2006 +0000
-
-    revert bogus patch.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2924 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ab0066b0d78b77447c15280a6ed67b108de17789
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon May 1 10:02:50 2006 +0000
-
-    fix printf size_t problem with "%lu" and (unsigned long) cast.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2923 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 181fb6fb82d24d4195a9c0fd6f7cb996c622f237
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon May 1 09:20:16 2006 +0000
-
-    Document changes since 0.10.0-rc2
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2922 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 60d9e4bf0e52c7c377c1e499f56af967f1725332
-Author: pk_opensc <pk_opensc at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Apr 29 22:10:32 2006 +0000
-
-    TCOS-Emulation, support for Uni-Giessen card
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2920 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2b4e6a5e980ba0d6cebcd592567df50070b2784e
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Apr 27 20:44:24 2006 +0000
-
-    fix a memory leak that occurs when the APDU exchange fails
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2919 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4c7c045ef6d6f90e822bf4e16da631e590cbeb38
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 26 11:54:34 2006 +0000
-
-    trunk will contain work done after 0.11.0 release
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2918 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 41ff15ec1f686dc26cb7b322bd1cb82536cdf68b
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 26 11:41:57 2006 +0000
-
-    fix signed and size_t warnings.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2916 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 03f5827c300684a0e741c19e80dbb19518d032c4
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 26 10:08:00 2006 +0000
-
-    make sure buffer is 0 terminated.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2913 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2327835416fe7307664906f0501f5cdabfb47ecb
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 26 10:07:20 2006 +0000
-
-    fix a memory leak.
-    don't access buffer beyond length.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2912 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 878f9c3de2038cc6cd6e9b4388bb20a7f26fda49
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 26 10:05:55 2006 +0000
-
-    maybe it would be good to check the return value?
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2909 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 156e3a574d1548822d3f85062e4816106c706af5
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 26 10:05:21 2006 +0000
-
-    maybe it would be good to check he return value?
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2908 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5dcaeccb1e9c643ee149a0c97c3c90464206a24d
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 26 10:04:33 2006 +0000
-
-    fix double free and segfault.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2905 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8df47f6bb0878e7ae45f411b4adcae267e79bb53
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 26 10:02:31 2006 +0000
-
-    fix memory leak.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2904 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7ffd0f1d793863494855803cfd2172acb27e7331
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 26 10:01:52 2006 +0000
-
-    remove dead code.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2902 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3066830238b16eb141731f41355ebd65336472b8
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 26 10:01:06 2006 +0000
-
-    close memory leaks.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2899 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit beb55b8104bf1dd38d1f7d1fbe98e9196a048607
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 26 10:00:23 2006 +0000
-
-    not sure it is a good idea to ignore the return value.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2898 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8fa4891bded653e83639744b3d1a3cec7cc75ab2
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 26 09:59:27 2006 +0000
-
-    no idea how to fix, at least document it.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2895 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 96cb7fa722f6cd3d7361734894ff53c3fdfe7eff
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 26 09:58:47 2006 +0000
-
-    fix off by one bug.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2893 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1810d4d3fb501604374c0987f4c97e68c9892f71
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Apr 24 18:41:57 2006 +0000
-
-    tcos updates by Peter Koch.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2891 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 347c5b04960d26e9572f3e53c111666e896b5f0b
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 18 15:15:45 2006 +0000
-
-    remove a function that is no longer used at all.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2888 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 807b4c72755ea59e5f608f4714b49d74ce32f77c
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 18 15:15:02 2006 +0000
-
-    improve regression tests: cleanup failed/ and out/ folder.
-    specify path to opensc-pkcs11.so module.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2887 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5adad6431ae117d5fa76cfd5277368498a8a51d3
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 18 08:16:21 2006 +0000
-
-    Lindent so the result is easier to read / diff.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2886 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 022268305814566fb9bbe382c4f6812ed504b826
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 11 20:50:13 2006 +0000
-
-    Douglas E. Engert wrote:
-    The attached change to card-piv.c is need to recognize a
-    valid PIV card applet. All of the previous test cards would
-    return in response to a SELECT the full AID where as they
-    should have returned the the PIX portion of the AID. The newest
-    test cards are now doing this correctly.
-    
-    This change will recognize either as a PIV applet.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2885 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 435d8ac62be1aff16bef98a7cc89811b9e43aaec
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Apr 6 18:41:12 2006 +0000
-
-    There doesn't seem to be a need to leave the certs (and CDF) unprotected. In case there do are problems, please revert this change
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2884 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9409c278df704c7fcad385bc5b4e1be5397dde00
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Apr 6 18:38:20 2006 +0000
-
-    Set the user pin reference when writing a cert. If not, there's a problem with the onepin profile option: the CDF (and certs) will be created with NONE ACs instead of ACs that refer to the user PIN
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2883 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 95163a2678dc133d22f8c3495809d30bb0ff7cca
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Apr 6 18:35:01 2006 +0000
-
-    protect certs by default
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2882 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 83c7dc904515c3ceec80195254a44bc824046aaf
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Apr 3 10:42:00 2006 +0000
-
-    return an error if offset is too large
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2881 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 41d35027cc1d6b28ab9c880c6ab1ebeb7a549e26
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Mar 24 23:54:12 2006 +0000
-
-    install signer in libdir like everything else.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2880 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b791b1d6bcf3b416a2ec089b593a0546204f3e14
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Mar 24 10:55:33 2006 +0000
-
-    check the private flag of public key objects; patch supplied by Albert Solana <asb at c3po.es>
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2879 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1180345d75f3e7b37a09d5ef5781ac735a7f47a5
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Mar 24 08:06:19 2006 +0000
-
-    Threading: Reader locking can fail as well
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2878 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8be396fee3d344678349529172a396de22d92087
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 22 21:44:09 2006 +0000
-
-    add function sc_reset() to reset a card; patch supplied by Josep Monés Teixidor <jmt at c3po.es>
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2877 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 40e6c491ed7f23479de3713d21212ec040ec2c36
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 22 17:12:00 2006 +0000
-
-    fix ACs; patch supplied by njustin at idealx.com
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2876 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 158fce9147bf5ec1fe41ef8626850d2428966382
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Mar 16 21:37:25 2006 +0000
-
-    simply the revision, drop the m4 code.
-    it didn't turn out the way I wanted it
-    (does not contain the _repository_/_branch_ revision).
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2875 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8e170f689e20852cb2161b1abc6f9517328d90d5
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Mar 9 20:35:19 2006 +0000
-
-    initial support for the Swedish NIDEL card
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2873 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2b8a2f4d905e7ddea3a07b63f64dc8dd5bd17c31
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Mar 7 07:22:58 2006 +0000
-
-    sc_pkcs15_parse_tokeninfo() and sc_pkcs15_encode_tokeninfo() now use a
-    (sc_pkcs15_tokeninfo_t *) instead of struct (sc_pkcs15_card *)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2872 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6737a4dc5c0a98b30f10b46b16027bf1c31a2162
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Mar 6 09:21:22 2006 +0000
-
-    __sc_ui_read_pin(): use "%lu" and (unsigned long) cast to print a (size_t)
-    value (size_t is 32 or 64 bits depending on the platform)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2871 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 34098ec173ed0c1335f93280e17d46b52ab30fb8
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Mar 6 07:58:10 2006 +0000
-
-    small fix - \& was left from cut&paste from a man page.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2870 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5e617f93d7343dc1756bc2f01eb622cf708c42a9
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Mar 5 19:43:38 2006 +0000
-
-    document --unblock-pin / -u option.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2869 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 383602b6fe9f6bbb8de986c600d908988350bb85
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Mar 3 22:56:41 2006 +0000
-
-    - move logging to the reader driver
-    - log APDUs only if DEBUG is defined (sensitive APDUs should
-      never be logged and we cannot know whether a APDU is sensitive
-      or not => enable APDU logging only in a non-production debug
-      build)
-    - remove OPENSC_DONT_LOG_SENSITIVE configure option as it's
-      needed anymore
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2868 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit beb9d34db09530fb50ea09853d22234e81591384
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Mar 3 21:10:02 2006 +0000
-
-    add some doxygen comments
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2867 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d893720f03ceae3eb211f7360770209e6ab08f42
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Mar 2 18:24:45 2006 +0000
-
-    add note
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2866 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3b25ca27e9dde11681498b58b4d1e09e9d22b73f
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Mar 2 16:17:05 2006 +0000
-
-    remove useless code
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2865 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d1c9ee90877d8d86f04cac2555c73af4283200e0
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Mar 2 14:16:52 2006 +0000
-
-    sc_pkcs15emu_actalis_init(): define 3 variables only #ifdef HAVE_ZLIB_H
-    since they are used in this case only
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2864 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 984d652072f651bc7cef2c8b8c116facd3ffc115
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Mar 2 14:12:39 2006 +0000
-
-    __sc_ui_read_pin(): use %lu instead of %u to avoid a warning: format
-    '%u' expects type 'unsigned int', but argument 3 has t ype 'size_t'
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2863 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0bc5cb45fef95ea00c5eac003f80f3837ea9124d
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 1 22:34:54 2006 +0000
-
-    mark second parameter of sc_disconnect_card() as unused
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2862 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e1ef4ec241e63d43c3433f3e122b4362116814c8
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 1 09:45:09 2006 +0000
-
-    Remove the disconnect action from internal reader api
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2861 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b93d6b156258d8da1e88a4e15156159087eb6cbe
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Feb 27 20:11:33 2006 +0000
-
-    use absolute paths when caching files
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2860 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5b0119ca6d006678d84e813e1e71685efcc661c9
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Feb 23 19:15:06 2006 +0000
-
-    change name + fix warning
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2859 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 126595bb07d0073492f4aa83575e7cf20e049f1c
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Feb 23 18:43:14 2006 +0000
-
-    fix some warnings
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2858 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0a9912233d514fe4d71ec6475379a18641f1e055
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Feb 23 13:40:03 2006 +0000
-
-    Fix for a segfaul. Patch provided by Albert Solana Berengu
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2857 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 530dc0916d0573aba8e8b454e4405fbb8f748e3d
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Feb 23 11:49:22 2006 +0000
-
-    Add an example config entry for PIV cards and remove a card matching black hole
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2856 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9213a29a3432af687aa9f3033698e73b593a4189
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Feb 23 11:02:24 2006 +0000
-
-    Small fixes for windows compilation (Visual Studio Express 2005)
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2855 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c3e85106c7e0fb34a2f692b5d0fd445030a20156
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Feb 23 11:01:13 2006 +0000
-
-    Add a section for tokend
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2854 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b2d4d6a9bc3923a2a5b8bac7fc4ab512a9eda82b
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Feb 23 08:10:07 2006 +0000
-
-    NIST 800-73-1 certs aren't protected by a pin anymore; patch supplied by Douglas E. Engert <deengert at anl.gov>
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2853 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 149b5cf187a0f0fefdcd8ca03755f57c713da1fc
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Feb 22 20:35:57 2006 +0000
-
-    use sc_format_oid()
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2852 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8410084f0e18b40e63bc2de5c5bc45ac2cad6802
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Feb 17 21:06:31 2006 +0000
-
-    fix warnings
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2851 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit aa5d081c3a0bc459c52a037d7ef0394e53dfd8c3
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Feb 17 11:22:21 2006 +0000
-
-     * Also delete .pdb files on windows when doing a clean
-     * Call directly internal pcsc transmit method for pcsc pinpad calls.
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2850 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 99a28c35bada8a9d181f95afeeba149527219c4c
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Feb 16 21:45:53 2006 +0000
-
-    add support a TCOS card used at the uni Giessen; this is still experimental
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2849 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9c42d1dc8c1fbd551f4cba03c21c099632acd641
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Feb 15 17:29:40 2006 +0000
-
-    use sc_ctx_get_reader() etc. instead of of accessing the structure members directly
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2848 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a092e863b824622f79a2eb6c55d816c613a1e9d4
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Feb 15 17:05:05 2006 +0000
-
-    fix some warnings + cleanup
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2847 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5c6f8d0ea9d284b69c46dcfdf37e8abf719cda93
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Feb 15 08:10:45 2006 +0000
-
-    fix warnings
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2846 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7dbbade0f656cb964029625c422cc6d32a94b5df
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Feb 15 08:07:29 2006 +0000
-
-    fix warning
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2845 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1f65fbe10e01d8a5c57e447d520146bf1d5094cc
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Feb 14 22:46:54 2006 +0000
-
-    a unblocking pin could be used for authentication as well
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2844 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a00caa5cc7616137b91e2f963b51909d2a88dca5
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Feb 14 22:41:02 2006 +0000
-
-    undo commit in pkcs15-tcos.c
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2843 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b051b085846967795299e4bb92e19e1028b1048c
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Feb 14 22:09:10 2006 +0000
-
-    add initial PIV card support; patch supplied by Douglas E. Engert <deengert at anl.gov>
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2842 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d02aaf37debb5ca8f55baa1c454933b0d64f2fbe
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Feb 14 22:04:47 2006 +0000
-
-    fix warning
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2841 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8c926455d06df7e5c79ad926865bdcb0a63a4732
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Feb 12 18:30:53 2006 +0000
-
-    add support for two byte tags in sc_asn1_find_tag() + normalize return value
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2840 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8494d9cfde65402b388c031080254d42448ea5d3
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Feb 12 18:29:52 2006 +0000
-
-    add support for two byte tags in sc_asn1_find_tag() + normalize return value
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2839 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1c1a0a1548b7d5965593e2fd35b5760b7f888702
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Feb 12 17:37:39 2006 +0000
-
-    don't bind the pkcs15 card twice
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2838 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a2194b98033dc5c36ea316af191b4afc07aef0aa
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Feb 12 17:07:31 2006 +0000
-
-    fix memory leak
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2837 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 55631edf3bf571c53e13765bca75a5742cd32532
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Feb 9 20:05:20 2006 +0000
-
-    support private certificates; patch supplied by Douglas E. Engert <deengert at anl.gov>
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2836 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit bce076d325a54752b4511f99ea4697324035712f
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Feb 8 22:25:09 2006 +0000
-
-    pkcs15 emulation changes for the TCOS cards, patch supplied by Peter Koch
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2835 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit cd64e11956a9bfd0422b8c6c402a7ac455664fa0
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Feb 8 16:29:32 2006 +0000
-
-    apdu_masquerade is gone
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2834 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 25e5c95ddeb343fa80b3738b07a05760d030dada
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Feb 7 20:14:43 2006 +0000
-
-    use sc_context_create instead of sc_establish_context
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2833 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8e77e8755100c1c055dbca50d4795d165ac0e5c7
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Feb 5 19:35:55 2006 +0000
-
-    sc_mutex_destroy should have a return value
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2832 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ca2a5e11fd4a5bf235eb9971bf4b0ca1cecccb65
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Feb 5 19:00:01 2006 +0000
-
-    - move APDU encoding to the reader layer
-    - remove APDU masquerading code, it shouldn't be necessary
-      anymore
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2831 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 85aaa4466dd9d5796df815631838e31ac1731f4f
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Feb 3 21:24:11 2006 +0000
-
-    fix typo
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2830 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5c3aed11892da2d37eed1733fc2bfbd06b040022
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Feb 1 22:59:42 2006 +0000
-
-    - remove dependence on a specific threading library
-    - add two new structures: sc_thread_context_t which let
-      the user specify the mutex functions to use and
-      sc_context_param_t to specify parameters for the sc_context_t
-      creation (including mutex functions) using sc_create_context()
-    - add new function sc_context_create()
-    - remove timestamp code from libopensc
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2829 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 670c0ee0639e3905636ac7d8875bb94bc8925c44
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jan 31 15:53:44 2006 +0000
-
-    Rename: _get_conf_block -> sc_get_conf_block and put it into opensc.h
-    
-    This way it can be used by OpenSC tokend module.
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2828 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 525613ad5ad09bbaa10bfac2fe593eb16bc80b28
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jan 26 19:02:02 2006 +0000
-
-    add atr and os identification for cardos 4.3 (plain, not b, not likely
-    to be ever seen, but 100% compatible to 4.3b as far as I know - only slower).
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2827 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2cc82fe774ad6eb4731cc84bfdbb12ba7170bc56
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jan 23 22:02:07 2006 +0000
-
-    rename lower level function, fix typo.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2826 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f0c9f049a7de5a53307d4e2e94c30c6e5e933d5d
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jan 23 21:48:08 2006 +0000
-
-    big rename etoken -> cardos, part II.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2825 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d501480a299c3c39fa998d789ff9329815aac094
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jan 23 21:44:37 2006 +0000
-
-    move renames.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2824 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit aa2d502ece20dde36beb408a8ee3e1650f155c67
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jan 23 21:43:01 2006 +0000
-
-    rename everything namend "etoken" to "cardos" :)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2823 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 823bbffbe65f1511849428637cd216c82ddbac2c
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jan 23 21:39:20 2006 +0000
-
-    rename card-etoken.c to card-cardos.c
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2822 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0e9037d12f2c21bd0e663252fb722ec9740ab9c7
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jan 23 18:09:37 2006 +0000
-
-    If, for some reasons, card can not be initialized (broken) then
-    we must make sure that we release all resources (disconnect the card).
-    
-    If not we can only have 16 tries with a longrunning application (number
-    of contexts inside pcsclite).
-    
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2821 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9e410e5f6c0402aec409d7a79bf25617ed9ecfd2
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jan 23 17:37:10 2006 +0000
-
-    Some cleanup/fixes in micardo/esteid code related to new apdu.c
-    Now it works again ;)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2820 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 723888d623d7f7603ad31973019bbffce77a26b4
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jan 23 17:29:59 2006 +0000
-
-    Negative r has a meaning in the cached file logic, so be sure to reset it to -1
-    after sc_print_path has returned a value.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2819 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b07df409324133483ff9ea3731df08d438933bc3
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jan 22 21:15:07 2006 +0000
-
-    change more opensc.org references to opensc-project.org till dns is back.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2818 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5f94c5f499571f989f2ffdd5d28bfbccbf0de8ae
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jan 22 21:07:00 2006 +0000
-
-    moved to opensc-project till opensc.org dns is back.
-    fix openct references to opensc.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2817 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 41ee07a70885c3f1978feaf60c2466062f925ce9
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Jan 21 11:53:30 2006 +0000
-
-    increase size for bigger keys
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2816 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e8c05ca64833092665d2783da441ee74284a6bd1
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jan 20 20:52:36 2006 +0000
-
-    use more opensc specific names for ASN.1 tags to avoid name conflicts
-    with other ASN.1 libraries
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2815 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 059c1ffc5d32c4be3be677e190c9a724e5d23d25
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jan 12 09:37:40 2006 +0000
-
-    doc/old is gone.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2814 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b1322ecd39c3d76d21bdd354418996f28b24751d
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jan 12 09:36:58 2006 +0000
-
-    remove old man pages (replaced by new man pages in xml format).
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2813 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8fac2eaac266007944cba8d3f527c2620ae1e151
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jan 12 09:36:16 2006 +0000
-
-    remove old documentation (replaced by wiki).
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2812 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit de4b5c280f2b4f83e885de13440c27242d1fdc29
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jan 11 23:41:17 2006 +0000
-
-    - implement thread-safe path printing function sc_path_print() and use
-      it src/libopensc/ and src/pkcs15init/
-    - use size_t for the certlen parameter of sc_pkcs15init_update_certificate()
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2811 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 363d9be8615e3032343637a9bbad844513870c36
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Jan 7 23:40:36 2006 +0000
-
-    Get rid of handwritten sc_read_record calls
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2809 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit dc2410a5344c43d6b3058a2c0af7c524241163cb
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jan 5 22:21:41 2006 +0000
-
-    the current code requires a pointer to a integer, note: it's actually not a bug when foo_item is NULL as the necessary scconf_item object is created by scconf_item_add_internal
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2808 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9f943aa2b4d602ea5ec93f76238ec6ba40c8ebc4
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jan 4 18:52:52 2006 +0000
-
-    don't segfault if no config file could be found (win); thanks to Nicolas Justin <nicolas.justin at idealx.com>
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2806 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit fcb7b6501038db01c0aa8de85d24a7d1a2c37d12
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jan 3 22:46:49 2006 +0000
-
-    increase buffer size for the serial number to 9 as we need 8 bytes for serial number plus 1 byte for the terminating 0 character
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2804 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f674204d6365698da78b55df91977bee690d13fb
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jan 3 16:24:54 2006 +0000
-
-    Add possibility to change pkcs15 attributes (currently only the label)
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2803 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ddd696482b44ca8343cd4c96eaa5d4d8c75bc161
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jan 3 14:42:30 2006 +0000
-
-    Forgotten to add in r2773
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2802 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f18b38fe7f75a74f6803cf021b6db00cb2ce573d
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jan 1 23:11:00 2006 +0000
-
-    summary: -add more general path concatenation function
-              sc_concatenate_path() and let sc_append_path use it.
-             -add function sc_compare_path_prefix to check whether
-              a path starts with a certain sub-path (prefix).
-             -add some doxygen docu to some path handling functions
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2801 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e5d0ec212ed8325d359d804294757de145cf23eb
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Dec 30 10:34:29 2005 +0000
-
-    Typo fixes
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2800 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1a5a5c9b76a35a0d02de75669e7e710bca1090a7
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Dec 28 20:20:18 2005 +0000
-
-    "cat xxxx" is not supposed to create errors (on record structured files).
-    so silence it.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2798 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6a5c6b2217850fe8b1b37f3786f111f9bb6600b9
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Dec 28 20:15:32 2005 +0000
-
-    fix warnings
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2797 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 35052fc28a996fa8a328fbe465c6fbfe7fece345
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Dec 28 20:05:28 2005 +0000
-
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2796 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit fe3e93b6255fffb2ef5c2b826a2d2f4836e4915a
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Dec 28 20:01:43 2005 +0000
-
-    summary: -complete rewrite of the APDU/transmission handling
-              code (should now support extended APDUs and is
-              hopefully better documented. Note: support for
-              the T0 ENVELOPE command is still missing due to
-              a lack of test cards).
-             -add new APDU case constants SC_APDU_CASE_2 etc.
-              which let OpenSC decides, based on the card
-              capabilities, whether to use short or extended
-              APDUs.
-             -add new capability SC_CARD_CAP_RSA_2048 for
-              cards supporting 2048 bit RSA operations (note:
-              this is more a preliminary hack)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2795 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5861f986e93dd7d25ce29e807ff39d14cf2f6db1
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Dec 28 19:41:11 2005 +0000
-
-    remove unused variable
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2794 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f5902e4f0c03ad542f039f6fe312b4b8f9e30fd6
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Dec 28 19:38:55 2005 +0000
-
-    add support for cardos m4.2 (still experimental)
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2793 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e1d7384e8a0c4065272a01a69c8ad85fd1458a01
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Dec 27 14:11:35 2005 +0000
-
-    If there's less data ina file/record than requested do not fail but return as much data as was available. This behaviour is similar to read(2).
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2792 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0548ceb618057111cad018db714109d7caf42237
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Dec 27 13:41:23 2005 +0000
-
-    If SCardControl fails there's nothing bad going on - just there's no support for this feature.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2791 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit bd646762bf6b2616a222abdb066e477a6f98a173
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Dec 27 13:39:51 2005 +0000
-
-    hav commented configuration lines have the opposite values of hardcoded defaults.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2790 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 07fc5e4d04000302c5f297b6342da644686f4372
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Dec 26 23:09:44 2005 +0000
-
-    use svn revision based version numbers.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2787 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 86c4e23ec5f7012a42b90d7e6d966904e7b50ce1
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Dec 26 18:50:21 2005 +0000
-
-    tcos update by peter koch, adds interoperability with th darmstadt cards.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2784 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d1eec6aca76c0bd8bb3e303e7d791e79cedde178
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Dec 23 11:23:29 2005 +0000
-
-    Added default debug/log file locations for Windows
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2782 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 551bcc89fae0fdded18e2919d318ec264241a52d
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Dec 23 10:15:17 2005 +0000
-
-    Referted the 'Fireofox 1.5' fix in log.c and replaced it by letting a blocking C_WaitForSlotEvent() return CKR_FUNCTION_NOT_SUPPORTED. This isn't a solution for the multihread problems (things hang or try to log to a released context) but at least it solves the Ff 1.5 problems
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2777 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e56c7a9110a5303a53527fcc8bde14e05897b6eb
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Dec 22 15:54:44 2005 +0000
-
-    use correct apdu case and set Le value
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2775 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 573ce9c9e529048e70cf59db66a556848ecb1d5d
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Dec 21 21:19:37 2005 +0000
-
-    suppress errors when EF(unusedSpace) is missing
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2774 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit df6657ea184f78f111cbdd058641a0671eb98c59
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Dec 18 07:54:18 2005 +0000
-
-    Belongs to the rev. 2769 patch for adding EF(UnusedSpace) support
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2773 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ced2df6b1a96073bd27279cedebf884b68f45db2
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Dec 17 21:52:53 2005 +0000
-
-    remove unused variables
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2772 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 103979ec3711f375072f2d9427cf30e7b4e2c75e
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Dec 17 20:54:29 2005 +0000
-
-    fix key usage flags and ensure that we are in the correct lifecycle
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2770 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9df2cde416342f65ae466e703d3d3acb9657c1dd
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Dec 17 19:53:12 2005 +0000
-
-    Add support for reading and writing from/to an EF(UnusedSpace) file; this functionality can be used for deleting and creating pkcs15 objects (that reside in a file)
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2769 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9ce3f13bacdcb2263bd50824d0adc8dd1103b8fa
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Dec 16 20:52:01 2005 +0000
-
-    add cardos m4.2 and print the startkey version in hex
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2767 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b2400d07956fcdbba9a0ad7b9aba5a4e85ef5607
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Dec 14 10:59:57 2005 +0000
-
-    pkcs15-tool needs openssl_libs also, if it is available.
-    only older gcc versions found this problem, it seems.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2765 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1376a07cfa0f57ccaeeb56dc34138c77c32c5dc2
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Dec 12 20:38:19 2005 +0000
-
-    fix APDU case
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2764 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 912946bf3f6059bbb2212dff8bee16a25e8d3ebf
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Dec 8 20:25:54 2005 +0000
-
-    Fix for ticket #45: Firefox 1.5 and new Mozilla's crash when they are closed because there's a blocking C_WaitForSlotEvent() called from another thread then the 'main' thread that calls C_Finalize(); and this cause C_WaitForSlotEvent() to log to a NULL context -> assertion failure.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2762 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit fc763ba5d53726b4a26b1f1919c36667d9abd2ed
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Dec 8 09:05:56 2005 +0000
-
-    etcos_create_file_44(): use sizeof(pins)/sizeof(pins[0]) instead of a
-    constant (7)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2761 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit dce7d0024c82e8b59e249eca35ade5bde880863f
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Dec 5 22:09:28 2005 +0000
-
-    oops, parm points to the first char, not to a pointer to the string.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2730 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1475978af55aee00e14a04569a832620835970f5
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Dec 5 22:07:54 2005 +0000
-
-    remove unused variable item in scconf_put_str.
-    remove unused variable ret in scconf_put_int.
-    from the readme: "if parm not NULL, then ... parm points to ..."
-    so we need to get the value of the location where it points to.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2729 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a533dc1292f7c4312a5bf5802781cf428093c12a
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Dec 5 21:59:04 2005 +0000
-
-    free pub_buff in error path.
-    removed unused pubfile variable and dead code.
-    check prvfile != NULL.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2728 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 71c91425c74e1457b6fa5b0b1c7de87623cc615f
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Dec 5 21:58:04 2005 +0000
-
-    check prkf != NULL.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2727 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e5ffc57e92f547e5ab5d4a815ab6bba95760e17b
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Dec 5 21:57:07 2005 +0000
-
-    free profilke and pin_obj in the error path.
-    check res_obj and keybits/keyargs before dereferencing.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2726 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit dc790e985bafdfdd07685463c68c18bcd52ec427
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Dec 5 21:55:03 2005 +0000
-
-    check p15card != NULL before accessing it.
-    in the error path free file if it was allocated.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2725 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 40c67035c5aa50a7d8ab6fb9574e4886dc79223f
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Dec 5 21:53:13 2005 +0000
-
-    no code change, only easier to parse :)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2724 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ad844b0f74b7e9868639672b12dface25cf27123
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Dec 5 21:52:33 2005 +0000
-
-    also check that priv->p15card is not NULL.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2723 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4bac6634a1e3af1e06a5d2afe7ac162647a3d75b
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Dec 5 21:51:50 2005 +0000
-
-    for example if the card was removed, select file on the main
-    folder will fail. so I think it is best to return the error.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2722 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 51b72267ed361a6f3bc96e1a8aa5e61f7acecab2
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Dec 5 21:50:47 2005 +0000
-
-    even select_file can fail (if card was removed etc.)
-    so better check the error and return the problem, right?
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2721 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e49f78a360d44325c6bea89cf1a37da9b2502e66
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Dec 5 21:49:59 2005 +0000
-
-    fix typo on *paramp test.
-    check alg_info always, not only in some case.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2720 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 252fa4b868c1bf647e9fd487c088a609674644bb
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Dec 5 21:48:43 2005 +0000
-
-    check scconf_find_blocks returning NULL
-    add a free(obj) to the error path.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2719 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2f200901d62ec7859b0c673c94c1100a6ba9fcae
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Dec 5 21:43:04 2005 +0000
-
-    check file parameter.
-    set file=NULL after freeing it to avoid potential double free.
-    check key_file parameter before dereferencing it.
-    check card first, then derefence it.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2718 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2f8b813d51d34c20cb848c9976ed28a56ba63578
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Dec 5 21:41:14 2005 +0000
-
-    sizeof(int[7]) is 28. I think bCommands_pin should have 7 elements, too.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2717 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e0d645b95bc7eb27504503f4ada62f3e272cc2db
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Dec 5 21:39:58 2005 +0000
-
-    remove unneeded if(1) block.
-    free temp in error paths.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2716 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5e03972e4101aa56f5139edf738624d210627a03
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Dec 5 21:39:00 2005 +0000
-
-    check if scconf_find_blocks returned NULL
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2715 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4801c7eadd1410530f86d99a93f56be374631eea
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Dec 5 21:38:33 2005 +0000
-
-    check if scconf_find_blocks returned NULL
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2714 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 686297304acf43d67c6b6c4a4011823e86ae471e
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Dec 5 21:37:59 2005 +0000
-
-    check if scconf_find_blocks returned NULL.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2713 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d7b6abaef5a6255bdc4dffb8683a086ae83f3fa5
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Dec 5 21:37:34 2005 +0000
-
-    add proper free to error path.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2712 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 138dfad8429e478b305f234be4f85a8f8befa2a6
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Dec 5 21:36:55 2005 +0000
-
-    simply code / remove dead code.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2711 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2a1c6cb87e71ee82af5787375b583444bc78b28b
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Dec 5 21:36:26 2005 +0000
-
-    check if scconf_find_blocks returns NULL;
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2710 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7e15333537bb711603505e4b4ad88ad9666e9db4
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Dec 5 21:35:31 2005 +0000
-
-    add paranoia: what if scconf_find_bloicks returns NULL?
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2709 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5ef6ed52a431a20383ef3d77bfe0675bdf4f4562
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Dec 5 21:33:59 2005 +0000
-
-    add paranoia: check all arguments before
-    dereferencing them to prevent segfaults.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2708 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit bc23ab4cd2b991894c2f1a6ea1363f4a5dc2bd71
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Dec 5 21:33:11 2005 +0000
-
-    free allocated variable in error path.
-    set rec=NULL after freeing it to prevent
-    double free'ing.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2707 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4863fb752d04d35427c7cb7d8957d68e6ead5d50
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Dec 5 21:31:20 2005 +0000
-
-    free buf if pin was entered incorrectly.
-    check if file is not NULL (out of memory).
-    free file, if something goes wrong.
-    free pin/puk once no longer needed.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2706 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 131842c80bcde1c4187e9dcc19339f835e38b39a
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Dec 5 21:29:54 2005 +0000
-
-    make code easier by removing match variable.
-    check if cert was returned != NULL.
-    free cert if there is some error.
-    set variables to NULL after being freed,
-    to avoid potential double free bugs.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2705 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit cdc3044082150f45e6bed7fc5e52f677700b7f3b
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Dec 5 21:27:44 2005 +0000
-
-    proper cleanup: close files if something goes wrong.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2704 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 365196594cc47a8680407cf14e4759dcbbd2e9a3
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Dec 5 21:27:05 2005 +0000
-
-    check publickey variable before de-referencing.
-    change newpin to NULL so it can't get free'd twice.
-    allocate buf from heap, not stack (quite large).
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2703 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 93dae31ca7f2ca283b5e9f866b04c53d8f0b4349
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Dec 5 21:25:08 2005 +0000
-
-    #if out the dead code.
-    remove some dead code in the hexdump code.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2702 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2357ff6c6667d683be9d2b236ea1abd7928bbb70
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Dec 5 21:22:42 2005 +0000
-
-    does not work, will segfault.
-    also no need to assign foo_item all the time,
-    scconf_item_add returns the item parameter,
-    so it does not change.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2701 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 05587ca087a841c11a72d81c197b88710c584ef1
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Dec 5 21:21:02 2005 +0000
-
-    add a few sanity checks.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2700 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 346486ee70ecd0e99467c8f34f8dea41745af0fb
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Dec 4 23:23:25 2005 +0000
-
-    fix problem with uninitialized pointer; this patch resolves opensc ticket #61
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2698 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit bb63ca182900c65e3126b8cc534abd308d68c984
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Dec 2 22:24:09 2005 +0000
-
-    fix pkcs15 initialization + fix DIRECTORY command; patch supplied by Giuseppe AMATO <giuseppe.amato at st.com>
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2696 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4de18a2552246d4b2cccae570ada13aa5baf6255
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Dec 1 22:18:58 2005 +0000
-
-    fix for the combination of cryptoflex, 2048bit keys and
-    some smart card readers by Jean-Pierre Szikora
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2694 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9b717662d94c2e3c57dbeee336cb89446499f1b2
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Nov 29 20:56:11 2005 +0000
-
-    use sc_print_path
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2692 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7247db8aee87bda318651baa4efbdacfa4926930
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Nov 28 23:07:33 2005 +0000
-
-    use sc_print_path
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2690 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0a23e307afad57ddb151f52328673e8279dca1de
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Nov 26 10:03:38 2005 +0000
-
-    remove senseless and inconsistent checks + cleanup
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2688 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3ac1f94d2bd98a5acb5c5ed17e85148c1e434c4c
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Nov 25 19:11:09 2005 +0000
-
-    use unsigned int instead of uint16_t
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2686 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3a803dfe3baead1c0c3bcaa98447dcb998328822
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Nov 20 21:53:34 2005 +0000
-
-    remove disabled code, request FCI only if a file object has been specified
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2685 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ca4eba5861ac2364f6f517e6a357bd202aac6d1a
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Nov 17 10:23:35 2005 +0000
-
-    fix ac for file deletion
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2683 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f91e2339cec5c69c06611af4e13f68df64a6762c
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Nov 1 22:34:22 2005 +0000
-
-    add more cardos versions.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2681 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b6c44d826c0b08a198d28d199d3ae8258360c68c
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Nov 1 08:31:59 2005 +0000
-
-    use 1024 bit keys for testing to avoid problems with starcos tokens
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2680 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a3e1bc8f4f33c71655446ef763763779e948b650
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Oct 31 19:31:45 2005 +0000
-
-    Let --assert-pristine work for Setcos 4.4 cards
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2679 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f74eaee690a4bc10b305e036c4691a6d8d746757
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Oct 31 18:44:18 2005 +0000
-
-    fix GET RESPONSE handling
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2678 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ad647c66fa393b222d646376718f0e9f6e2055fc
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Oct 30 21:44:05 2005 +0000
-
-    use sc_ctx_get_reader
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2676 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b325af7fac297df8ef6b11e32c1650158ed06c39
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Oct 30 21:42:35 2005 +0000
-
-    remove deprecated pkcs15 emulation api. Add temporary wrappers for
-    the new functions in some pkcs15 emulation drivers.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2675 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 54046c6c1cf6d697e019f13af41368bce189576c
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Oct 30 21:17:07 2005 +0000
-
-    fix warning
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2674 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 43f0118740e2906d8f8847e96f4dfdd1cc816f17
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Oct 30 20:37:03 2005 +0000
-
-    summary: - improve support for extended APDUs
-             - add experimental support for command chaining
-             - simplify get_response prototype
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2673 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 95200e0f502f72e6da790edc4794dc343a7ec3dd
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Oct 30 19:55:21 2005 +0000
-
-    add pkcs15 emu function for data objects
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2672 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 47ee84e72d1355db126b5e5784fb5021bf199399
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Oct 30 19:08:06 2005 +0000
-
-    add functions
-    	void sc_ctx_suppress_errors_on(sc_context_t *ctx);
-    	void sc_ctx_suppress_errors_off(sc_context_t *ctx);
-    to turn on/off error suppression (to avoid accessing
-    sc_context_t directly) and use it.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2671 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit fa65fbf285d287c39d198b10eaff665da0f1c52f
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Oct 30 18:05:30 2005 +0000
-
-    summary: - add new function sc_format_oid to libopensc
-             - cleanup libopensc api
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2670 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 89cfac8735b5d67284877b2b64e23fea61cf4d12
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Oct 29 21:17:15 2005 +0000
-
-    Update pcsc pinpad code to latest pcsc-lite code, limit to pcsc-lite only.
-    
-    Verify works fine, modify needs some debugging-testing.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2668 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1f58981bcb51c6b70f00ddf83cfd8c4ccf4b19e8
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Oct 28 18:10:15 2005 +0000
-
-    update from Sirio Capizzi <graaf at virgilio.it>
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2667 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e8f1c45ad876f76f1ba94e8b548960cb7dab0b8e
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Oct 27 21:39:42 2005 +0000
-
-    This works better.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2666 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 242edbea0cb3c614517916161162d9d44b5c8ef1
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Oct 27 20:16:57 2005 +0000
-
-    add another cardos ATR, supplied by graaf at virgilio.it
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2665 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9d549e6aba904b77fc1167c5a5c06239e69ca9a7
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Oct 24 22:00:51 2005 +0000
-
-    remove outdated files, improve documentation slightly.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2664 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 90d1b0cc9c2ad226e07ce4d811d29f5f6409ee63
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Oct 24 21:58:35 2005 +0000
-
-    add support for the Italian Incrypto34 smartcard;
-    patch supplied by Giuseppe AMATO <giuseppe.amato at st.com>
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2661 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b8981542fb5ec5dc64e7f35647cb6a1c6e4a1214
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Oct 24 21:18:45 2005 +0000
-
-    fix man page installation.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2659 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d59e1b282ba2734af1a8aeb8d71cecbd5f438198
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Oct 24 15:19:51 2005 +0000
-
-    More comments on default config options
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2658 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit cd802fafe6070998d579c6a9784d00336b7a1a2c
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Oct 21 20:12:16 2005 +0000
-
-    not compatible with 0.9.*. increse library major revision.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2656 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0ad2a0782df56188305902d1d3cf5e6933d06d17
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Oct 21 19:40:37 2005 +0000
-
-    fix typo
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2655 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8b65da70a15b63427083e678748a99a6abb790f8
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Oct 21 17:34:09 2005 +0000
-
-    prepare 0.10.0 release.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2652 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 46021acdaac43ca5b4512d910f13c3dad24fd16d
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Oct 20 12:55:17 2005 +0000
-
-    remove QUICKSTART (outdated and replaced by wiki documentation "QuickStart")
-    and add README pointing people to our wiki / html documentation.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2651 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e0465478e7e05f29ee5623e45c0f211073caaf92
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Oct 17 08:00:44 2005 +0000
-
-    update by Peter Koch.
-    still one problem left in pkcs11-tool, but lots of improvements.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2650 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ac8571de2fa35740715bd1743022ba75a4a69a4a
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Oct 15 14:53:18 2005 +0000
-
-    Comment config file lines that have default values.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2649 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 58943d59b5c1974a39739e9a2fe0f809c8227bf7
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Oct 13 11:19:25 2005 +0000
-
-    Compiler warning fix: use 'char * argv[]' in main() because getopt_long() does so too
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2648 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ff795fb1e629bf101c25450f8315d13ae3dffd58
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Oct 12 17:52:56 2005 +0000
-
-    bugfix for a potential segfault in card-setcos.c when the
-    acl "pointer" is one of the special values 1,2,3
-    
-    Patch supplied by Jakub Bogusz <qboosh at pld-linux.org>
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2647 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e81d74ba0e8563fd5e7d282b50f3033876c75955
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Oct 12 13:37:10 2005 +0000
-
-    use *.[1-7] instead of *.1 *.3 *.5 *.7 to avoid the (harmless) error
-    "ls: *.7: No such file or directory"
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2646 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ba303233ffeafe72449f10dc11b73dedce54254e
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Oct 11 20:57:15 2005 +0000
-
-    fix compiling on solaris9. Thanks to Douglas E. Engert
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2645 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d631b554c950e51eb3bd94c58591ccfb08b334ab
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Oct 10 19:24:16 2005 +0000
-
-    masquerading is no longer needed on windows or mac os X and
-    never was on linux.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2644 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit bae9b568692885ffa03be4f5eb3c2f0090614ac7
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Oct 10 08:07:14 2005 +0000
-
-    fix typo.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2643 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d858b4f84c442820e3854d045c805cec2e620fe1
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Oct 9 22:15:35 2005 +0000
-
-    fix build with openssl 0.9.8:
-    move "#include <openssl/crypto.h> up and remove unnecessary
-    include for asn1.h
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2642 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6eeedc7d5f52d5bd9157d3880c1b80826be15094
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Oct 9 12:00:34 2005 +0000
-
-    fix typo
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2641 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c7a8e84caf6fe689cff910c34684e188f720c36d
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Oct 8 11:08:34 2005 +0000
-
-    suppress errors in pkcs15 card detection if we don't know whether we really have a pkcs15 card
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2640 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 191f2af7ab66f4553939ab6f8360a7b8cf13682b
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Oct 7 20:04:33 2005 +0000
-
-    set the ca certificate only if it's really present
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2639 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit cee5f2a1475cd8f6a826a7b33c621ebd7f3f2609
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Oct 7 19:58:43 2005 +0000
-
-    print lastUpdate field as well
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2638 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b15a7941a65a7092b54402a69ff9a49645902de0
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Oct 7 11:40:10 2005 +0000
-
-    define HAVE_PCSC on darwin with native pcsc
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2637 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 43d3408938dc5a8038c5ea9887e1699b060aead2
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Oct 7 07:06:16 2005 +0000
-
-    add a few details about the card, also by Antonio Iacono.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2636 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d1cbf05abfefeef52aaab80bc4adbf255ae06f47
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Oct 6 19:30:18 2005 +0000
-
-    add --dump option, thanks to antonio
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2635 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 19ad0e38b0c92b08017c7ccd2b4e71fb3276694b
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Oct 6 18:23:57 2005 +0000
-
-    enable masquerading by default for pcsc.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2634 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 450e4121fb46cb30a588ee2e868a11608e0ef7b6
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Oct 6 10:28:04 2005 +0000
-
-    Fix the #define in pcsc probing, move pkg-config code before the darwin-specific code so that
-    if a pkg-config enabled pcsc is installed you can simply use PKG_CONFIG_PATH to detect it.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2633 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8fb4d9fc4c5ae2b74f82e9685a5bdaf160adb47a
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Oct 6 06:57:07 2005 +0000
-
-    Better name, as suggested by Ludovic.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2632 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 163176fd4584d4c07eb7f61611413dc476323bc0
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Oct 5 15:25:27 2005 +0000
-
-    __APPLE__ does not need special handly. Only the broken pcsc-lite shipped
-    in mac os X does, so use define set by configure on mac os X, if the
-    default pcsc is used, but not if a self compiled is used.
-    
-    teach configure new getopt source file names.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2631 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 40ad6b003710d1b0d787bf4bc311e18813a8a71a
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Oct 5 15:23:51 2005 +0000
-
-    replace GNU/glibc getopt (LGPL) with my_getopt (BSD).
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2630 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8f230f5c1db67b8f5b44024bd05f3a6e3e17ca96
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Oct 1 18:51:34 2005 +0000
-
-    Do an sc_lock() before an sc_pkcs15init_bind(). Reason: in sc_pkcs15init_bind() an sc_lock() and sc_unlock() is done; and when the lock_login config option is set to false, the sc_unlock() will call logout() which for some cards means a SELECT(3F00) -> unwanted change of the current EF/DF causing errors
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2629 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9d4d8ec98a3a55e1231cd25f22ec293a2407bd05
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Sep 30 17:44:42 2005 +0000
-
-    reomve unneeded ifdefs.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2628 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6effc69169838c85bbc4c35aec747c2c0ac9e32c
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Sep 30 11:17:06 2005 +0000
-
-    Removed the bundle on Mac
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2627 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 90d0046a24e2d8566481c444d450fcce2cf3bc39
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Sep 30 06:35:29 2005 +0000
-
-    "Unsupported" might be easier to understand.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2626 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 10fa4a696271e8fc55f7b5baf13e5586ab9d0786
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Sep 28 14:52:32 2005 +0000
-
-    Fix: deleting a cert chain with 1 or more intermediate CA's crashed
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2625 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4be1f40fd318d8dac3c6e31c002da96934ec1f38
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Sep 27 17:22:48 2005 +0000
-
-    add option to specify the key length
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2624 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 06e1239a892039419caa90203935a5de27d7e8a2
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Sep 24 17:45:54 2005 +0000
-
-    new tcos atr provided by Gerald Richter.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2623 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7bf15d3d7d426a12eef57b8bd8dd3441ad00fcdc
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Sep 23 15:47:44 2005 +0000
-
-    replace gpl'ed and old version with new lgpl'ed version from glibc.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2622 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 07159961b9e7f5ad592bf8bf20d2753fc949cc2a
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Sep 23 15:46:05 2005 +0000
-
-    proper reference to src dir.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2621 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6b72db91f34398540d6ab881ee80971aa5245c33
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Sep 23 15:45:27 2005 +0000
-
-    list all current macro packages.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2620 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 090329c105b1ebe6027638e824b63ea61efe23fc
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Sep 22 14:53:12 2005 +0000
-
-    add init perso guide by Nils.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2619 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7d2ebb11c4a969583cadca8adb6e8153228a4866
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Sep 22 14:51:21 2005 +0000
-
-    scdl is replaced by ltdl, libp11 and sslengines are not standalone.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2618 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1d251cfa7a9f8395f3fa4e5fa91363c43c940a96
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Sep 22 13:15:11 2005 +0000
-
-    Document cryptoki header files.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2617 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d9bd91330673e35741bc45a637115c880f02a35b
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Sep 22 12:45:31 2005 +0000
-
-    No SC_AC_OP_DELETE for EFs
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2616 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8ca0cd1ed682be8f1de60e89dccbc4d8e57f6630
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Sep 22 08:50:16 2005 +0000
-
-    Also remove the bundle stuff from configure
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2615 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7d5d0ecfb230641105f8aac857c345c226c93d25
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Sep 21 20:18:37 2005 +0000
-
-    scconf no longer needed for pkcs#11 spy.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2614 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d05e28d1f5698377bba83fb2c7087ad1aac11b5f
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Sep 21 20:17:22 2005 +0000
-
-    do not install bundles on mac os X. no reason to.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2613 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit fe64862a1efd88f6afda7ba7d281d817ca4e91ab
-Author: bert <bert at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Sep 21 18:55:13 2005 +0000
-
-    Added Peter Koch's netkey-tool manpage
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2612 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3c47bb093c3ad3c332b2f7eb6f2c440be6aaafb8
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Sep 21 12:52:36 2005 +0000
-
-    Fix makefiles
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2611 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 73294da5c980d4d8da1f1ea7dcc2ebca79e15c80
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Sep 21 10:10:15 2005 +0000
-
-    It actually helps to have make clean on windows too
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2610 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c9147cf283abce27a8859aa908d6c2820c0b58cb
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Sep 21 10:09:56 2005 +0000
-
-    don't know what it was for but it's not needed now.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2609 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 75d8f0492ee7be561b0539bfa53cc91498c144e7
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Sep 20 22:22:31 2005 +0000
-
-    fix TPDU if T0 is used
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2608 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 49ff7ff11dc4d254ea23cad599dfdfdd27f13bd2
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Sep 20 07:32:18 2005 +0000
-
-    adding libtool.m4 was a bad idea and causes problems. undo.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2607 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 052a4933ae57c8422015cb406d47afa061d4456b
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Sep 19 16:37:19 2005 +0000
-
-    remove unused variable
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2606 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 81b47ab8a4173ce1125bd4ee705404d75d31d560
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Sep 19 08:09:44 2005 +0000
-
-    use_color(): add "rxvt-unicode" to the list of terminals supporting
-    colors
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2605 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 92789b9837c55576687d76e5e60d599d76022eac
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Sep 18 20:29:36 2005 +0000
-
-    undo change 2397 as it breaks openct and
-    you can use apd_masquerade = case4as3 instead.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2604 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6c1d35e0625abef3cc6cb677de5b45d44b81864c
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Sep 18 12:33:31 2005 +0000
-
-    make openct readers configureable.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2603 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 881c80d83925e1f3aafc1304fb51d49dedb34804
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Sep 18 11:00:00 2005 +0000
-
-    pkcs11-spy no longer uses a config file.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2602 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6abeaf1f1c2a3237236f5d9d13d16d9562b76fd6
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Sep 17 10:44:45 2005 +0000
-
-    add a new function
-    	void sc_mem_clear(void *ptr, size_t len);
-    to clear a memory buffer. If OpenSSL is used this function
-    is a wrapper for OPENSSL_cleanse, otherwise memset is currenlty used.
-    
-    Use this function to clear memory buffers with sensitive content.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2601 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 47d2baf5a3eba0d97108192108de2a049dcf0a29
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Sep 17 09:40:12 2005 +0000
-
-    use calloc instead of malloc + memset
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2600 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f60996526a05e22187e77c2883a9c95579e400ed
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Sep 17 08:53:25 2005 +0000
-
-    remove useless memset
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2599 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 142d18378bc24856f3dcd4b4a776f42328d91b5d
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Sep 17 08:20:13 2005 +0000
-
-    don't use static buffer in iso7816_build_pin_apdu
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2598 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d00d795782636b4e728b201edda6afae1c9cd92e
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Sep 17 08:04:26 2005 +0000
-
-    fix warning
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2597 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 55418c5ac315d93c5e224fad752801b60ca13881
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Sep 16 20:31:06 2005 +0000
-
-    log dlerror message when dlopen failed
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2596 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5123be2b85db185c5764c2bbcdf07b6beb739e34
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Sep 16 10:18:55 2005 +0000
-
-    add two new functions
-    	sc_reader_t *sc_ctx_get_reader(sc_context_t *ctx, unsigned int i);
-    	unsigned int sc_ctx_get_reader_count(sc_context_t *ctx);
-    to access the reader_count and the sc_reader objects (to avoid accessing
-    the sc_context members directly).
-    Use these functions in src/pkcs11 + error checking to avoid accessing
-    invalid sc_reader objects.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2595 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit aec4a81304657d997d7b903a01b7ab9c7bf1ed3b
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Sep 16 08:55:09 2005 +0000
-
-    add pkcs15 emulation support for a cardos based id card issued by tc trustcenter
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2594 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 00be34c4a216a8fbd5f7590671bebdff130e4d2c
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Sep 15 19:40:20 2005 +0000
-
-    Added certificate update functionality
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2593 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e15c54e1c55b5065195d4a8c48a38517bd1af75c
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Sep 15 05:55:53 2005 +0000
-
-    Win32: we now need the external libtool package
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2592 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ca3be84ffb792eb6bdb149665020b82d22f6bc96
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Sep 15 05:41:29 2005 +0000
-
-    Fix warning on Windows compiler
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2591 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit fdaf2c8728a0a75d3ab69c2fc708159517fa9039
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Sep 14 09:50:30 2005 +0000
-
-    use -nv instead of --non-verbose since wget 1.10 now uses --no-verbose
-    instead. Grr!
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2590 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4f2ac875d0994555681f8fa1473194b1f14fcf0e
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Sep 13 10:46:17 2005 +0000
-
-    fix ChangeLog generation.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2589 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 426eafdf90393753417edec4f7bda01f9eee5932
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Sep 13 09:42:02 2005 +0000
-
-    generate and ship ChangeLog and HTML.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2588 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 595e14304527e433c0f3777dbd379cd21d3bc623
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Sep 13 08:13:13 2005 +0000
-
-    Added setcos.profile (thx JP Szikora)
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2587 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f4dd1dcd3d9de029deabad88e2b4c84e80443e2a
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Sep 12 21:16:41 2005 +0000
-
-    disable network connections by xsltproc.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2586 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 59cae4140b66b0a184903f90ae8bd761cb521892
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Sep 12 21:09:12 2005 +0000
-
-    fix compiler warnings
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2585 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a358f65e3d5855589110c3c06f0ca067d5bfd17a
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Sep 12 20:13:55 2005 +0000
-
-    more makefile fixes for man page stuff.
-    add ChangeLog generation using svn2cl.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2584 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 87c3d4406eac8f5b9d06e8f467150c6761008ed8
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Sep 12 17:34:00 2005 +0000
-
-    remove html files on "make maintainer-clean".
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2583 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3aa186ec88db9ca81092091cc0792cc711d2b71b
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Sep 12 17:32:52 2005 +0000
-
-    remove man files on "make maintainer-clean".
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2582 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit df30dd0ceee89862e08d2eb066f7f9f4200ac9c0
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Sep 12 17:32:20 2005 +0000
-
-    rename *.xml.in to *.xml.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2581 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 05c2f9e26d89d9340cea199e1bac6de3c3c6666e
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Sep 12 17:12:56 2005 +0000
-
-    simplified make.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2580 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 173d8a1640767aa33a05df77cb71fd89a3ce94be
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Sep 12 17:12:10 2005 +0000
-
-    remove doc/src, add replacement script to render these files.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2579 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 74dbb3885034d0c7f4a9cd0bac2242b5111a1e9a
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Sep 12 17:07:40 2005 +0000
-
-    remove one unneeded sublevel.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2578 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 84c7df3982928e15322bc172a8028c94bbe11b81
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Sep 12 17:07:05 2005 +0000
-
-    don't touch pkcs15-profile.5.in.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2577 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 94d0b7c6409bd938394f1d7a74e04ed9d02a39d6
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Sep 12 17:06:34 2005 +0000
-
-    move old manpages to old/.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2576 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8edccc629995a5bee15ea92192f5566a69b79638
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Sep 12 08:32:04 2005 +0000
-
-    add gemsafe as well
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2575 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b137131819e846b4dd06e1b1428c3114dbe68435
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Sep 12 06:42:08 2005 +0000
-
-    tcos not netkey
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2574 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ba179c1bb3539a1fbe4c1a6c2d0a6fec5b9a4884
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Sep 11 21:06:49 2005 +0000
-
-    remove superfluous comma
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2573 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 511790880ba2da37306cb9dfa06f27033d0206c3
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Sep 11 21:05:25 2005 +0000
-
-    more pointer madness to make the compiler happy
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2572 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d0f1b085e98576370f175557fd2e6fefb7d561b0
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Sep 11 20:40:58 2005 +0000
-
-    fix function pointers
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2571 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit fd86e44094266ecb5043e16dfb6a31eacd00ba78
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Sep 11 19:57:43 2005 +0000
-
-    Typo fix
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2570 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit fd115bbe8990773ba47766de53c596af688dfe57
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Sep 11 19:49:55 2005 +0000
-
-    set assuan status for the summary at the end.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2569 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e242d34e9b0bed9d1859cebcc828039798eafd21
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Sep 11 19:49:19 2005 +0000
-
-    "NEWS" is the file for manual editing, and doc/ChangeLog will be
-    auto generated from the svn repository / log.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2568 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 917749dc73f851bb83a6f5ae789978d4b5af7573
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Sep 11 19:48:27 2005 +0000
-
-    AUTHORS: now in the wiki. README: now in the wiki.
-    people will find the "doc/" directory, I'm sure.
-    remove ANNONCE, as it is always outdated.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2567 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 68a49360d20746a90c3dc5cdcb8f0b52135357d5
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Sep 9 19:51:38 2005 +0000
-
-    pkcs15-netkey.c -> pkcs15-tcos.c
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2566 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 02cc450be0e971d11a651ab0b9856aeaff683334
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Sep 9 19:30:43 2005 +0000
-
-    update tcos pkcs15 emulation drivers; patch supplied by Peter Koch <pk_opensc at web.de>
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2565 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 21e3b71029c39b7c0a1d96e85c0da7f1af7db1fc
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Sep 9 14:43:59 2005 +0000
-
-    use ltdl not scdl.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2564 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 138a1d7e8c7430d357889fba3f7b4df2bd337949
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Sep 9 12:45:02 2005 +0000
-
-    add autoconf voodoo to circumvent the caching.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2563 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1a3968b435be0157282802a2abc9049f4ffc43d0
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Sep 9 12:32:05 2005 +0000
-
-    oops, ugly bug in configure script. set those variables,
-    if the user did *NOT* supply any of them himself.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2562 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6035a9c0264f136de08fcaddbe352814127d79ac
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Sep 9 11:32:21 2005 +0000
-
-    No ENGINE_MSG in configure.in
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2561 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6dcb5fb1f95bc0c39e450653cdc5cd1e50cd3a20
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Sep 9 11:31:37 2005 +0000
-
-    RIP, scam
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2560 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 418e87f944dc1e3c6881195109064af232ea50c5
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Sep 9 07:15:03 2005 +0000
-
-    select file even if no acl for writting is set; patch supplied by Tarasov Viktor <vtarasov at idealx.com>
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2559 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c9e80e95ea5ca42b03625377e8007e2742859a1a
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Sep 8 17:21:58 2005 +0000
-
-    we use libtool for linking, so it can calucalte the dependencies using
-    LTLIBLTDL better. Thanks to Ralf Wildenhues.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2558 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ce14d27cb31797b49c53feb5dc990e3a8403607e
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Sep 8 17:15:07 2005 +0000
-
-    AC_SUBSTed variables are better used with $(..). Thanks to Ralf Wildenhues.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2557 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6c4e5c191d2b14cb870d8c14d54308d661f83d04
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Sep 8 17:06:41 2005 +0000
-
-    fix AC_MSG_ERROR usage. thanks to  Ralf Wildenhues.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2556 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d00aaaa9db34ce253873bb22a67913e3ebe0729f
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Sep 8 16:52:16 2005 +0000
-
-    aclocal -I aclocal/ (as suggested by Ralf Wildenhues)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2555 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 596bbcd7deb51dca8040305b48eda4b27a411ea5
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Sep 8 14:27:18 2005 +0000
-
-    proper use of CFLAGS push/pop. fix overwriting CFLAGS.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2554 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8596348a75898b301f9001fbe8ce79fccecdbe1c
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Sep 8 11:35:26 2005 +0000
-
-     * Get rid of reset card error that comes from pcsc only and deal with reset situations with SCardReconnect
-     * Add some options to control pcsc behavior.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2553 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7a2fec9b86e9e2fedee0802be71ef9401b0d36ce
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Sep 7 20:05:13 2005 +0000
-
-    remove dependence on libopensc, instead use scconf directly.
-    Note: this code is still experimental !
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2552 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9f26a4ae35c37c7f4cab3583c0500820b5492575
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Sep 7 09:34:27 2005 +0000
-
-    fix warning
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2551 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d37315ec35681afce8c339903efd45f20aa180ef
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Sep 7 09:32:52 2005 +0000
-
-    cleanup key usage handling, cleanup
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2550 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f9db1705202a3aed8459166a286a334fc93a3334
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Sep 7 09:20:24 2005 +0000
-
-    we need libltdl
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2549 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 559e51e4a097f6ce44a0d1ccfda49b34ebb031c3
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Sep 7 09:05:11 2005 +0000
-
-    fix openssl configure message
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2548 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit cfc64a494eb62c8facbd5f91862c1721d550e9fe
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Sep 7 08:47:13 2005 +0000
-
-    let src/libopensc/ compile with -Wall -W -Wno-unused-parameter -Werror
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2547 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f6c95792fe8e763dc8b71baf4fc676102b8a9f37
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Sep 7 08:33:55 2005 +0000
-
-    let src/libopensc/ compile with -Wall -W -Wno-unused-parameter -Werror
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2546 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 13a3e699e5c2b6665868544e2c2da1f456015776
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Sep 6 21:18:26 2005 +0000
-
-    adjust key usage bits
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2545 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 08a640c94b2bef9fa32654dbe4e9c90f5c3a4bd6
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Sep 6 20:22:15 2005 +0000
-
-    users of libpcs11.c also need @LIBLTDL@ libraries.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2544 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit cdc553bcec5fb673e7f16eb585389b2a54474cb6
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Sep 6 12:40:38 2005 +0000
-
-    man page fixes from the debian diff.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2543 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a59faf395d2c2a5bbc974c69abffece9d5b37e7a
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Sep 5 20:44:51 2005 +0000
-
-    fix compiling with ltdl.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2542 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5b9ac59d73a9f48ed72c74e09c2bd1978bd2ffda
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Sep 5 20:15:38 2005 +0000
-
-    fix openct detection. fix assuan detection.
-    improve libltdl detection code.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2541 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 047cb62d4503ce465bb8cb8fee7efbfc1d71db6d
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Sep 5 20:15:08 2005 +0000
-
-    add macro packages used by opensc.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2540 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0d2e17b14f2845393525058cb323eed28c2d1abc
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Sep 5 20:13:26 2005 +0000
-
-    add additional m4 macro packages used by opensc.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2539 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ffb7928f6e50a4dcd40c140a8acd469da65619a7
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Sep 5 17:05:26 2005 +0000
-
-    we need lt_dlinit()
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2538 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d744a6e5f555670d341bdf28a79dcddfcb31a302
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Sep 5 11:29:57 2005 +0000
-
-    Include reader.h if found.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2537 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c8356689e029bd9681a9ac507a29921ab0d362f2
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Sep 5 06:44:52 2005 +0000
-
-    make export-wiki.sh executable
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2536 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 61f894a2c35adb90d60584f1c7e8234818603b9e
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Sep 4 09:23:28 2005 +0000
-
-    yet another atr + cleanup
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2535 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9ca1bc2a09e7c2b30d037c20cd811f569fb77e48
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Sep 4 08:57:17 2005 +0000
-
-    remove unused internal function
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2534 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ff14d0d4829b5bd23e82f6ee5226ec8e90e941a5
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Sep 2 16:53:08 2005 +0000
-
-    one more change to "make dist" style documentation generation.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2533 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9ad77a81559aeaad2919fdeb3642cb18aae457fd
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Sep 2 09:51:47 2005 +0000
-
-    "doc" does not work well, it is the subdirectory name.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2532 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f1dc04f5c290ae5644f633b9d753bcaa6e10b685
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Sep 2 09:29:55 2005 +0000
-
-    dist-hook: is too late, need to generate the documentation
-    before automake "make dist" copied files around.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2531 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 25cb1a3ca12a4dafe94670b547e01a855d68c3ae
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Sep 1 20:51:54 2005 +0000
-
-    fix compiling with openssl installed in a non-standard location.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2530 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit bde55826ed684110159877402a635d414fa6d2be
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Sep 1 17:18:02 2005 +0000
-
-    proper documentation cleanup.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2529 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ff62b88e1c27b4e6cb6fa67658622872008e31f3
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Sep 1 14:01:58 2005 +0000
-
-    big configure update.
-    use pkg-config for openct, openssl, pcsc.
-    do not compilke libp11. do not compile sslengines.
-    remove scdl. use libltdl instead.
-    use libassuan.m4 macro for m4 detection.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2528 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7770e891151d5f5e08ec120f54775acaa4f96767
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Sep 1 14:00:23 2005 +0000
-
-    remove trac.css from svn. add script to generate documentation (old one).
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2527 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9c12242fc80256d0ac3f59769b262331a4fe7ad0
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Sep 1 13:59:41 2005 +0000
-
-    big documentation update. remove html from svn.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2526 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d8639b16ce1549f19d337002a3393cf032d43cac
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Aug 29 20:48:00 2005 +0000
-
-    The lastUpdate field is in the EF(TokenInfo), not in the ODF (thx Nils)
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2525 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 891ed0f197c2df7b8150f3c42b006698099e09df
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Aug 29 12:49:53 2005 +0000
-
-    Added Netscape/Mozilla specific types etc.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2524 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 96519c6b723025fae42c27ed8fdcc98312c6fab5
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Aug 28 20:18:52 2005 +0000
-
-    stop building libp11 and the ssl engines.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2523 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit bae2b51e01e16c126613289dd68e75545d3dd333
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Aug 26 19:35:33 2005 +0000
-
-    Fix in new_file(): if there's already a key with such ID, take next one
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2522 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit bb2506cff9b855ac89dc9a6316c4815c518d310c
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Aug 26 19:33:52 2005 +0000
-
-    Return the real pinref
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2521 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 89dacc6c82c445bf27cde531318b0bff9c0401b8
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Aug 24 16:18:24 2005 +0000
-
-    fix compiler warning
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2520 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ed9e92598951d9744fbfb3f5c8399a3946a6f923
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Aug 24 16:11:46 2005 +0000
-
-    Improved ACs
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2519 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3b6a90000a3f74a1936ab05e073b8b73a5795cb1
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Aug 24 15:59:01 2005 +0000
-
-    add missing include, removed unused variable and initialize variable
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2518 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9cbac71de95ff6d6c7061c8a558f7d3e23ceb16b
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Aug 24 15:54:43 2005 +0000
-
-    decode preferredLanguage field if present
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2517 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 850cea465b3ca082015964c34727be08a7d5b9bd
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Aug 24 14:25:23 2005 +0000
-
-    move PKCS11_open_session() from libp11-int.h to libp11.h
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2516 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit bd76165319b8b1fa8883e6dd5fe6eae07fb7ed1f
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Aug 24 09:50:48 2005 +0000
-
-    Have the option not to update the ODF (the lastUpdate field), this is usefull for cards that don't have an ODF that is un-writable or too small
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2515 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit eec0e22b037ae744d28f63dac53b6db8d21af3f1
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Aug 24 08:00:44 2005 +0000
-
-    de-/encode printable strings as well
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2514 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 260723da53c1420e7d0182eb30d376815a9ea7c3
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Aug 23 21:16:55 2005 +0000
-
-    cleanup
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2513 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8e3dee05854727221cef7c06d2ab612a64bc4b6b
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Aug 23 09:01:57 2005 +0000
-
-    Added set_userpin_ref() to link a PIN value to a PIN ref for an existing user PIN
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2512 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 858ea38e97c9891d82732080953171ec88ef2d57
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Aug 22 12:53:17 2005 +0000
-
-    Add support for SetCOS 4.4.1 card. Add support for deleting pkcs15 objects.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2511 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1d05f32bc46e9942b262f4cf74e4b56678567cc9
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Aug 22 09:37:54 2005 +0000
-
-    mark card/profile as dirty when an object has been deleted
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2510 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a28aa1f9174ed31136daf0809d0b935f7a30633c
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Aug 22 09:37:02 2005 +0000
-
-    avoid warning
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2509 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 26108b0280e18c74d91eac32903eb70db92ef3d0
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Aug 22 09:23:46 2005 +0000
-
-    Added support for deleting pkcs15 objects (if the pkcs15init card driver for that card supports it)
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2508 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8ba443d1d916ed95928fe1bba0992b711dd72f17
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Aug 22 09:22:25 2005 +0000
-
-    fix parameter type
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2507 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b5e2a2afff89516591ff09245a51af77ac274c1a
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Aug 22 09:20:13 2005 +0000
-
-    Added support for deleting pkcs15 objects, each card driver should implement its delete_object() operation in order to support it
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2506 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b9efe849eb4364293d2be4ee4058c3b99ce168f2
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Aug 22 09:17:44 2005 +0000
-
-    add support for serial number in card-oberthur.c; supplied by Tarasov Viktor <vtarasov at idealx.com>
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2505 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0d7b025a4ba9f9770a3072074fadf94bb3d97ec3
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Aug 22 09:15:57 2005 +0000
-
-    add missing variable
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2504 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7ffd68a9ee44bf3d55445a75d773a0225e23d104
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Aug 21 18:44:07 2005 +0000
-
-    Make the pcsc pinpad option work.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2503 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 924a118501b9928dc245b5d4899a285e763397d5
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Aug 21 18:39:43 2005 +0000
-
-    Don't cache pins that protect a userconsent slot.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2502 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2fb54dd374897b59f1d9c61384263daf2a8462ab
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Aug 20 13:39:18 2005 +0000
-
-    use compile time initialization for the iso_ops structure
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2501 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 08b415a5a3eeaec9e25c20a409ca4347d45c19f7
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Aug 20 11:06:18 2005 +0000
-
-    use non-repudiation flag only for the signature key
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2500 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f855074c27df4046debec008da1dec28af069621
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Aug 19 17:56:56 2005 +0000
-
-    check result of sc_file_dup + some cleanup
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2499 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f317e2966afba6680a8367be83f6950d1e1dc83f
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Aug 19 06:39:16 2005 +0000
-
-    sc_file_dup(): copy attributes as well, use explicit assignement and check return values
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2498 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7ff54c7e2eb5535d1fbc4ef5ac7d2192ba3f7f54
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Aug 18 22:43:01 2005 +0000
-
-    use calloc instead of malloc + memset
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2497 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit edb11bd2ea50d3e10c2fc61b914455e2261c3ddf
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Aug 18 21:14:19 2005 +0000
-
-    Fix: object type contains not only the class
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2496 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6c20b6a6ad0c71c03ce9cc6016afc7f56a390920
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Aug 18 14:01:54 2005 +0000
-
-    Undo-ing accidential commit of card-belpic.c and pkcs15-sec.c
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2495 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f43d52476ec8e8365861182101b379e58e8e5ab6
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Aug 18 13:55:36 2005 +0000
-
-    The lengths of the ASN.1 entries are used outside the if blocks -> declare them outside the blocks
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2494 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 25d3148ef6b30a0814f84a1112eb5cdf355b1ba9
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Aug 18 08:39:29 2005 +0000
-
-    use _LIB11_H instead of _LIB11_INT_H
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2493 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit df86e3f8acc537eed1d8f15351f5eaf036bace8b
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Aug 18 07:06:13 2005 +0000
-
-    PKCS11_CTX_unload(): do not call ERR_free_strings() and
-    ERR_remove_state() since OpenSSL strings may be used by the application
-    and we can't know
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2492 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b143ac5637c7db7b062468d9efb0b78fa149a953
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Aug 16 21:35:13 2005 +0000
-
-    add support for signature generation with a decryption key; patch supplied by Peter Koch <pk_opensc at web.de>
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2491 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9a49854fdc9e988cf10c7e4505a334e06247b251
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Aug 16 12:10:24 2005 +0000
-
-    use ERR_LIB_USER instead of 42
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2490 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit decb9297dd1468b8be2b299800b642b654420c0b
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Aug 16 11:05:09 2005 +0000
-
-    add PKCS11_change_pin() function
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2489 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 305b68f10b40c9638ecb3790f7cbc1881d91068e
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Aug 16 10:58:16 2005 +0000
-
-    summary:
-    - do not use key enumeration as a test of login status, as this will
-      not work for all PKCS#11 libraries
-    
-    - replace magic number used for PIN length with a constant
-    
-    - add documentation for set_pin, as well as testing for NULL input
-      and checking for strdup failure
-    
-    - made the global variable 'pin' static (TODO check if other global
-      variables can be declared static)
-    
-    - if a PIN is allocated, then check for NULL
-    
-    - if a PIN is to be freed, then whiten the memory first
-    
-    - if the token has a secure authentication path, then the PIN shoud be
-      NULL (as per PKCS#11 v2, p. 126)
-    
-    - replaced some fprintf statements with 'fail' (TODO all
-      fprintf calls should be replaced with log functions)
-    
-    Patch supplied by Geoff Elgey <Geoff.Elgey at quest.com>
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2488 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d6e5facb0d89aaf476ebe856c962e8fe519c475f
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Aug 14 22:33:43 2005 +0000
-
-    make old compilers happy
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2487 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5adbeff6e02343d2c365ca8e2a95640afb972670
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Aug 14 22:00:28 2005 +0000
-
-    fix typo
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2486 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 59e1f37bb2d84c587077d47f96439387605505df
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Aug 13 13:26:46 2005 +0000
-
-     * Clean up some whitespace
-     * class2->part10
-     * Make pinpad detection a configurable option
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2485 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 99c3efb3edcb4d3ce679e980c566b660c083aa7c
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Aug 13 13:14:06 2005 +0000
-
-    Add a check for reader.h
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2484 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0f0f28107c6144c28a7326eaa60e0cb36718ac05
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Aug 13 13:10:44 2005 +0000
-
-     * Remove PAM_README as it is not valid any more
-     * Remove dead files from Solaris package script
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2483 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit fc3048f55ed8c531e63865f11c01cedfe7d24cc4
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Aug 13 13:04:02 2005 +0000
-
-    Remove the (stupid) use_pinpad option from pkcs15 structures
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2482 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a20f0d576e0e05854fd2db911ba11d7ed545a7d4
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Aug 11 19:14:23 2005 +0000
-
-    two small fixes from Tarasov Viktor <vtarasov at idealx.com>
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2481 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4d48735d10c2a7806b37af10085a19fff69a9afe
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Aug 10 21:31:18 2005 +0000
-
-    initialize sc_pkcs15init_operations at compile time
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2480 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f8d663433994424cb17dd45c8713382f5eb56cc4
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Aug 10 21:00:52 2005 +0000
-
-    set obj to NULL to avoid double free in case of an error
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2479 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 25950cb01a8bd64d3b2a71f4ee2cb5812e54623b
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Aug 10 19:04:08 2005 +0000
-
-    use inttypes.h instead of stdint.h; disable read_ssh_key when no uint32_t is available
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2478 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 39373c1ec8ceb455ba7d13dabbeac151d000795a
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Aug 10 18:20:04 2005 +0000
-
-    initialize the oid object, patch supplied by Tarasov Viktor <vtarasov at idealx.com>
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2477 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6dc33041aab535fb350c506d11c87138ed81a0c1
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Aug 9 21:27:50 2005 +0000
-
-    include sys/types.h if stdint.h doesn't exist + fix typo
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2476 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 86ad1a7c2bedd1c43f866e4cd61bb7c36ad2aee4
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Aug 9 21:13:50 2005 +0000
-
-    check for stdint.h and remove checks for pam stuff
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2475 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3da0e1b8cdc11e2eddbfe11033de5b29a64abda0
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Aug 9 18:21:50 2005 +0000
-
-    allow up to 64 byte long pins
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2474 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9ea0db132e901f926a389bc49d02f3fcf8462e93
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Aug 9 11:51:17 2005 +0000
-
-    PKCS11_login(), PKCS11_init_token(), PKCS11_init_pin():
-    use "const char *" instead of "char *" for pin arguments
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2473 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d1311aa96596d8f5dd5ff28c713f28e49203eae4
-Author: ludovic.rousseau <ludovic.rousseau at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Aug 9 11:48:39 2005 +0000
-
-    pkcs11_strdup(): use "return NULL;" instead of just "NULL;"
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2472 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a3ae7da3ab7505082c0741fefa04dd4965b22392
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Aug 9 07:53:59 2005 +0000
-
-    oberthur updates from Tarasov Viktor <vtarasov at idealx.com>
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2471 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2b6a2cb19cdd6f423f5a7d6110b145f8572c2f5e
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Aug 8 14:25:19 2005 +0000
-
-    One of the memset()s appears to write too much zeros on some systems -> put all the data in a struct and memset() this instead of each field separately. Thx to JP Szikora for notifying.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2470 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 45a9d058300a6ede802b57a17380104295561ee0
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Aug 8 10:22:14 2005 +0000
-
-    cleanup, mostly signed/unsigned issues
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2469 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 148b7900f7f2c96f87bb4fc879fb3f4dd1976e8d
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Aug 5 19:07:24 2005 +0000
-
-    Add support for the lastUpdate field to pkcs15init. Add flag to
-    indicate whether some data has been changed to the profile structure
-    and set the flag in the functions which change the card contents.
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2468 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 69ffd496b2a55a77570428129ae1d909385bdcd8
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Aug 5 17:18:10 2005 +0000
-
-    the apdu error codes are unsigned => change sc_check_sw and the card ops check_sw
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2467 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 44384eccbf55abadc8d4b57779f21077ccf09d23
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Aug 5 16:24:35 2005 +0000
-
-    - Initial support for TokenUpdate;;lastUpdate field. Change pkcs15 caching
-      code to use the card serial number and lastUpdate field (if present) to
-      specify the cache file.
-    - consistently use unsigned data types to specify object types
-    - make sc_pkcs15emu_get_df a local function (it's not used outside
-      pkcs15-syn.c and honestly I see no reason to export it).
-    - start of a new ChangeLog file (with some intial entries)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2466 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b3992394fc39e380a6d8cdc60072ab0dc6c76ee0
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Aug 5 15:03:39 2005 +0000
-
-    more cleanup
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2465 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ed3ba0231ee95ad9d6597b4eb341bcf5e1664a75
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Aug 5 07:28:20 2005 +0000
-
-    improve generalizedTime support + more cleanup
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2464 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 23802d825ed4ce8ec5ac8622431f0046cd736a06
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Aug 5 07:24:43 2005 +0000
-
-    properly initialize sc_asn1_entry elements + some cleanup
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2463 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b12711e6b30d558486f293674f5e3fba60ca227e
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Aug 4 06:29:35 2005 +0000
-
-    Reverse the export of function parse_x509_cert()
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2462 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit eab657fb523f8fce546e008ce772d1155674dce1
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Aug 3 18:43:40 2005 +0000
-
-    change sc_bin_to_hex separator parameter from char to int as character constants are integers in c
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2461 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4dd3c3f3825d10cde217c5fa87cd0aa2a9aa13ee
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Aug 3 18:29:21 2005 +0000
-
-    cleanup
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2460 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d443d373a44dc42fc46ba535df07f6ccbeb5cceb
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Aug 3 11:33:14 2005 +0000
-
-    More typo fixes, from JP Zikora
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2459 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 41889b27a16f53a632d33e7f57f32cf8a09288a0
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Aug 3 09:07:09 2005 +0000
-
-    Export function parse_x509_cert()
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2458 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 37cd955055ccd48c5d0a15425e4fa6393ee66628
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Aug 3 09:05:09 2005 +0000
-
-    Allow to seach a data object by it's application OID
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2457 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d0f267468e2ae141560df1803ff98e9fc4d3519f
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Aug 3 09:00:00 2005 +0000
-
-    Added function sc_compare_oid()
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2456 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 94d899931e9d4159bb6b53e89566ebe9f0075025
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Aug 2 21:13:06 2005 +0000
-
-    cleanup
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2455 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 080887c62f72d1d8d279bc5839c86ed67eabbf11
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Aug 2 20:48:27 2005 +0000
-
-    Typo fix
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2454 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0a8401a776e0322d1b8bac1e2241d36e317c4c26
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Aug 1 08:59:06 2005 +0000
-
-    check malloc return value
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2453 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 90003b36b719bca4bf318d823701ad009e1f8030
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jul 29 21:21:03 2005 +0000
-
-    Added support for the Belgian EID card (shows the contents of the ID and Address files)
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2452 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 90de6236295dc15e2691e9fa58455f9be8e0df04
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jul 29 21:15:17 2005 +0000
-
-    Add eidenv.exe tool
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2451 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f5b586715a7e77ae030e7d4fc5549c154ebe5381
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jul 29 21:14:46 2005 +0000
-
-    Now compiles on Win32
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2450 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a5dca97c2887521ac6ec8aad27772c38feac7982
-Author: mb <mb at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jul 29 14:38:57 2005 +0000
-
-    Fixed a warning (comparison between signed and unsigned).
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2449 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f59a51397c4243a888fb3819f8421fc9febada6c
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jul 24 14:06:02 2005 +0000
-
-    apply Stef's patch which puts all public objects in first slot if only one pin is present (and hide_empty_tokens is true)
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2448 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c26dde1a8298863c8ff5af478c8429c6258df951
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jul 21 21:05:40 2005 +0000
-
-    fix compiling without openssl.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2447 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e16485826ee0b6ce4c8e5601302f14e0a5d6b70a
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jul 20 18:19:40 2005 +0000
-
-    fix memory leak; patch supplied by Imanishi Masayuki <Masayuki.Imanishi at jp.sony.com>
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2446 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c2751a60da551b65ee4ba0f61ded6662a98867a3
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jul 20 17:58:55 2005 +0000
-
-    fix use of x509v3 key usage extension value
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2445 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ee352f23ed09ccb912466df975d8f769d33b57f5
-Author: bert <bert at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jul 20 00:47:09 2005 +0000
-
-    oops, how did I create that...
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2444 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a355f9cdd772d4dea4c24329c890c5d68200aa31
-Author: bert <bert at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jul 20 00:43:38 2005 +0000
-
-    added docbook XML source for tools manpages
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2443 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9894a10d37bd1d3521dfe8993b037b99ca890ec3
-Author: bert <bert at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jul 19 23:28:40 2005 +0000
-
-    Initial import.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2442 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 66b080f1544680b247565aa4053d9d83075cb26b
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jul 19 21:03:03 2005 +0000
-
-    sorry, not compatible :(
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2441 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b99c52c6f5428f900ca1e668ebebb4d17891e524
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jul 19 11:57:31 2005 +0000
-
-    free error strings on when destroying context
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2440 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 70d50abfba8979480741a1aec013fdb9fe180966
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jul 19 11:20:17 2005 +0000
-
-    #ifndef strncasecmp doesn't work because strncasecmp is no macro (thx Nils)
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2439 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 65ab52d9cfaac64df51a8f3caf092ff5bb9371c1
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jul 18 22:33:27 2005 +0000
-
-    add new atr.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2438 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a1261369e26507a45ed85273c8b179cc80ce2170
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jul 18 21:30:30 2005 +0000
-
-    only copy resp if the operation was successful
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2437 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e09bdac57b1b63bfbc0ec2961e14ce204304a320
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jul 18 20:20:22 2005 +0000
-
-    don't use software prng
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2436 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a1e2ac529d881f9dcf12937c05b4ddfb2f9d7bb3
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jul 18 12:20:24 2005 +0000
-
-    Added #ifdef HAVE_OPENSSL for read_ssh_key()
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2435 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e3b11a0aa45eb48ba4f67949b0b9d375b19e0a36
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jul 18 12:13:48 2005 +0000
-
-    Don't build libp11 if we don't have OpenSSL support
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2434 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4377e77f339c777d1819951fff4043ee0f91fd47
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jul 18 12:12:37 2005 +0000
-
-    Get include files also from include\opensc, this is a temporary fix so the compiler finds the rsaref/ dir when reaching '#include <rsaref/pkcs11.h>' in libp11-int.h
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2433 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b9a7cd402a641a5b3f3b56d0385108ccfa777c94
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jul 18 11:56:11 2005 +0000
-
-    Changes in .obj and .lib files now we have the new libp11
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2432 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3ba355247dc23e58752b2ca1cfb685dbafd6cef7
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jul 18 11:54:07 2005 +0000
-
-    No strncasecmp() on Windows
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2431 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9ac748f6d3907cf8e39725c8a6562741d881d5cc
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jul 18 11:53:19 2005 +0000
-
-    Install libp11.h + small fixes
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2430 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 205d23f4c33cabe5b593b483e567864e219b2d4d
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jul 18 11:51:34 2005 +0000
-
-    No strncasecmp() on Windows
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2429 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ada4504daf83bb59554a323145965a801ead20ec
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jul 18 09:15:06 2005 +0000
-
-    open a session if there is none.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2428 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 817e26a362b06ceb6422d80b0d3c34aeb08413ba
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jul 18 07:26:41 2005 +0000
-
-    starcos has a GET CHALLENGE command ... useless flag
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2427 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f7bbc8e95a2fb729fd3b56a535fc1e98983f6223
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jul 17 21:19:11 2005 +0000
-
-    add functions to access smart card as random number generator.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2426 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 27ef63fba2dce48a0dec13e76079ab75a318b594
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jul 17 20:40:23 2005 +0000
-
-    fix scconf linking.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2425 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 69c25e325a2052a03b417213e485bc1cca84ce4d
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jul 17 20:31:37 2005 +0000
-
-    oops, ldap/scam is no more.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2424 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 86888a0acf799f9ca57c46b3d1f30ff71a41128d
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jul 17 20:27:46 2005 +0000
-
-    fix two small makefile gliches.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2423 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4c9cb46f724ec7a57a0433196e1ad2ac030d0b6a
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jul 17 20:23:25 2005 +0000
-
-    remove scldap.conf, and pkg-config files for libscldap and libscam.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2422 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0495aef57fb91a7ca8936f0c2003fd13fb99f427
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jul 17 20:19:16 2005 +0000
-
-    remove ldap/random related makefile commands.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2421 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit dd0885369392c4dd840dd9c1e3903de9f4943a8d
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jul 17 20:18:31 2005 +0000
-
-    remove code dealing with random numbers for now.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2420 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e428f7e171a4acdfe21903fb0b07846c0858d3c1
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jul 17 20:11:32 2005 +0000
-
-    remove random/prng related code from configure.in
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2419 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 944904fac5c8638bf2f156efcf6af800d5157240
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jul 17 20:10:13 2005 +0000
-
-    remove scrandom code. We will implement proper code to get random data
-    from the card itself.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2418 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3449847d7442638c3acd22ebdff95b0aad960fab
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jul 17 20:09:11 2005 +0000
-
-    remove pam/ldap/sia specific code from configure.in
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2417 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7de8272675a299967f78477837cc1aa1089f165e
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jul 17 20:08:06 2005 +0000
-
-    pam module obsoleted by pam_pkcs11 and pam_p11.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2416 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 841694817c0ea27a42d86302cd805923221cef79
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jul 17 20:06:23 2005 +0000
-
-    add Makefile for man/ directory.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2415 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ab19a6c15b6a3c448c15297d1ad3843863712981
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jul 17 19:59:36 2005 +0000
-
-    additionl cleanup from doc / docs merge.
-    New include api documentation (xml files at least). Not yet installed.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2414 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 49a3563cc4cc244dcd8670cfe6f580e7b1f62cee
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jul 17 19:50:01 2005 +0000
-
-    Add wiki snapshot.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2413 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ed081226640a4ae60c68265b555a7aaff60c883b
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jul 17 19:49:40 2005 +0000
-
-    move docs/ to do/. mark it "old" (plan is to use the wiki).
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2412 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1b8ddaf64b0ab2682f21c5e9a133476c1883d9b9
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jul 17 19:19:56 2005 +0000
-
-    move man pages to man/ directory.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2411 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 85ab01a8cd09047d8aec499b432486fca9036c72
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jul 17 09:39:44 2005 +0000
-
-    fail() returned NULL, windows need return 0;
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2410 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7939f0b0100ed123b6f6ebeee441983f1d8f3997
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jul 15 13:37:38 2005 +0000
-
-    If we want to test signing, first see if the key can do this
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2409 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit be65c3804eb16d35a73fc8b65cc31fc22bfb9b38
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jul 15 13:32:14 2005 +0000
-
-    Cast correctly
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2408 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f21115d6e81dbca0a2f6058960dc4c8f98103b41
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jul 14 10:38:06 2005 +0000
-
-    cert to key is even more interesting than key to cert.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2407 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 16a89ae2eff91d3b415a84b20c5a2eb23b19b3d6
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jul 13 17:11:26 2005 +0000
-
-    Unload twice causes segfault.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2406 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 19419bb3d14abf91e0b01b786fa8a78552376530
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jul 13 17:10:54 2005 +0000
-
-    make the sign/encrypt/decrypt opterations public.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2405 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 124b046d99e885bd1d221b3f5b7d9568cb4ab4b4
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jul 13 13:50:21 2005 +0000
-
-    first step to eleminate libpkcs11.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2404 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit dc27ebf414bd54633568349539ef0544fd19cde3
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jul 13 13:48:03 2005 +0000
-
-    commit latest code, improve include file split, first steps towards
-    eleminating libpkcs11.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2403 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5038b576916eb29cd58563211dceb6c894df3d48
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jul 13 11:47:05 2005 +0000
-
-    add new internal header file.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2402 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 23685829b8bc8633b4490639dfea74f0efc59c37
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jul 13 11:41:20 2005 +0000
-
-    split libp11.h in an internal and a public part.
-    add p11_ops.c and other code by kevin stefanik.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2401 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit cbada7cbcad59be993d2a87a07be2df13345db7a
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jul 13 10:24:54 2005 +0000
-
-    install header file, fix linking.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2400 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 217c4fcf1277400e069b90d405226233019ad138
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jul 13 08:25:23 2005 +0000
-
-    Increased the ID length
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2399 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d88f377747d8bd3cb8d88b065db33c17c4bdd9a9
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jul 12 21:03:47 2005 +0000
-
-    interpret rec_nr == 0 as a request to create a new record, fix for bug report #21
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2398 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b9cf818d5628a4ad4ddb6aeaaa8b7817df3a5f31
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jul 11 21:31:48 2005 +0000
-
-    in case of T0 the Le value is omitted for case 4 APDUs; patch supplied by richard.musil at bigfoot.com
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2397 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit eddd1e3ab65a5b8d9f57e737666ed5336b654a70
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jul 11 21:28:55 2005 +0000
-
-    fix file descriptor byte and ef_structure type; patch supplied by richard.musil at bigfoot.com
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2396 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d0259f046cd865f79b5f5dddd7c50912f786c19f
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jul 11 08:26:36 2005 +0000
-
-    remove reference to no longer existing file pkcs11-internal.h
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2395 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5ffcd1fb9c23e0954654a96b8666b94696d162f0
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jul 10 20:32:27 2005 +0000
-
-    fix compiling and distribution package.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2394 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 085c3cedbd7558a11027a93bc933a3ec24daf001
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jul 10 18:40:08 2005 +0000
-
-    use new libp11.h header from libp11.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2393 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b3b3e7607e375ab09eb93f61b35620faa733f395
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jul 10 18:38:52 2005 +0000
-
-    use new name in include syntax.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2392 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 30b995763700d0d437fb10a69118d6a1e0c11941
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jul 10 18:37:58 2005 +0000
-
-    enable libp11.pc pkg-config file.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2391 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9f308a1fcc8423ab9e06b488ece0143b1b570e47
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jul 10 18:36:24 2005 +0000
-
-    move and rename pkcs11-internal.h to libp11.h
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2390 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 74276068679257b8b6f32198f1c9ce1c9bd25ff7
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jul 10 17:03:44 2005 +0000
-
-    add Makefiles for libp11
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2389 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2445a52ad4a0eef2be8b629a2db22e6f6397146d
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jul 10 17:03:15 2005 +0000
-
-    do not install libpkcs11 as shared library.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2388 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 48180839380a75f26b15129756586c51df90abaa
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jul 10 17:01:03 2005 +0000
-
-    move p11_* into a new library.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2387 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 65eec98c71e7a30edf9125e0ffc7acbd20c9b035
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jul 8 21:16:31 2005 +0000
-
-    enhance attribute support; patch supplied by supplied by Marc Bevand <bevand_m at epita.fr>
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2386 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9c011b0cabc0d9bed37e6a38788c5bacc3102f1e
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jul 8 21:04:23 2005 +0000
-
-    fix check of the return value in C_GetAttributeValue; supplied by Marc Bevand <bevand_m at epita.fr>
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2385 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 467b0e65f9b03c417b6db6944166762b2162b52f
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jul 6 12:59:45 2005 +0000
-
-    Oops, shouldn't have changed the serial number size in x509cert_info to 256
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2384 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2731db845d5b937f59b3b392785de07278320364
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jul 6 12:23:03 2005 +0000
-
-    No uint32_t type in MS VS
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2383 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit df232cfe67faed6dc54204a6459692cd7fe23868
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jul 5 17:45:10 2005 +0000
-
-    Don't ignore the profile_option -- remark from Victor Tarasov
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2382 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2585106e3c06055340243336710570b0a556d474
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jul 5 17:43:50 2005 +0000
-
-    Print an error if sc_pkcs15init_bind() fails
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2381 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2c856aa71ff18a2543712d0e880982535b9c142f
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jul 5 15:27:59 2005 +0000
-
-    Increased sizes in rsakey_info struct
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2380 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c9f652dc8193cd4efaf1542f4ce9cb0669b90662
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jul 5 15:22:59 2005 +0000
-
-    Typo fix
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2379 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4b574b7925ea6571f3b0931cc928fa5a481bb096
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jul 5 15:22:17 2005 +0000
-
-    SetCOS 4.4.1 supports keypair generation, keysizes of 512, 768 and 1024 are fine
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2378 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit de60c98462f78082edd53f47ba499db97627358b
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jul 5 13:34:03 2005 +0000
-
-    Macro cleanup, patch received some time ago but appearently not committed
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2377 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 052575e0ddcdf0c051881aca6e51d3eb857effbe
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jul 1 22:37:39 2005 +0000
-
-    remove unnecessary include
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2376 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b5217250258fffeeb44ccafc679e06a8c3b14dd3
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jul 1 08:40:42 2005 +0000
-
-    remove duplicate entry
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2375 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit cbb32e02e13f77d65790279794a17895336cbcae
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jul 1 08:26:55 2005 +0000
-
-    add initial support for atrust acos cards; patch supplied by Franz Brandl <f.brandl at a-trust.at>
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2374 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit dc1a5b6e2784d28cca2c12953d8601d98563a0f3
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jul 1 07:17:01 2005 +0000
-
-    remove unused variable
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2373 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3bbc9db115dbe24a75329f07be10d66e02418412
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jul 1 06:27:59 2005 +0000
-
-    GIVE RANDOM is for sm, so remove it from the etoken key generation code
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2372 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2819d87ce7ac24396ab2c3a1ffa54c4016bfd0c8
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jun 29 11:32:48 2005 +0000
-
-    Make the names fit in pkcs11 limits
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2371 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2c123d5bc76b16c2f56cf3d4580b6f070dd3ae61
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jun 28 21:16:02 2005 +0000
-
-    oops, missed a #endif.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2370 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d3ab255406023e0624fcb5ee16718209af5d3764
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jun 28 20:33:32 2005 +0000
-
-    use uint32_t, it is a c++ stdtype and should work on all plattforms.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2369 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e5ee45ace12dd1edaba9df6335b7434bd8a81b08
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jun 28 13:50:41 2005 +0000
-
-    Use uint32_t on Mac
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2368 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 336c856e77652cae37a569af84c759d636947321
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jun 28 04:09:23 2005 +0000
-
-    rediffed against openssh 4.1p1
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2367 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8e0d600b10c781b761613df2df8be42457a2941f
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jun 27 21:49:36 2005 +0000
-
-    openscd code hasn't been used by anyone in years.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2366 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3d0f17bc9566b562d705d21ad6a5e230fd35079c
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jun 27 13:52:08 2005 +0000
-
-    Annoying typo
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2365 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5f2a3a58c777014bece3c66dee03299254663aa8
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jun 27 13:51:45 2005 +0000
-
-    Adjust function name to reflect documented functionality
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2364 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 505d2a5f7ce071f13b56789340a71cf1a812511e
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jun 27 11:51:00 2005 +0000
-
-    No asm/types.h on MacOSX either
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2363 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1d58adfbf428123b9c0e32295da29a21513112ac
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jun 27 11:47:56 2005 +0000
-
-    add working file.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2362 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 93707f47ce8be6e1a4ada3daa9b8b63b96912401
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jun 27 11:47:34 2005 +0000
-
-    remove broken file.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2361 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3eb0a0a9eb451599aa8112b38a3b68b984ab8fad
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jun 27 10:08:29 2005 +0000
-
-    Log in hex format of course...
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2360 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 57ca997cb9baa8fca063152a375b3920d7f922ef
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jun 22 10:32:27 2005 +0000
-
-    Windows: no _uu32 in MS VS
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2359 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 99641488c348d63e4e1e4d83055f8158cbc1d9b9
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jun 17 19:34:55 2005 +0000
-
-    add comment about usb crypto tokens.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2358 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e725239e9c3198068504a65804f17ddf4e058f45
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jun 17 15:47:28 2005 +0000
-
-    Fix: if a card is inserted, the SC_SLOT_CARD_CHANGED flag must be set
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2357 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit aee678bdac3b9af279a077e9cc79fa3629efa24a
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jun 16 20:15:38 2005 +0000
-
-    small makefile fix.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2356 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b0e6b11bbacce099795b7f0214ca67fcb90ca772
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jun 16 19:39:34 2005 +0000
-
-    make it compile without openssl.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2355 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit bf6808e3d8c07b41db8218e1e7ae223db92c6451
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jun 16 19:35:31 2005 +0000
-
-    "smart card" not "smartcard" or "SmartCard".
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2354 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0265f42efa38321c164b57977be4c13805c96839
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jun 16 19:28:23 2005 +0000
-
-    "smart card" not smartcard or SmartCards.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2353 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a4aecd792cec81397df31158566f92a5346aad74
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jun 16 18:13:23 2005 +0000
-
-    update to current version of pkg.m4 from pkg-config.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2352 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f5b1018d04f721249d5b64a9c9bc20519d2a6e65
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jun 15 08:57:47 2005 +0000
-
-    add options for displaying openssh keys.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2351 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4568015476ca6af199328d3c9b908ff52d8c0eba
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jun 15 08:56:15 2005 +0000
-
-    move libraries from lib/pkcs11 to lib/,
-    rename the engine dir to engine, and
-    make it "openssl" so openssl can load
-    the engines automaticaly.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2350 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a6db0256c9194201f658b389e0f32ebe3f7f5cde
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jun 14 21:37:19 2005 +0000
-
-    add netkey-tool from Peter Koch
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2349 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 030d58d7ca577a5d9abc5635af03a619a61fe990
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jun 7 14:31:09 2005 +0000
-
-    It is plain wrong to call again pcsc layer locking methods as card.c:sc_lock()
-    already does it when somebody goes to the card the very first time and thus
-    begins a transaction. iso7816.c methods should lock the card in
-    iso7816_pin_cmd() on card level if anything.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2348 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit fdb52385cd310ef508590d2c320cc49c4351f888
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jun 7 12:43:43 2005 +0000
-
-    Add support for pinpad PIN verification.
-    
-    Patch from Andreas Steffen
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2347 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ca0416a60d89764c6147f8e4d367beee37842022
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun May 22 20:07:31 2005 +0000
-
-    microsoft's vs 6.0 doesn't like initialization during declaration. let's use memset instead
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2346 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0d5d3eb1517ee8a99d600147ff176490e6825126
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat May 21 10:21:53 2005 +0000
-
-    enhance object writting support, patch supplied by Marc Bevand <bevand_m at epita.fr>
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2345 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a248911ed25a24e9c7b0561e40139767a8b73ec7
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri May 20 09:55:13 2005 +0000
-
-    cleanup, patch supplied by Marc Bevand
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2344 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f1625365bfa9641fec3caf4c4915ffabcfada6c1
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue May 17 21:51:51 2005 +0000
-
-    update from Peter Koch
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2343 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit fa333542db83e22e266e9eaa22aee0dbe1338dc4
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed May 11 14:00:03 2005 +0000
-
-    Don't used cashed PINs for a UserConsent key!
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2342 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4a8c465fbb23e5be15bbd99dfc66ab1b8bc8df99
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue May 10 19:58:34 2005 +0000
-
-    Better choices for the sizes/FIDs + typo fix
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2341 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9a7146cd629648f3efcf5e76dd96aeca7ac26558
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue May 10 12:59:38 2005 +0000
-
-    add certs only when we have zlib support
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2340 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ad86ded031ed8f621b0c7d1ec3ad449f7f3a9fff
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon May 9 11:46:23 2005 +0000
-
-    If an object is added to a pkcs15_card, don't call sc_pkcs15_free_object() on it
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2339 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e78d245bd36cd488ca5e1beb81766d4740170a81
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun May 8 21:30:06 2005 +0000
-
-    add support for Actalis card; patch supplied by Andrea Frigido
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2338 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8631af20fd1522d8d0c3ddcf7f873b0ba0567d5f
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat May 7 22:22:07 2005 +0000
-
-    add initialization support for token/pin; supplied by Marc Bevand <marc.bevand at smartjog.com>
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2337 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 08d94ba74e11a8e766bd17477962234850b602bd
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri May 6 13:52:41 2005 +0000
-
-    Fix: re-link the SO-PIN to the pkcs15 DF, otherwise the AC's in sc_pkcs15init_add_app() are ignored resulting in a.o. an unprotected pkcs15 DF
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2336 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f6712b8736c4e62d48f192a9c0b4ba8e138c4aa8
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri May 6 11:31:59 2005 +0000
-
-    Fixed handling of pkcs15 types and added support for storing pkcs15 data objects
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2335 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 14e03407c1297d9507daaccd75a5d8fd46c43ac6
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed May 4 13:17:26 2005 +0000
-
-    Have pkcs15init as a DLL instead of as a static lib file
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2334 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 246a31be8cb48306b05d6ab1e693325c635e15b6
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue May 3 09:33:04 2005 +0000
-
-    Announce the capabilities of the terminal
-    'press enter for pinpad'-enable the pintest utility
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2333 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5b903845d73be38d335a7c3f79df48a3877188f0
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon May 2 19:17:12 2005 +0000
-
-    Removed double line -- thx Nils
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2332 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 38b9c7e5655ec2b0b4c905a0e1cf0d516ca35948
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon May 2 18:48:59 2005 +0000
-
-    atr table reallocation fix by William Wanders
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2331 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 77af320e665183c03250bb9bc557d4ac2ca463ff
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon May 2 09:43:42 2005 +0000
-
-    Removed unnessary #includes from previous path
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2330 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d19e2fb76819ca10fe6e64862e4fcbe2cb1bb71e
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon May 2 09:41:06 2005 +0000
-
-    Typo fix -- causes compile error on MS VS
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2329 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0f3cfb09b5cb2ae4da02717daa6aab8005bebb18
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Apr 30 10:07:07 2005 +0000
-
-    free pin when ending a pkcs11 session; patch supplied by Douglas E. Engert <deengert at anl.gov>
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2328 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 577ccf1b82bc1cce0e0f36112b12ec62517a8a40
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 29 20:23:48 2005 +0000
-
-    create a key that does signing and decryption.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2327 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 32fd6e0a1a7bc55014cc58b17ec99e627d5e459c
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 26 09:09:00 2005 +0000
-
-    Oops, didn't update news file yesterday before the release.
-    So at least document it now.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2326 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9d4be8f04bd6dcd912afec8684b4ca617eff8a65
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Apr 25 21:00:10 2005 +0000
-
-    changes from Antonino Iacono
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2325 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1d8357ec7e42636d147ea68ac3a782a608f16127
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Apr 25 19:21:43 2005 +0000
-
-    Ludovic Rousseau: rxvt can also do color so here is a patch.
-    
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2322 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0372069d74e1fe5ccb23644fb4bc610cc6355590
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Apr 24 16:17:20 2005 +0000
-
-    changes from Antonino Iacono
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2319 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d9534927395e0f775cd65819166775956c9e3b90
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Apr 24 09:28:27 2005 +0000
-
-    bugfix; supplied by Marc Bevand <marc.bevand at smartjog.com>
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2318 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 45879d3997688164a206ab8c37a0ad58b19d6a6d
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Apr 23 12:26:00 2005 +0000
-
-    add callback_data parameter to get_pin; supplied by Douglas E. Engert <deengert at anl.gov>
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2317 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d9e2a443e3e80bb9f2ec832a0bd96be0e5c2175a
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Apr 23 11:20:24 2005 +0000
-
-    try file id if selection via df name doesn't work; Douglas E. Engert <deengert at anl.gov>
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2316 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9ad11a6b28ab13712e7c130144af5dcbbbdac74b
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 19 18:38:26 2005 +0000
-
-    fix problem with unsigned int; pointe out by Douglas E. Engert <deengert at anl.gov>
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2315 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 20059c984f851921d7cec269e21d6cf35d6ddf9a
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Apr 17 16:43:31 2005 +0000
-
-    add support for yet another infocamere card, submitted by Sirio Capizzi <graaf at virgilio.it>
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2314 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 730dcb69c7d5d674d538d63ce31d32e29b082a55
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Apr 16 13:42:47 2005 +0000
-
-    check for zlib
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2313 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 88cea8e2124f7a41ccc4a904e1bad3cad67856c6
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Apr 16 13:36:30 2005 +0000
-
-    add yet another atr to card-etoken.c
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2312 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 34e7133bd26e10f0c41212d8b821d0245f81bbbb
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Apr 16 12:06:28 2005 +0000
-
-    added yet another atr to card-flex, supplied by: Giuseppe Raspanti <graspanti at crytron.com>
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2311 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 315b961d9aba171e11714b9e2d0f1f8647f37e04
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Apr 16 10:40:00 2005 +0000
-
-    add support for gpk16k gemsafe cards, Douglas E. Engert et al
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2310 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit bf089a8fbb822999b0ca7acd3d22759b38a6fe58
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Apr 16 10:37:14 2005 +0000
-
-    cleanup
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2309 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 08386311071bf27b4e6117f13a35d27f8f7c4685
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Apr 16 10:21:36 2005 +0000
-
-    scrandom interface is not used by starcos
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2308 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e1755375d4e5841149ac96b71edf86ffadef07b1
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 12 20:46:10 2005 +0000
-
-    set the version to "WIP" (work in progress) for the snapshot script.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2306 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 99190b4b53afb26f5fa4819bf294450a56bd120a
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Apr 11 06:36:20 2005 +0000
-
-    make it work again (at least for me)
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2305 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 66da039291a6777e93dc687508fd3282bb0ae603
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Apr 10 21:58:31 2005 +0000
-
-    remove broken code, add skeleton for a new function
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2304 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ce140b65eb6f8ea8800ac32c3cbc1f0a1b38fa4d
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Apr 10 20:59:11 2005 +0000
-
-    disabled auth key/pin as the IDs are wrong
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2303 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ab52f802c7f0f126a0a9afb040cc4f1b79280c0f
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Apr 9 13:32:22 2005 +0000
-
-    fix compiler warnings
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2302 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit af8bf9d21af444e6837d449ff050074406c00a35
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Apr 9 13:23:47 2005 +0000
-
-    add support cert loading, patch supplied by Douglas E. Engert <deengert at anl.gov>
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2301 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 489518b26a906e8e302e836e05888200204c9568
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Apr 7 19:45:39 2005 +0000
-
-    Small fixes in the teletrust spec support code and related NEWS item
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2300 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1b95a90e7a7c4d0acec7f7fe13c4f7eb00b03262
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Apr 7 08:45:56 2005 +0000
-
-    files were renamed - adjust QUICKSTART file.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2298 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 80f3d4226b3b3d95d99bca48a02bb669c37f2d77
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Apr 7 07:29:18 2005 +0000
-
-    update trunk: include solaris/* files in tar file, update NEWS with
-    0.9.6 changes, add profile_dir to solaris/openscc.conf-dist
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2294 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ac4dfc0e383ef916488fe2e230c29f3f39640388
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Apr 4 21:52:31 2005 +0000
-
-    cleanup
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2292 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3439f9cdd7c51155f412fda95786f145a5001fe8
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Apr 4 09:30:54 2005 +0000
-
-    Added initial support for SetCOS 4.4 cards
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2291 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit abf3bf9549d9909e2992a1455ee29b507da6a2e6
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 30 18:25:50 2005 +0000
-
-    If the SC_CARD_CAP_USE_FCI_AC flag is set, sc_pkcs15init_authenticate() will check the file's ACs on the card instead of relying on the ones in the profile file
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2290 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a6f8354b6eef6600f908627ca8836f9e6b375bd7
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 30 18:18:46 2005 +0000
-
-    Added another life cycle state
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2289 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d67389dfd6fa56248951afe904112e18af7420d2
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 30 16:40:01 2005 +0000
-
-    bools are int; pointed out by William Wanders <william at wanders.org>
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2288 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f2526dfd8ebcd0034d94e707e5c93e5b52e08d29
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Mar 29 19:59:30 2005 +0000
-
-    fix for solaris; patch supplied by Douglas E. Engert <deengert at anl.gov>
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2287 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9e7ca27fda149d3cd3a9db07f29b0b24f453e96d
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Mar 29 07:30:16 2005 +0000
-
-    Add solaris/ subdir and files to make using opensc on solaris easier.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2286 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit de62a5306de5d2888e90e48959f08957f4f2cdd0
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Mar 26 20:10:13 2005 +0000
-
-    Moved init-card() till after the pin-initialisation, this allows init-card() to do operation with a pin without doing the pin stuff again. Shouldn't break anything -- if it does, we'll undo this.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2284 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9221f1b2b21492dd6ad5187c8774265c784e30d2
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Mar 26 20:00:14 2005 +0000
-
-    Added opensc-to-pks11 error mapping
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2283 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e992e1ddfb725154802168c0d8d062fc3d2d1407
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Mar 26 19:48:28 2005 +0000
-
-    Prevent doubles in the ACL entries
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2282 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6102459d13b7241e74b57455933fc93d329c2819
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Mar 26 19:47:13 2005 +0000
-
-    Allow an empty path in iso7816_delete_file(), to indicate that the current DF should be deleted.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2281 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9029170d16c371a3c3b556472d7a22028e05bcb5
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Mar 26 19:35:35 2005 +0000
-
-    No unistd.h on Windows
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2280 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8b94043a6ef10e738ae122c2ce8bfe1e296fc431
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Mar 26 19:33:17 2005 +0000
-
-    Removed pinpad-ccid
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2279 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 72f20a71d85d45b60f15b8521c6f1a0f8013914f
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Mar 24 16:57:00 2005 +0000
-
-    Parentheses too..
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2278 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1139181493d1911633965c69cd31f509d150f12b
-Author: martin <martin at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Mar 24 16:54:10 2005 +0000
-
-     * fix an return code from ctbcs spec
-     * make sure pins and puk are correctly associated in esteid emu
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2277 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f5b2845340bd3badf71d6311d215cb6c7a8fb469
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 23 23:24:13 2005 +0000
-
-    silence a few warnings.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2274 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 42a06f2101e1b3a399834589296bbbe8599e47fc
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 23 23:16:38 2005 +0000
-
-    use tab, not spaces.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2273 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 89b4f23a423ac339e700ab44765716b4fc0b9232
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 23 23:12:42 2005 +0000
-
-    fill in profile_dir in config file.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2272 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit cda5dcd508a1ff2b98358a6e36d8ebe78a6b9d67
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 23 23:12:06 2005 +0000
-
-    generate config file code with the configure'd profile dir in opensc.conf.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2271 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 52d3262e90d183b54082f53bbe7e7a0ba94224ce
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 23 23:10:50 2005 +0000
-
-    apply improved profile handling code.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2270 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 54ac27bd4070d41abc4a4ce5a5efbdff8ad33c82
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 23 22:58:49 2005 +0000
-
-    remove winreg.h as global include (not needed in 99.9% of all files),
-    remove obsolete config file / profile dir definitions.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2269 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 769792ea31a2491d3b4761ec545abd191e4de84f
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 23 22:44:48 2005 +0000
-
-    fix egate token with cryptoflex on windows.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2261 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7133146d28ed33234600231b4ec88de961e12fc2
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 23 22:37:06 2005 +0000
-
-    put new version in pkcs11-global.c, too.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2259 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b6958711cb112e43d8310c185e3eea150c966c5e
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 23 21:31:48 2005 +0000
-
-    library was changed in an incompatible way since 0.8, so we need
-    to go from 0 to 1.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2250 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 035fa1e0a40c3e869fb85b8b48d132e6bc91d106
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 23 21:26:28 2005 +0000
-
-    import news from 0.9 branch / releases.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2246 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8d27151cf6d8de817db5dfd1ecceb8c2c2d4a786
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 23 21:08:13 2005 +0000
-
-    remove .cvsignore files.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2243 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6c92db8b30e8de2c6984e9d88eb242a4332e1d23
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 23 21:07:50 2005 +0000
-
-    remove debian/ as it is obsolete and was not maintained at all.
-    this was eric can commit the current debian/ used by the official
-    debian packages.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2242 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2cd6d428ab70512b1b07ae59772d36d7f7ba2eaf
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Mar 18 20:36:52 2005 +0000
-
-    fix free argument, pointed out by Giuseppe Sacco <giuseppe at eppesuigoccas.homedns.org>
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2240 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 95225b773126dee26d3ea3485348176ed446be91
-Author: pisi <pisi at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 9 12:46:31 2005 +0000
-
-    common pin validity check, supprot (still disabled) for pinpads in modify and unblock
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2239 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 295fe6138d356866331ff2a080f95541322afd5a
-Author: pisi <pisi at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 9 12:44:31 2005 +0000
-
-    Introduce TeleTrust Class 2 spec compliant pinpad functionality and
-    incorporate the pinpad functions directly to reader-pcsc.c. Mainly because
-    the code requires access to internal pcsc-only structures and splitting
-    some definitions to an extra header would not be very nice. Also, the API
-    is pcsc based and usable with other ifdhandlers too, not just CCID.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2238 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c6c67692da690b5e61c7f0d86f94f227890cba70
-Author: pisi <pisi at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 9 12:25:25 2005 +0000
-
-    Minor additions
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2237 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b6f9aa561bff89b831789d8f0493cb0afa72dd2f
-Author: pisi <pisi at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 9 11:45:29 2005 +0000
-
-    A single flag for all pkcs15 layer applications to detect a) if pinpad is
-    present b) and if we should make use of it. Also remove the CCID specific
-    option for pinpad detection - if detected, the flag will anyway always be
-    set as it reflects the capabilities of the actual reader. Also, the
-    detection mechanism is changed to be crossplatform.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2236 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3eec01945aab767144d03761a3d5b47e3365852d
-Author: pisi <pisi at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 9 11:14:41 2005 +0000
-
-    copypaste ****s. Introduce a common internal function that removes several copypastes
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2235 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a1ffc6b72ed2b78cffe0796742418f8a38864dbc
-Author: pisi <pisi at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 9 10:47:01 2005 +0000
-
-    Space cleanups
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2234 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit eb4717ea177a02f2ad1e07bc205ce56ea933eb73
-Author: bert <bert at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 9 00:04:44 2005 +0000
-
-    API fixup: use defined type instead of struct for exposed structs (part 2)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2233 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2d97002824a6067a1a55908cefc17fb80d41c814
-Author: bert <bert at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Mar 8 20:59:35 2005 +0000
-
-    API fixup: use defined type instead of struct for exposed structs
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2232 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8c9895c8968e160a38e95d912f7b64e2aa707a4f
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Mar 7 14:00:31 2005 +0000
-
-    - Add support for getting location of the configuration
-      file from Windows registry (HKCU/HKLM)
-    - Handle OPENSC_CONF environment variable on unix
-    - Add configuration option "profile_dir" to bypass
-      build time setting for pkcs15 initialization profiles
-      directory
-    
-    Patch by Andreas Jellinghaus, with minor enhancements
-    from me.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2231 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6ca66815b659b6d0f4ed37e04c980cd45308cb2a
-Author: pisi <pisi at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Mar 6 14:37:22 2005 +0000
-
-    whitespace cleanups
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2230 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1463b324b32e8795558f1aff118e865ce57ee9aa
-Author: pisi <pisi at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Mar 4 01:41:39 2005 +0000
-
-    consistent naming and trimmed lines
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2229 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit cae39291de5ee116d6116bdddcd16a33e8a50fe7
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Mar 3 18:12:07 2005 +0000
-
-    - eidenv cleanup
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2228 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 47721beae24fed515ca343d639813aae22cfc63d
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 2 09:03:19 2005 +0000
-
-    - Minor fixes, convert crlf -> lf
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2227 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 49f622ea52280279df1e078f8f7049a0340c3e78
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 2 09:02:44 2005 +0000
-
-    - Disable openscd
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2226 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a702bdbdc884bd8f48b8a53f471be6322520d9bb
-Author: pisi <pisi at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 2 08:11:47 2005 +0000
-
-    Removed openscd from automake/distribution as it should be dead code.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2225 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8baf433e36f9c4f0226d242196695aa78fa396d1
-Author: pisi <pisi at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 2 08:05:52 2005 +0000
-
-    eidenv - small utility for Estonian ID card *nix only)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2224 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e336488431e71fdf07e8c63f51b101272aca86bd
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 2 06:03:49 2005 +0000
-
-    Correctly check for reading out of file bounds, thx to Sirio Capizi
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2223 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 11526e3ccfd722e9e2223d1a27b94da0d29bedbc
-Author: bert <bert at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 2 02:06:41 2005 +0000
-
-    Add XML header + manual title
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2222 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 792ed02f9d7eda2c2dd3a4307d4937ee564f1838
-Author: bert <bert at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 2 02:01:40 2005 +0000
-
-    Work around simplelist bug
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2221 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5163787fff51d24955b184776cd2e43376b3cbb1
-Author: bert <bert at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 2 00:30:24 2005 +0000
-
-    Add proper XML header
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2220 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3c5fc2330a01c02880292e231c60d30d28d8c93a
-Author: bert <bert at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 2 00:10:54 2005 +0000
-
-    Add proper XML header
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2219 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 07a9f51d2b80129b2a928d3128e96cc726acf427
-Author: bert <bert at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 2 00:08:09 2005 +0000
-
-    removed sc_wait_for_event()
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2218 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1208720c6066cecee1b8500429cfb88bbc12c45e
-Author: bert <bert at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Mar 1 23:33:37 2005 +0000
-
-    cleanup headers + add manual title
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2217 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d8729db066543b3d9fd4687d6f785167ed3c47ea
-Author: bert <bert at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Mar 1 23:18:24 2005 +0000
-
-    clean up headers + add manual title
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2216 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 923b4b521752f56f8bfaf5a425ae7b263d8b45a0
-Author: bert <bert at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Mar 1 23:13:03 2005 +0000
-
-    fix typo's
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2215 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ba8e15971f2e932ddbb8783bebec91fe8d6823ca
-Author: bert <bert at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Mar 1 23:02:53 2005 +0000
-
-    Moved sc_wait_for_event() to card ops
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2214 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ca8e74e854a860443f7a6609885b3429b2f86c1d
-Author: bert <bert at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Mar 1 22:58:56 2005 +0000
-
-    Added sc_wait_for_event()
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2213 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2cf4572d7071b84ff9c4e579e296d87a79e52b08
-Author: bert <bert at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Mar 1 16:28:39 2005 +0000
-
-    Added manual title
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2212 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 92834535e1184ebcc45fb71245ea8455d95f3100
-Author: bert <bert at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Mar 1 16:11:10 2005 +0000
-
-    header file cleanup
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2211 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1c59e531768464359494edf119fe9e82c8d30c7b
-Author: bert <bert at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Mar 1 16:09:50 2005 +0000
-
-    header file cleanup + manual title
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2210 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d01442c9b3c81752141a8b36946652216477118e
-Author: bert <bert at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Mar 1 16:01:08 2005 +0000
-
-    cvsignore
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2209 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit dca5f97635cd50c5a8f9c301794b51b28027d502
-Author: bert <bert at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Mar 1 15:56:07 2005 +0000
-
-    New doc build system
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2208 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7aef081d03f5309c40af62ac51504d80623dc464
-Author: bert <bert at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Feb 28 20:08:50 2005 +0000
-
-    * openpgp card, not opengpg
-    * add atr_len field to sc_card_t
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2207 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5499fcb3024ee24eab386ad0e649d7d64ba67a01
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Feb 27 07:25:29 2005 +0000
-
-    Typo fix (thx Andreas, sorry Juha
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2206 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a1d4fe394ec5bc05c1fd85e22a3b43c3de8cce73
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Feb 26 19:47:54 2005 +0000
-
-    'pinpad-enable' pkcs15-crypt: if it's a pinpad and you press enter when being asked for a PIN, you can enter the PIN on the reader
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2205 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5a12e5f9206f28894898a6eb37ab3fd7747ea1c8
-Author: bert <bert at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Feb 25 23:57:53 2005 +0000
-
-    Added sc_app_info_t, sc_asn1_entry and sc_strerror()
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2204 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d8eff12521a7c5621db525d8317de0b48c3bf2f3
-Author: bert <bert at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Feb 25 23:56:11 2005 +0000
-
-    Docbook validation fixes
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2203 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6f1f3f689489d00d30df9cc30a9e15439fe442d6
-Author: bert <bert at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Feb 25 23:55:02 2005 +0000
-
-    Validation fixes
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2202 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1febdee2b2a97e749617eb9b1777f6d8f8f30656
-Author: pisi <pisi at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Feb 25 21:17:11 2005 +0000
-
-    If the PKCS#11 token can itself authenticate the user, we let it do it and ask
-    nothing. First because many applications that might link to the openssl
-    library would never-ever implement it and anyway it is the task of the pkcs11
-    module to take care of the authentication however the module/token feels feasible.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2201 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3a118fb33fdae013c20762f2dd02baa4c530daf4
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Feb 24 11:11:12 2005 +0000
-
-    - Some fine-tuning to get previous, current
-      and future FinEID cards working.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2200 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 200697ff7e6c4e7d38e3f081bb6f75f43cc86ab0
-Author: bert <bert at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Feb 23 23:36:06 2005 +0000
-
-    Added application functions from dir.c
-    Added app list to sc_card_t docs
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2199 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e53ab92d6ebd9e20b5c0c9d511b4711fbf56b1b2
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Feb 23 19:34:56 2005 +0000
-
-    - Don't loop forever
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2198 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 033a0589fe0e6096bcffeb18c671bd39302a83ae
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Feb 23 19:09:39 2005 +0000
-
-    - For completeness sake, add SC_CARD_FLAG_VENDOR_MASK
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2197 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 359e0393ed654d660aae6ce4241405129e7572ed
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Feb 23 10:44:30 2005 +0000
-
-    - Preliminary update for the next release
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2196 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5beab314029e54e6c78cb1c37bdded663c3efd5e
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Feb 23 10:39:33 2005 +0000
-
-    - Case cleanup
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2195 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 26442277fb905c0184f285728b2cd82b44f2d116
-Author: bert <bert at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Feb 23 02:52:20 2005 +0000
-
-    Initial checkin of new docs
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2194 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9d80614036f4d783a75ae52f9d59996f3b9011a6
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Feb 22 21:03:51 2005 +0000
-
-    bugfix
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2193 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8a8f2cd6bc787a9c1c5e1a72550799987f62f298
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Feb 22 07:59:42 2005 +0000
-
-    - Introduce a new powerful card_atr mechanism to opensc
-      configuration file to handle any configuring related
-      to certain card / cards using atrmask.
-    - Rewrite Martin's force_protocol to _sc_check_forced_protocol()
-      to make it possible to share the code with other reader driver
-      implementations than pcsc.
-    - Implement _sc_match_atr_block() to help out with force protocol
-      and pkcs15 emulation layers, to find information that's not
-      stored directly to sc_atr_table.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2192 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b80890d49ce5b8a687a6c064544121dfd6cd3cd2
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Feb 20 08:26:27 2005 +0000
-
-    - Increase SC_MAX_READER_DRIVERS / SC_MAX_CARD_DRIVERS
-    - Some cleanups before future commits
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2191 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 118c1f914a69d611f8ceba7d8d529e25bb378cea
-Author: pisi <pisi at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Feb 15 14:41:30 2005 +0000
-
-    test label
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2190 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 377afe022586b15cce0d7f2734ae1d65202156ae
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Feb 14 09:13:05 2005 +0000
-
-    - Typo
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2189 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7268799d92f67fa1eb38e66559d333a6bfc98b0e
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Feb 14 09:12:44 2005 +0000
-
-    - Fix a long-standing issue for user configured atrs
-      in the configuration file; free allocated memory
-      from the card_driver structures.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2188 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit fcc93f089d2ad1dd47c399421865c353c45a5326
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Feb 13 18:24:19 2005 +0000
-
-    - Correct some information for Italian eid cards, I suppose.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2187 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 115891430e2699fa38c7d3e29f2b41d3a2539b44
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Feb 13 17:58:12 2005 +0000
-
-    Typo fix
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2186 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f2663f5d7c0bf8673068f1873a865bb1e5f4fc10
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Feb 13 11:41:45 2005 +0000
-
-    - Fixed a typo (Bernhard Froehlich)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2185 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 36c507ea5a0c7eb8cde6b4899f94b6bd99bbc308
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Feb 13 08:43:09 2005 +0000
-
-    - Fix a pin issue with pinpad readers (Bernhard Froehlich, Martin Paljak)
-    - UI_add_input_string enhancements (Martin Paljak)
-    - printf cleanups
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2184 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9f4029babcf4c90c8c5016cfe03b5c71976b38be
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Feb 12 10:29:25 2005 +0000
-
-    - Update the atr example output
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2183 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit bd76230844150b8a6cd719509c747feafff54b7f
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Feb 11 20:43:56 2005 +0000
-
-    - Merge between opensc / openct
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2182 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit df5e357694cd5ee37489dbf38fa2c5ca36c5c296
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Feb 11 20:09:34 2005 +0000
-
-    - Whitespace cleanup from me and Martin Paljak
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2181 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit df12bfb5b15823af5ff8624431240e524b2f3039
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Feb 11 20:02:46 2005 +0000
-
-    - make use of AC_HELP_STRING in configure.in (Martin Paljak)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2180 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4dae83f550fa8b8d0915f2c82b9780b1d80e9845
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Feb 11 10:05:54 2005 +0000
-
-    - A fix for ISO 7816-15 cards I'm playing with. No feedback
-      received about the patch, let's move on. The patch shouldn't
-      affect any current behaviour.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2179 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 86974c8aab5c5e44f7962b176c35f897b117ea45
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Feb 11 10:03:52 2005 +0000
-
-    - A patch for belpic and other global platform pin cards (Martin Paljak)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2178 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 43732726ff0ead3f2141b79a26a68cc2c33f31bf
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Feb 11 10:01:57 2005 +0000
-
-    - Add cards.h
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2177 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b4a91b5cd3aeced16e202d315fbb8d61dc27cea2
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Feb 10 14:30:03 2005 +0000
-
-    - Remove entries from TODO list (Martin Paljak)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2176 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b5528b58d48c40f24637f0e2789a35822e3c6df7
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Feb 10 12:48:50 2005 +0000
-
-    - Add ATR for a CryptoFlex card from Mario Strasser, that
-      I forgot to add over six months ago.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2175 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 91d16e04b0a68883050d7a3633c50189c296dfb7
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Feb 10 10:09:15 2005 +0000
-
-    - Change sc_atr_table->id to type, so the name is synced
-      between sc_atr_table and sc_card structures.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2174 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6c6e47acbbaa1a7fa4f387904c95addec0a22a3a
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Feb 10 10:08:27 2005 +0000
-
-    - Add cards.h
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2173 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 32b417cbf3b325230b89d46abd271418f80890e2
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Feb 10 10:07:13 2005 +0000
-
-    - First stab towards standardized card types
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2172 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 956430edaffa9a40023a4687c4ebfe7c542dba55
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Feb 10 09:57:41 2005 +0000
-
-    - Remove card-oberthur.h
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2171 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1e3623ff1b1ee6ed23fdfe9fad56633e7fa8b96f
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Feb 10 09:56:41 2005 +0000
-
-    - Add cards.h
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2170 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0eb390686cde56040815b76aebc3f044762894d3
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Feb 9 20:16:24 2005 +0000
-
-    - Remove outdated comment, part of the information
-      wasn't even correct.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2169 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 539232f0dfafc4b5e9b41a0c24448c6a2aceb93a
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Feb 9 20:03:07 2005 +0000
-
-    - Cleanup
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2168 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e9142162c8863184e8a7b06e73686a857566001e
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Feb 9 19:15:40 2005 +0000
-
-    - Cleanup
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2167 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 73aa98987591feeb963212a36f8839dd0bfa3227
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Feb 9 14:47:46 2005 +0000
-
-    - Unify a bit the output of commands like opensc-tool -D
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2166 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8d24aa78c4ab91b710492a8a7209233a042e8926
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Feb 9 14:09:27 2005 +0000
-
-    - Fix for the previous commit
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2165 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3d9b32499a0d94f164cbfbc06240d9ef01831da8
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Feb 9 14:07:36 2005 +0000
-
-    - _sc_match_atr: add support for atrmask field in sc_atr_table
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2164 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 42ecafabb88f94c97b666427691ba525133cd425
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Feb 9 14:05:55 2005 +0000
-
-    - Cleanup
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2163 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit bb7e663fdbd6a069367fdc0195eb7222acb06ad4
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Feb 9 14:05:19 2005 +0000
-
-    - Add comments
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2162 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 91fb274b1a75a1c712d863a1eba98a7840565ae9
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Feb 9 11:37:25 2005 +0000
-
-    - Checkpoint commit, add support for the next generation FinEID
-      cards with ISO/IEC 7816-15 layout.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2161 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ece96aff984a2e704ea59b40b24cf975bb5abef9
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Feb 9 11:33:37 2005 +0000
-
-    - Add atrmask to sc_atr_table
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2160 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit cdd240397f45930c39545488ba33debb8795846e
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Feb 8 19:49:28 2005 +0000
-
-    remove unused profile entry
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2159 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e679eb17e67ab0608b6447480f08685d017cc852
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Feb 8 19:33:30 2005 +0000
-
-    remove unused define
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2158 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a854de4698f4a47422b0874976ecab9c5a638605
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Feb 8 09:51:56 2005 +0000
-
-    - Warning fix
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2157 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 10569f110e34087538b1aef9c118778066fb2d4b
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Feb 7 22:43:51 2005 +0000
-
-    workaround for broken cashmouse driver
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2156 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 864825651e1461751e8d83f9fc58a7c4f0a5a923
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Feb 7 17:03:47 2005 +0000
-
-    - Fixed typos
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2155 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0b773d6612819f29ae92e0388e0fcef1ffc9de2c
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Feb 7 11:40:58 2005 +0000
-
-    - Cleanup
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2154 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 71b29ca9c81fccd67b5251ec96b0ce73c2d2f940
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Feb 7 10:58:22 2005 +0000
-
-    remove outdated comment
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2153 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 14cbf7c304830ccb9ad25b9bb3653de5b2334145
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Feb 7 10:53:12 2005 +0000
-
-    fix usage of sc_pkcs15_pin_info_t::max_length etc.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2152 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8f7a8bde039e594455bcf1c353894dc41b35c2a4
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Feb 6 21:38:10 2005 +0000
-
-    no need to include internal.h and asn1.h
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2151 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4692b2c6b47f9049235bdc36843ad48f9a80fc3f
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Feb 6 21:34:59 2005 +0000
-
-    update, note: this totally untested
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2150 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit bc2b03883d60d1a718607b1cfeea106e4dfb7d7e
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Feb 6 21:32:54 2005 +0000
-
-    fix type flag
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2149 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit edbfa95bf4f6f2928fe5f2526489770a32fd5d7e
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Feb 6 21:01:09 2005 +0000
-
-    const fixes etc.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2148 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8a9646cc1bc3b96cc274e8610ba4add3d230b15b
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Feb 6 20:46:15 2005 +0000
-
-    as every card structure has an own copy of the card ops struc, allocating a new one shouldn't be necessary
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2147 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit bd0cb300f8911ad7e23367be6d6f093f47c26e19
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Feb 6 20:14:38 2005 +0000
-
-    - Ahm, fixed a typo in the previous commit
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2146 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 69d2e9014d3b5074afbb723ee20637bd493e1407
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Feb 6 19:40:40 2005 +0000
-
-    - Optimize a few cpu cycles from _sc_match_atr_hex
-    - Replace struct sc_atr_table / _sc_match_atr with
-      recently introduced _hex variants
-    - Rewrote _add_atr
-    - Introduce int type variable to sc_card_t, so that
-      every other card driver won't have to glue around
-      with this
-    - Card driver cleanups, optimize the number of
-      sc_match_atr called per card driver. Also
-      always try direct match with _sc_match_atr
-      first, before relying on eg. historical bytes
-      information on some card drivers
-    - Fixed a memory leak from the miocos driver
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2145 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c30494a942d783819cd21749ea9c67acf272feaf
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Feb 6 10:28:43 2005 +0000
-
-    declare some functions static + some type fixes
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2144 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 176323ac032162204c54004efb78cd113c2ae800
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Feb 6 10:06:21 2005 +0000
-
-    - Warning fix
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2143 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 99fc1f6d1d4898c42c11fb08203b65a1e27cb38d
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Feb 6 09:09:26 2005 +0000
-
-    - Give up, just use CoreFoundation framework instead of -lobjc
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2142 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d1dd355e733381b336dea2a179e5370cb5936111
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Feb 6 08:57:36 2005 +0000
-
-    - Cleanup
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2141 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit dea81dfe04978fb5964e944ec87d1a241243fed3
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Feb 6 08:53:50 2005 +0000
-
-    - Warning fix, build fix
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2140 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 026f7ae89b725db58b3c28baabb0fc9696872078
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Feb 5 10:02:56 2005 +0000
-
-    even more cleanup
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2139 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7d6b3937e96437b90ff32a2d89f3b065387d9bb9
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Feb 5 09:54:05 2005 +0000
-
-    cleanup
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2138 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 235abe1ffd82da0ec7dc4dc03608819a810efc22
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Feb 4 22:52:13 2005 +0000
-
-    declare some functions static plus some type fixes
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2137 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e0c1b6e8f12a69fc90900c4c9bbe6beb69b17908
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Feb 4 22:33:51 2005 +0000
-
-    remove unreachable code, make some functions static and fix parameter type
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2136 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f2cf81ba199e70f443b164c3761985f7b642d08f
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Feb 4 22:11:08 2005 +0000
-
-    cleanup
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2135 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit bd0f86f69c7ababc613cd41d3fcee99a3bdb8e90
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Feb 4 20:29:35 2005 +0000
-
-    - Unify all card drivers ATR matching code to use _sc_match_atr_hex,
-      untested as of yet.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2134 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0b43659efae38fc8556cf55f3750c86970a05419
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Feb 4 18:10:23 2005 +0000
-
-    fix some compiler warnings
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2133 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1d9bb861267bfb985d0fddda755a77e5febf4b6c
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Feb 4 17:32:03 2005 +0000
-
-    - Indent cleanups
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2132 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 26f9fa004e5ac6e0829e2b7637f474ee52c2c626
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Feb 4 17:29:16 2005 +0000
-
-    - Revert previous patch, it's unnecessary after recent changes
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2131 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit cbe2904889329af9b6e2abf01631be58249ad33a
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Feb 4 15:57:38 2005 +0000
-
-    - Introduce _sc_match_atr_hex / struct sc_atr_table_hex.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2130 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 10e9bd4e05b0e74022e6fa508239153ecc84e4eb
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Feb 4 14:38:20 2005 +0000
-
-    - Cleanup ATR dumping code
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2129 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 42d3d503c72555ecd8a29088dd54e2dd6eb08913
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Feb 4 11:43:51 2005 +0000
-
-    - Add internal.h, that's where the config.h and other general
-      stuff comes from.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2128 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f9645facea4a33fb217c4fb36cf869b945c595d6
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Feb 4 09:27:01 2005 +0000
-
-    use strncpy instead of snprintf + update of pkcs15-netkey.c
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2127 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 54f879426736b35cc3591cde021a140f904850ce
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Feb 3 22:44:19 2005 +0000
-
-    indent fixes and cleanup by Martin Paljak
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2126 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a0aa5dd05e565644c9c11c72168f9e925c71da57
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Feb 2 22:18:50 2005 +0000
-
-    make win compilers happy (include config.h)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2125 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5c2f9f72d35bb229feb51c0ea91686884d85b599
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Feb 2 21:18:54 2005 +0000
-
-    first part of a pkcs15 emulation driver cleanup/rework:
-    use new api the create pkcs15 objects (note: the part enclosed
-    in '#ifndef OPENSC_NO_DEPRECATED' statement will be removed
-    in someday). At first only for pkcs15-esteid.c and pkcs15-starcert.c
-    but the others will follow soon (including some documentation)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2124 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c1b0626cdd06780c6bcbe07e82e3260372aa2a8d
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Feb 2 10:21:10 2005 +0000
-
-    - Cleanup, typo fix
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2123 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit bd356f61ba72d8f8dd80f7f9ce79867025cbec4f
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Feb 1 19:09:35 2005 +0000
-
-    fix indent
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2122 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6e05b6bfbce160ab5507ef5d925d7c7dbb74ec80
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Feb 1 19:03:39 2005 +0000
-
-    add debugging output
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2121 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c95726c7826bfd0b6ecc5a1b142b703385d4f92e
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Feb 1 19:02:15 2005 +0000
-
-    bugfix: reselect application directory when lock_login=false
-    is set (at the moment only for pkcs15_prkey_sign and
-    pkcs15_prkey_decrypt), see:
-    http://www.opensc.org/pipermail/opensc-devel/2005-January/005345.html
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2120 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4179fbedf829b0cf56e6acbc2334499e943fa27a
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Feb 1 07:53:50 2005 +0000
-
-    Work-around for the lack of FCI info, so the card can be used with opensc-explorer
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2119 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8857ff5b1c316ed1e177782a7cf999eda8db8137
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Feb 1 07:52:40 2005 +0000
-
-    Work-around for cards that don't return FCI info
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2118 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b59fb4597eba67d6ba77ca1747508b4ff2f6b6ce
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jan 30 19:20:38 2005 +0000
-
-    Have the option add a delay before resending an APDU (after a 6CXX response). Is needed for most current belpic cards on fast readers
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2117 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5e0453fb8ad25eb2807d3471245c033b52228f57
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jan 30 13:50:08 2005 +0000
-
-    - Indent source
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2116 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit efe1a3684575ce15110cf4c80d60083c0807345b
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jan 30 13:29:10 2005 +0000
-
-    - Cleanups
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2115 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a6ba20a1e3d00b8cf0049c1f7b48b819f0b2d5b4
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Jan 29 12:14:22 2005 +0000
-
-    Added belpic card driver
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2114 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c8d89211eb661eb3b239133140d79309700aabaa
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Jan 29 12:10:52 2005 +0000
-
-    src/libopensc/card-belpic.c
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2113 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5459ba2b918b9d831c4a71315e6273927e87937b
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Jan 29 10:51:05 2005 +0000
-
-    - Show package version when configure is finished
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2112 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 16b1b6e5a2ecf2092db0013854d2dd007156787c
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Jan 29 10:49:48 2005 +0000
-
-    - Add experimental multi-slot support for CT-API
-      and CT-BCS 1.0 enhancements. (Bernhard Froehlich <ted at convey.de>)
-    - Enable CT-API for win32
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2111 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 986724c1add67999991823a8d0d28f53e913a03f
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Jan 29 10:44:07 2005 +0000
-
-    - Build fix
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2110 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 41dced301ae54706d9db8a5f7fd7992b41b75a92
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Jan 29 09:13:56 2005 +0000
-
-    Update
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2109 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ef6e581c362e8bd09a7dbcf31b43f468698d7c65
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Jan 29 09:12:11 2005 +0000
-
-    - Require automake 1.5 or later
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2108 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 14d1f7f6a66142b908a9ca1981325edd38873f21
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jan 28 21:22:40 2005 +0000
-
-    yet another fix
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2107 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b8d92a365a0dfbce6b0effc26a7591024162f551
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jan 28 20:41:12 2005 +0000
-
-    Added pinpad-ccid.obj
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2106 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7ea47a2bbaac0cf5f51b5e033aec8eb994674a33
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jan 28 20:39:47 2005 +0000
-
-    Windows fix: SCARD_CTL_CODE is already #defined in a Windows header
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2105 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d67a4ea523f2b9c95df29347f2310e591c740a56
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jan 27 22:52:44 2005 +0000
-
-    fix last commit
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2104 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 90e967d042b89f04610610011667df7956bb6c54
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jan 27 21:35:23 2005 +0000
-
-    Fix: stop parsing at the end of the file, not when finding padding bytes
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2103 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 622607a68c78115ed92f7e01955119c0114064d9
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jan 25 11:45:47 2005 +0000
-
-    - Build fix
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2102 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5a5c6d165e6d99aa7d15cde04dc23fbef85bf549
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jan 25 11:11:13 2005 +0000
-
-    - Add use_ccid_pin_cmd boolean to opensc.conf, for now.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2101 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 32e5d3fc81a07d57da04fe6840dbfcc199a729c1
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jan 24 22:10:55 2005 +0000
-
-    fix lock/unlock mismatch
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2100 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d4f2e2363f8d47e43b88d95f653a10910167e824
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jan 24 19:46:57 2005 +0000
-
-    - Cleanup
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2099 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8182177a004601e8b36464397ea09c38227fac47
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jan 24 18:30:55 2005 +0000
-
-    - Early ccid pinpad cleanups, more to follow
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2098 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b726ff613b5f499cea585be83141731ecf310028
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jan 24 17:20:29 2005 +0000
-
-    add two more options: one for Martin's pinpad stuff and one for enable/disable logging of sensitive apdu data
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2097 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 69cd0dbb766006482c53893f24363e161833afd0
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jan 24 17:19:08 2005 +0000
-
-    make it configurable whether or not allow logging of sensitive apdu command data at all (to please the Belgian EID guys ;-)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2096 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3158fa3e05244cea43ffb63a41f36e3568efbb68
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jan 24 11:31:11 2005 +0000
-
-    merge Martin Paljak's ccid pinpad changes from the OPENSC_0_9 branch to the cvs head
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2095 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f66913ca30ba5b15903f845760f492c630c54cd2
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jan 23 19:48:48 2005 +0000
-
-    just issue a warning in case of a missing attribute, patch supplied by Philipp Marek (with some changes from me)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2094 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 02ff1ad9b97dc5d5c9e66d3e0cb44e5c1b0414c2
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jan 23 10:14:58 2005 +0000
-
-    - Add pkg.m4 for pkg-config depencies
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2093 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 56487f86a1539c48537afb7368d0d8a6a1848721
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jan 21 18:47:41 2005 +0000
-
-    more indent fixes from Martin Paljak
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2092 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d605ba7f0afc5d84140f4a04282c8922dc79326c
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jan 21 18:31:05 2005 +0000
-
-    fix more memory leaks
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2091 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ea59c978874c756dc970c94d4e70c37d36c55cbe
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jan 21 18:25:26 2005 +0000
-
-    fix memory leak
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2090 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 517da66876e52a0000b724f38719dd0dfcb7c146
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jan 21 11:06:01 2005 +0000
-
-    fix memory leaks
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2089 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2e1ae46257a4e886c4f9c419cd4908fd82799cf8
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jan 21 10:04:22 2005 +0000
-
-    fix memory leak: use object specific release method
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2088 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d644979168ba05553b3c15985704a019ab1945bf
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jan 19 20:39:25 2005 +0000
-
-    print the atr in standard opensc hex format, patch supplied by Martin Paljak
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2087 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 485cc32f9b6ede17a06ccc9857d1d2b72b1a02aa
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jan 19 20:12:55 2005 +0000
-
-    even more indent issues
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2086 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ced7764f02ee94c2900f87fe2f01b489909357f1
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jan 19 19:56:49 2005 +0000
-
-    fix debug message + remove empty lines, patch supplied by Martin Paljak
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2085 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 14ff6bdfc55730cfffb6e39e4e70f7d4ee620c43
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jan 19 19:52:08 2005 +0000
-
-    fix indent again
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2084 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit cb5d5762679d241d627d2f384e3112105a47e271
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jan 19 18:15:43 2005 +0000
-
-    some indent fixes from Martin Paljak plus some additional changes from me
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2083 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8a0fc5bdcf08e82fe2a636ee14145cb7751dbe55
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jan 19 16:17:32 2005 +0000
-
-    fix indent, patch supplied by Martin Paljak
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2082 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7ed9a18d515edcf42e7e94c54228a1e463315c82
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jan 19 16:12:14 2005 +0000
-
-    don't print key length in case of a private key (as private key doesn't have the CKA_MODULUS_BITS attribute)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2081 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 65986182e4e50a1c6aa416cdb4c7158fd0f6d4ef
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jan 19 08:00:41 2005 +0000
-
-    fix indent, patch supplied by Martin Paljak
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2080 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 95440fb15b784a9e9fa4fdeb9cdc53e491d2c428
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jan 18 21:42:00 2005 +0000
-
-    cleanup pin handling (set and use sc_pin_cmd_pin->pad_length + use pkcs15 puk object if existing)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2079 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit bfee7bb9b3bcf0270d69760e58555f78350c497f
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jan 17 09:10:53 2005 +0000
-
-    of course we should not do it
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2078 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 08c3cc90fa56c0fdc955d046f68658cd16e2d5af
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jan 16 21:12:38 2005 +0000
-
-    Simplified the procedure to link with openssl on Windows: now you only need to slightly change Make.rules.mak instead of hacking in several Makefile.mak files
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2077 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 82712c45b8905b0dc185b3795e48d8ca8b72fe26
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jan 16 14:24:57 2005 +0000
-
-    - Add dynamic loading support for win32, Bernhard Froehlich <ted at convey.de>
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2076 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 722e6509d034be8dff3a7de6f7c45b2f69612372
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jan 16 13:29:57 2005 +0000
-
-    - Spell checks
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2075 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8f4f732c3b4404dcf5e7bb0c942ab085f8566e2c
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jan 14 23:14:34 2005 +0000
-
-    in case of SC_AC_UNKNOWN it doesn't make much sense to verify something + add missing suppress_errors--
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2074 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d73ed3567879d0ab9ebdc1dc38c809d23ece595c
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jan 13 21:52:39 2005 +0000
-
-    change auth_id -> id, show pin type, update pkcs15-init manpage
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2073 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5e552bddc1717181976769f031eec7ca9bb82a4b
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jan 13 20:28:57 2005 +0000
-
-    starcos: use iso decipher, iso7816: set le to 256 == 0x00
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2072 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9ac35022af706eff992436fd721e53927f40d4ca
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jan 9 20:10:44 2005 +0000
-
-    remove misleading comment
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2057 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2f15c03218db049aa5bc7dc21c23636d3da5c768
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Jan 8 10:20:21 2005 +0000
-
-    evaluate pkcs15 pin type
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2056 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5e5c61cd282be75bc01fd5c93965431d74a6b54c
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jan 7 18:50:04 2005 +0000
-
-    types are unsigned int
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2055 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit fb0889a9cc35f37dd74c1abc686e57c53aa50839
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jan 4 19:45:05 2005 +0000
-
-    - fixed a typo, pointed out by Bernhard Froehlich <ted at convey.de>
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2054 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4c391a21ac4e311746e6a5dc0aa7c673b57040b5
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jan 3 17:47:25 2005 +0000
-
-    dump version info in the log
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2053 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f509f00d1769cbf878d16a587a22286f3eab5bf0
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jan 3 17:25:18 2005 +0000
-
-    some cleanup + improved error checking
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2052 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a82a40e9778da03f06d3d9bed41bfbd633f20742
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jan 3 17:20:17 2005 +0000
-
-    some cleanup + improved error checking
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2051 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4bb21d0a229bff30e507b202e1cf5aade97097a2
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Dec 29 23:20:22 2004 +0000
-
-    check calloc return value
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2050 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c5df70d391bf78b5bcceedb828200166d7a12a08
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Dec 29 23:11:11 2004 +0000
-
-    bugfix, pointed out by David Mattes <david.mattes at boeing.com>
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2048 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b1d4e36529045a628d7a665300403240a008406f
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Dec 27 14:33:56 2004 +0000
-
-    cleanup
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2047 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit bd02c1a6be2dad282a9b7eb914f955fbf16ba4e5
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Dec 27 13:22:06 2004 +0000
-
-    add data field for subject Common{Private|Public}KeyAttributes
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2046 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d89c7a733dbf1c1d0ff571e272d93370ed886f76
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Dec 24 23:24:12 2004 +0000
-
-    implement serial number support for cryptoflex cards
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2045 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ebf6c8ecfa473427f6faa697a21ef2d2b450026e
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Dec 23 10:49:10 2004 +0000
-
-    fix type, found by T.Fujita <fujita at ouk.jp>
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2043 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 372c5c9e0a3b0ecf01b8cab8db8b19bacb3c01d2
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Dec 23 09:28:51 2004 +0000
-
-    - Revert the previous patch, as it broke the snapshot generation
-      and has been broken since.. July? No new automatic snapshots
-      until some hardware issues have been solved.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2042 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3931ee708d2f9796c7bbe2b5589fe9f85ab22b98
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Dec 22 10:17:00 2004 +0000
-
-    cleanup ...
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2041 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 08826acb4d986c43574bdc0ffe62bafa882ee457
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Dec 22 09:54:41 2004 +0000
-
-    flags/types are unsigned int, the exponent shouldn't be negative and more const
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2040 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5847b646f93234ddf572bc2454a204d1c53d45c5
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Dec 22 09:48:27 2004 +0000
-
-    cleanup: -index shadows a variable in /usr/include/string.h
-             -some signed vs. unsigned issues
-             -and some const cleanup
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2039 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4ddfe862e5db76cda4996e64b3b185ab7cf18315
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Dec 21 22:38:37 2004 +0000
-
-    cleanup: signed vs. unsigned and some const
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2038 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 39e8ddf31deb169fd9eb44557afccbce630b7339
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Dec 21 21:52:32 2004 +0000
-
-    more const ...
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2037 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 78b0091056522c5914fa5048585ce63f948353c0
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Dec 21 21:47:19 2004 +0000
-
-    more const
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2036 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 92ce484b57242f105a8c6e0478a11a84f94afa89
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Dec 21 21:43:24 2004 +0000
-
-    cleanup: declare structures as const
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2035 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2db63b17f901c4348aee9a69f083468a575ab1ed
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Dec 21 15:00:57 2004 +0000
-
-    signed vs. unsigned
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2034 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 048a7c399659c8d1b1a846cb31d9d6d74967aa3f
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Dec 21 14:01:22 2004 +0000
-
-    char * -> const char *
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2033 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f0224d3a4b337a2aa2ce9f08a96b321de612b4ad
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Dec 21 13:56:41 2004 +0000
-
-    disable unused functions
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2032 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8446dc7cecd974ec28c7415e9fb9146aa84a4002
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Dec 21 13:22:10 2004 +0000
-
-    fix compiler warnings
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2031 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit bea5746094f235e75b5db6df572f3117757a4bab
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Dec 21 11:03:57 2004 +0000
-
-    remove superfluous code, Martin Paljak <martin at paljak.pri.ee>
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2030 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3d75aeeaff5e605902a3f68552a0233eedf9debc
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Dec 21 09:54:47 2004 +0000
-
-    force_protocol cleanup from Martin Paljak <martin at paljak.pri.ee>
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2029 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 609fb32a25720c8d7613e4506043b9fa1c9bd347
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Dec 20 20:05:47 2004 +0000
-
-    fix help message (supplied by Philipp Marek)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2027 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 01f549da226e12a24452ed402c24962c96302a0b
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Dec 20 19:44:38 2004 +0000
-
-    fix public key reference
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2026 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit efe5366af65bc9fba990285e9dd6f7506e6d72da
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Dec 20 08:03:40 2004 +0000
-
-    dump serial number only if we have one
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2025 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8673508a43324e0634a032e4919cc7c8389b49a5
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Dec 18 14:14:57 2004 +0000
-
-    fix memory leak, cleanup: use object specific release method
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2024 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e3dc91d5620e00c7dc61d06658d27fa5d44e89b7
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Dec 16 08:50:51 2004 +0000
-
-    serial number support for opensc-tool
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2023 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 786878c3966f43332d10c4eadb694bf9ebdf4fd6
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Dec 15 19:59:59 2004 +0000
-
-    implement serial number support for gpk 16k cards
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2022 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6694ab8e874e0818b31bbc4ff24c56705a4d1dcc
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Dec 15 18:18:21 2004 +0000
-
-    - Big bunch of OpenSSL and some other fixes
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2021 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2ce41aec6870f3cde00a9e5cfef955cfb347c728
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Dec 15 18:10:29 2004 +0000
-
-    - Cleanups
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2020 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a430c8c57dd433f7fd86aa0a902d5a937cfad17c
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Dec 15 18:01:47 2004 +0000
-
-    - Build fixes
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2019 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ed0d949af0e1f60cb5784fc00db5176f516fb5cb
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Dec 15 17:34:15 2004 +0000
-
-    cleanup ...
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2018 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit bd45a8aef1afb5b22d11dd0a23eac857f464e904
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Dec 15 15:42:27 2004 +0000
-
-    - Update version for win32 build
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2017 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a3ad3b0407a70fe9eeeed4178324ef71c648ba43
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Dec 15 14:47:31 2004 +0000
-
-    - Cleanup
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2016 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8f2b1382373c4958159c0e948c42d7b742ba2960
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Dec 15 13:57:07 2004 +0000
-
-    - Preparations for the next release
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2015 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 55e170e0acc4598dcdee5801a5f6558ce258e556
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Dec 15 13:53:36 2004 +0000
-
-    - Build / warning fixes
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2014 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e5baf6da452df3c02af2dc5bbe0fc5e0315960f4
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Dec 15 10:56:45 2004 +0000
-
-    - Convert C++ comments into C to avoid compiler errors on some platforms
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2013 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e7a0b8f4eb01e00d87642891054ef7c1ebbf7023
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Dec 15 09:35:30 2004 +0000
-
-    cleanup: declare local functions as static, renamed shadowed variables etc.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2012 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 57cc65e4859748028979082281f96a329e751cbe
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Dec 15 08:38:36 2004 +0000
-
-    cleanup
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2011 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8e05d3eabb1acc24cdc9be7919e305356efacde1
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Dec 13 20:58:28 2004 +0000
-
-    do a memcpy only if source and dest are different
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2009 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7a0738ecb69091ac914c5f21d5dbd9eaca7a7cf5
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Dec 13 11:24:53 2004 +0000
-
-    local functions should be static
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2008 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f2157e90bafb84e3cdcc941b8351cc08ec9f0fe7
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Dec 13 09:48:54 2004 +0000
-
-    don't close stdout/stderr
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2005 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 71441cd6a5900c03ade80310750dd903ce0ce501
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Dec 12 21:51:51 2004 +0000
-
-    fix memory leak
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2003 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5feb1f133f762a098fe08a884fee64c2994e108b
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Dec 12 20:41:04 2004 +0000
-
-    close files when the context is destroyed
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2001 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 56a37d6c4877d623649db1ca7fd6617f0c25bfde
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Dec 12 19:13:17 2004 +0000
-
-    use object specific release method (if existing)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2000 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 75b9f0b5ded884f35bddb719cf528f74e7f49ead
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Dec 12 17:17:07 2004 +0000
-
-    fix (potential) memory leak
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1998 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 895289c9048bd7fab8ef908d9f332f07fc5c406a
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Dec 9 08:23:57 2004 +0000
-
-    bugfix: don't try to get the CKA_MODULUS_BITS attribute from a private key
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1996 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 711150f715a95f0a9877a2fd3f2eefcb50a9d73e
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Dec 8 20:57:37 2004 +0000
-
-    fix memory leak
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1994 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e8e1fad7248e2d893c701ef323c045de1cf92806
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Dec 5 19:04:17 2004 +0000
-
-    the big openssl fix. hope everything still works.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1992 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d2442fe48deb803429015e178206af9a1dbf26b5
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Dec 5 19:03:55 2004 +0000
-
-    make functions static, so the names don't conflict.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1991 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0d7c9328f0cbd8ce44cedadcbfa9e972e36f48e5
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Dec 5 16:35:54 2004 +0000
-
-    suppress error message when testing signature alg
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1989 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6ff0afc336c1d21d157807e2be5d362fa5a2e840
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Nov 30 21:32:18 2004 +0000
-
-    new pin handling to make opensc engine work with wpa-supplicant.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1987 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit eb619d1422331ef9e455755ab8fd0c541e199354
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Nov 26 08:43:44 2004 +0000
-
-    bugfix
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1986 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2d2a6d8bacff51ec8e333a574a02c601015dcd37
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Nov 24 17:00:53 2004 +0000
-
-    add pkcs15 emulation support for the Italian postecert card
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1985 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9dc98ed2624675aa0eb1c0fab741e90696b3f8c9
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Nov 15 09:39:21 2004 +0000
-
-    try to avoid conflicts with file ids of different file types
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1983 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5a4fc80033533e5258f2211334d6c1c6b3127639
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Nov 12 19:49:22 2004 +0000
-
-    Don't check if the token is initialised
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1981 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0370a532045afbc8d3eb980f4cfea9710ba307de
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Nov 12 16:59:09 2004 +0000
-
-    try to avoid conflicts with file ids of different file types
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1979 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit fe89863e92c5b970496b6cdf350d08d09187e773
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Nov 5 21:04:33 2004 +0000
-
-    bugfix from Antonio Iacono
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1978 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9e3827a50bf94899a4a0378fc1c0227fc3a367b3
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Nov 5 18:48:13 2004 +0000
-
-    add spanish translation.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1977 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5a618d8a54f3b39c74261a2af3fb03931bd8c475
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Nov 5 18:31:57 2004 +0000
-
-    add more *.pc files for all other libraries as well.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1976 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1869b95bae66fa5d58ca676bcc139fe5478fc98a
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Nov 5 18:30:59 2004 +0000
-
-    Add spanish manual by Jonsy (teleline) <jonsito at teleline.es>
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1975 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b0649c1e4f42bc826dd84b0fae74e4c80846ccfe
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Nov 4 19:14:58 2004 +0000
-
-    build fixes by Vile Skytt�.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1973 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ca939d1dd6ae831d84163f7cddf498c014ae5954
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Nov 3 21:39:47 2004 +0000
-
-    bugfix from Antonio Iacono
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1972 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c613908dde19d47268cecfdbf28e22e6a3392cad
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Nov 3 18:14:58 2004 +0000
-
-    check only for attributes which can be present
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1970 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7c005458efda24c3ebf58ef2c8a0d80aa872fbca
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Nov 2 21:46:23 2004 +0000
-
-    update for the Infocamere support, supplied by Antonio Iacono
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1969 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d1da4005aa5a0e3916ba2662a02da20e2d2d1b4a
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Nov 1 21:13:57 2004 +0000
-
-    fix select_file in mcrd. by Martin Paljak
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1968 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 44c55aea827663bb54a2c910f5153ac5bf030604
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Nov 1 11:41:20 2004 +0000
-
-    clarify micardo situtation.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1965 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4bb760db4d18082d7e11c20ff9b4f123243cf1c8
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Oct 29 20:08:54 2004 +0000
-
-    cleanup
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1960 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2b29b3b7a8f06623371cc28200eb485f6c65f0b1
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Oct 27 16:10:32 2004 +0000
-
-    fix last commit
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1959 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a37338352a62dc24f8240b2457985725fcd319fd
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Oct 27 06:41:27 2004 +0000
-
-    remove obsolete module support in libopensc (scdl should now
-    be used)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1958 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 17fa73fb5d17461f774b7017b726f5aef2e9cca2
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Oct 27 05:10:34 2004 +0000
-
-    scdl.lib needed for for the link step due to the recent changes in dynamic loading
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1955 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ba23f8246a8e309da9e8e59287d43d57fc99123c
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Oct 25 10:43:50 2004 +0000
-
-    support for dynamic pkcs15init drivers
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1953 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ace9520193d98746644e44d0226a1414876d130b
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Oct 24 17:20:29 2004 +0000
-
-    fix memory leak
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1951 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 897ca8eff2a75c2dabe2a6be805d84123f685510
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Oct 24 17:17:48 2004 +0000
-
-    fix memory leak
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1950 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e583473ceb48656c4179742d37d08b41b6544d8f
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Oct 22 07:29:07 2004 +0000
-
-    two patches from Marin Paljak <martin.paljak at gmail.com> :
-    - remove unnecessary function from the reader ops
-    - add a field for pinpad support
-    - cleanup + fix indent in card-mcrd.c
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1948 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ef8df66b5d04372ed1617fac77957e2ee713032d
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Oct 20 06:53:14 2004 +0000
-
-    sc_module_*() -> scdl_*()
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1947 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d0de68566f2322f3fd95aca9c9b901bef7f8cbf1
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Oct 18 21:35:24 2004 +0000
-
-    sc_module_*() -> scdl_*()
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1946 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3dacb2c6268dfa15072a43c35a6c738b24151e5f
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Oct 18 08:24:12 2004 +0000
-
-    implement dynamic card/reader support
-    from Juan Antonio Martinez (with some input from me)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1944 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 548cf727350a50771927bc285fe8ef6084ca42d4
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Oct 17 20:40:58 2004 +0000
-
-    fix compiler warnings
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1942 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 59854156030d38788b3b1e730d81f5f8486d16c9
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Oct 17 20:20:59 2004 +0000
-
-    some cleanup: 'int' -> 'unsigned int' for flags, 'int' -> 'size_t'
-    for length + remove some compiler warnings
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1940 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 912ddbdf57e010ddf35163d40d0a040ec374850d
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Oct 17 18:34:24 2004 +0000
-
-    fix compiler warnings
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1938 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5b4730dabdd2a0b06ae5738245c45fbf6ecb4969
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Oct 17 16:46:34 2004 +0000
-
-    flags should be stored in a 'unsigned int' (at least this seems to be
-    the convention in libopensc) => change tokenInfo flags from
-    'unsigned long' to 'unsigned int'
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1936 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2c0781335c4c1dda99935e305eff8385f9872651
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Oct 17 16:20:46 2004 +0000
-
-    fix signed vs. unsigned mismatch
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1934 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f318fec2b013a5bbfbc39f74947b59bf971704c1
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Oct 17 15:59:38 2004 +0000
-
-    sc_module_* -> scdl_*
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1933 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c994105bcf66358044c11da7e3b58e325d154579
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Oct 14 06:37:04 2004 +0000
-
-    suppress annoying (but unimportant) error message
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1931 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit fd5555bc09b11f44d27398bada5317cef6a6970b
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Oct 13 19:07:57 2004 +0000
-
-    fix compiler warning
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1929 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 23e7da693e598c9e027d7b614e0d6fa085d654e7
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Oct 13 18:57:54 2004 +0000
-
-    update opensc.conf for the new pkcs15 emulation stuff
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1928 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3d64764d4dcac0661b872d6152c4e009d81e8b5e
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Oct 13 18:54:06 2004 +0000
-
-    fix int vs. size_t mismatch
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1926 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 05fb0f458783896502503244fce5f045bdd12053
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Oct 13 18:02:39 2004 +0000
-
-    initialize pointer to NULL
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1925 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 61360066f7ac8de2d50dcef6dd4477cc9e7d7ca3
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Oct 13 07:19:38 2004 +0000
-
-    Added info for EF data files
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1922 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d5c1436ed6e1fbafe4816d7c3232da83a7a3bc57
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Oct 12 19:36:06 2004 +0000
-
-    Added RSA decryption (Robert Pragai)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1921 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 40116504a75245933c1dcdf8a74019210e107d0f
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Oct 12 06:24:58 2004 +0000
-
-    bugfix from Hubert Sokolowski <hubert.sokolowski at biatel.pl>
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1919 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b78fbd0d7a07c6f751aae44c5669606b7c04edef
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Oct 11 21:22:54 2004 +0000
-
-    u_char -> unsigned char
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1917 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5a328e3dcc905e1b4da79a7ee062d34f553a523f
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Oct 8 21:29:55 2004 +0000
-
-    update pkcs15 emulation stuff
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1916 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0d4ca3497332db103454e904a24f1eec7f0f867b
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Oct 8 21:25:50 2004 +0000
-
-    don't search the LD_LIBARY_PATH in case of a absolute path
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1914 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8ff91915bc87a73f65da5aa903e5c62f36c836e9
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Oct 8 07:11:40 2004 +0000
-
-    forget pin if it was wrong.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1912 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 34e3a42c8f58e64b11a5a648e5f2cc96a641eab8
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Oct 6 14:07:18 2004 +0000
-
-    If you do pkcs15-init -C with the onepin option, you can now specify --pin and --puk instead of --so-pin and --so-puk (also allowed for backward compatibility)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1910 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1249c9c2ab53f5fa197db428d7a35d771c2376cd
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Sep 28 20:06:04 2004 +0000
-
-    fix starcos spk 2.3 "onepin" profile support
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1908 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 61301ca546d48bc10e2926f8da4ccc8f7afc2a85
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Sep 27 08:38:51 2004 +0000
-
-    Don't use 0 as input to test signature-verification
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1907 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e15cc12e320595c6a8ffdca366d9a091a0c0ae6a
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Sep 24 08:54:16 2004 +0000
-
-    improved card detection + cleanup
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1906 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9953d0b21dd9d158912cc05680ddef1fa7183b83
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Sep 20 09:47:35 2004 +0000
-
-    fix some compiler warnings
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1905 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 31c1c53d1359a4aebe9aaf42bd32513877b7fe64
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Sep 19 19:50:52 2004 +0000
-
-    correct tries_left entries
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1904 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3f5dc679817436cf6b32646771f9457a88874f09
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Sep 19 19:47:34 2004 +0000
-
-    print 'tries_left' only if the value is >= 0
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1903 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 60eeadb96233be6973f651c2393971b0a9a3805e
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Sep 17 19:27:49 2004 +0000
-
-    add support for sc_card_ctl(*, SC_CARDCTL_GET_SERIALNR, *) for
-    TCOS cards (and use it in the netkey support)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1901 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5ebccf1842bdb5fecd2fd8fb98fd7ded7518b3e1
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Sep 17 19:13:30 2004 +0000
-
-    rename "StarCOS" -> "STARCOS SPK 2.3"
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1900 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2df8086209cbef05321cd2a93b4ab6df425e9ca3
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Aug 31 17:31:00 2004 +0000
-
-    fix definition of SCARD_PROTOCOL_ANY
-    patch supplied by Ludovic Rousseau <ludovic.rousseau at free.fr>
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1898 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3ffc2010824d7e066e1edafa62c81277c164ac31
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Aug 25 20:55:07 2004 +0000
-
-    fix tab indentation and adds the tries left field to the --list-pins output
-    patch supplied by Martin Paljak <martin at paljak.pri.ee>
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1896 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9bdd1f675cc62a4124ae165473cc09ea2fa59fdd
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Aug 25 20:45:32 2004 +0000
-
-    bugfix: fix segfaults when using a pin-pad for pin verification
-    thanks to Joachim Bauch <jojo at struktur.de>
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1895 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit fa0b71a99b0960287b302e3de7e02d1506673712
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Aug 21 14:26:16 2004 +0000
-
-    add "--raw" option
-    patch supplied by Jari Eskelinen <jari.eskelinen at iki.fi>
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1894 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c222271165e5d71716e172ac3805202f8c2c496d
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Aug 21 14:24:39 2004 +0000
-
-    bugfix
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1893 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 652759a364c8187e470596e045aa566c3202ef4d
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Aug 21 10:54:28 2004 +0000
-
-    two small fixes to let pkcs15-init work with starcos spk 2.3
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1892 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f8c603f5592dbef3f67bf167712121c92d3e8462
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Aug 21 10:53:09 2004 +0000
-
-    update starcos spk 2.3 pkcs15-init support
-    change summary:
-    - some bug fixes
-    - support for global so-pins
-    - use so-pin (if present) to protect key creation etc.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1891 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d6c98f7ae2f2cedb24c91effba6d2b84a399c468
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Aug 19 08:55:15 2004 +0000
-
-    add support to force pcsc to use a certain protocol
-    patch supplied by Martin Paljak <martin at paljak.pri.ee>
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1890 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 49b5366530a1e6ae480bffa28a71414330ad8eb2
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Aug 19 08:41:51 2004 +0000
-
-    add additional atr
-    patch supplied by Martin Paljak <martin at paljak.pri.ee>
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1889 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e618b1ff28d935b1760ffbe99ce1378d44ea5046
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Aug 19 08:39:18 2004 +0000
-
-    move the emv driver to the end of list
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1888 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit bfe73f3b7153607bf6875e2e79d2e701ae0041bc
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Aug 14 13:43:17 2004 +0000
-
-    improve pkcs15-init + pkcs15-tool support for data objects
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1887 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0062708982a685a3c07367eb5c507d4b374d5465
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Aug 5 22:34:05 2004 +0000
-
-    set ui_method if and only if it's not NULL
-    patch supplied by Michael Bell
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1885 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 73c9fcf03fbb6b598f78366f95dd1845f8f10b1f
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Aug 5 22:28:21 2004 +0000
-
-    improved error detection
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1884 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f90f8bc80311a1871b50382f4bae62614d332e51
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Aug 5 22:27:11 2004 +0000
-
-    fix openssl detection, patch supplied by Victor Tarasov
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1883 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5044b0e133c77b39599669588d9f81206a7555c9
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jul 28 20:02:07 2004 +0000
-
-    minor docu update
-    thanks to Ville Skytt�
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1881 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2ba6ad3954e3e6376115fb431bc4e20095addb4b
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jul 27 19:14:06 2004 +0000
-
-    set padding flags accordingly (for the decipher operation)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1879 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8e3041850e2e48c43800cc68bf37ded2b993fcc3
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jul 26 19:18:17 2004 +0000
-
-    improve output for pkcs15 data objects
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1878 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit bfd5b494364d8a9b2e18e5ed2651834abdf9b27e
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jul 26 18:47:23 2004 +0000
-
-    pkcs15-init etc. support for pkcs15 data objects
-    patch supplied by Victor Tarasov <vtarasov at idealx.com>
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1877 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1e13a2e011beb520bc61b6bf2d57e995477345c2
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jul 26 04:53:42 2004 +0000
-
-    properly split LDFLAGS into LDADD and LDFLAGS to make parallel build work.
-    Thanks to Ville Skytt�.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1875 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3534e4e7e2f6436e4c21590a242e972b1ec9dbcc
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jul 25 12:35:41 2004 +0000
-
-    small configure improvements, documentation updates.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1873 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 939d3a7406f051330bb2e600044247ab041b903d
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Jul 24 21:08:13 2004 +0000
-
-    Permission checks and support for several certificates in the
-    authorized_certificates file. Code written by Fritz Elfert.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1868 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 395c614483aefb04c33da951c79a776ac56900e3
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jul 23 20:29:05 2004 +0000
-
-    fix default values for OIDs
-    patch supplied by Victor Tarasov <vtarasov at idealx.com>
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1866 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d0a64b651f7474bd2d45df9c01f358ce0fa1ff47
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jul 23 16:52:41 2004 +0000
-
-    one more ATR for Oberthur 64K card
-    patch supplied by Victor Tarasov <vtarasov at idealx.com>
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1864 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0464df92354b2d2248566e85bf0625f1ba6fd9e2
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jul 23 16:11:23 2004 +0000
-
-    fix ASN1 NULL handling and avoid malloc(0)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1862 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c526488cb394cecb2975fb75179d8e393eb2d28b
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jul 22 20:52:39 2004 +0000
-
-    There is a problem with decipher() of the oberthur card driver.
-    Manifested when caller allocates more then needed memory for the result.
-    Thanks to the regression tests,
-    Viktor.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1861 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ef89694f008457c2919b4bb180c46c282ce1395f
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jul 21 22:11:12 2004 +0000
-
-    Bug found by Stef Hoeben.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1857 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 23ebb42bcf345c6f6931eda6265e1f968403dd5d
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jul 21 22:10:04 2004 +0000
-
-    Typo found by Stef Hoeben.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1856 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c2459879d9e425876de87398acf5aa4ed2f746ef
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jul 21 22:02:37 2004 +0000
-
-    pkcs11-tool and pkcs15-crypt use libcrypto, so they need to link
-    with it. Found by Dirk Gouders.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1853 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d2ba28997baab56264d0665b175bcfa68c7a3ae0
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jul 21 21:56:30 2004 +0000
-
-    fix a typo.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1852 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit fa651f11cb736250493d6d40adc55ff0e42a0c2e
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jul 20 22:11:49 2004 +0000
-
-    Add a quick start file, a simple text document.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1848 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d651642fa41d867bc4ced8c372f0e7afc8893357
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jul 20 22:11:06 2004 +0000
-
-    Add some text documentation.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1847 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c9dfe962b9dee95b4cf6415af20e97c9ea1c255d
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jul 20 20:52:21 2004 +0000
-
-    Deal with new pcsc-lite code changes.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1845 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 16fc784ae916ae11841b93fdbe6dfffb826ef159
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jul 19 19:37:42 2004 +0000
-
-    try pkg-config, fall back to conventional code.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1843 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit aeb9c47c7ea01b8905174e8ac817195430c24ed5
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jul 19 16:58:27 2004 +0000
-
-    try to get the card serialnr via sc_card_ctl (unless it has
-    been explicitly specified by the user)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1842 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8d9ace2d7f484cea63911f03a7560e376d3bafdd
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jul 19 16:51:41 2004 +0000
-
-    experimental support for card serial numbers
-    (at first only for starcos spk 2.3 and cardos m4)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1841 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 960ffce23178be78cefd04a5793af0945aa48735
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jul 19 16:18:30 2004 +0000
-
-    int -> size_t
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1840 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 86345157b4a1b5fa181822b1988df49ce3f33cea
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jul 19 16:12:43 2004 +0000
-
-    fix compiler warning
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1839 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f8369b08aca7fcc0a7b5c3cd426874513ad1625f
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jul 19 15:42:19 2004 +0000
-
-    support OpenSSL version < 0.9.7 in card-oberthur.c
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1837 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit fe3914b397e47778b83ca3b6ed49828cf8b99fc3
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jul 14 22:11:53 2004 +0000
-
-    kill two warnings about unused variables.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1835 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 268a302950060dce6a73e408c041d40eeca798c0
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jul 14 21:13:54 2004 +0000
-
-    Add support for Estonian ID card. Written by Martin Paljak.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1834 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 78d32814a13f62f1d916571634be97f04c03f3d6
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jul 12 15:19:28 2004 +0000
-
-    fix off-by-one bug, pointed out by Michael Bell
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1827 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 82ec09e92bd71b6525974da4dd054a4db4f67f2a
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jul 12 08:42:55 2004 +0000
-
-    check return value
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1826 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 71e5f638c5d960dfbdaa001b7604be555af9495e
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jul 12 08:26:53 2004 +0000
-
-    fix/cleanup passphrase input
-    Michael Bell <michael.bell at cms.hu-berlin.de> and Nils Larsch
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1825 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8ac3be86eb5fbc2f68f69913103cdb06dec9eb39
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jul 9 21:33:02 2004 +0000
-
-    As far as I know we did some incompatible changes since 0.8.1
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1824 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8f2f699a6c20b82d81ec605fedc8116763d44ba2
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jul 9 21:30:03 2004 +0000
-
-    add README and ask-for-pin.diff to the distribution.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1822 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d607d51faae18a4d4e94871cc2e329c19883be2a
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jul 9 21:28:06 2004 +0000
-
-    Add missing scripts init0012 pin0001 pin0002 to distribution.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1821 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1c51a8f0ddd782a409e17e6865c157713483a3c4
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jul 9 15:33:35 2004 +0000
-
-    Fix: if a card couldnt be read (e.g. inverted upside down), allow to retry it later when asked
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1817 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit cdee73adff1852babd0fccfb7296b00ceda498e2
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jul 9 15:31:08 2004 +0000
-
-    Fix: don't free anything in the connect() function because it can be called multiple times
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1816 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1e371c92f6f01512919254e814007cfbfa7239b4
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jun 30 21:37:03 2004 +0000
-
-    a small patch to make openssh ask for a pin. and a README.
-    this patch is a hack, not production quality, and will not
-    be accepted by openssh. But a clean solution requires changes
-    in openssh, and that will not be easy.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1810 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 07ff3af231b98ae2d2fe1e71f0d1e67e6b84a1ab
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jun 30 21:35:55 2004 +0000
-
-    Add current patch for openssh so it can ask for the pin.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1809 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 84f08c954428d40900a8ee8287a65d23d5dd89ea
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jun 30 17:26:05 2004 +0000
-
-    fix TCOS decipher operation
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1808 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9fc8b4376a8b5a418fe67af9403c3a4248f3c7bf
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jun 29 20:34:03 2004 +0000
-
-    openssl 0.9.7d and later require and support linking engines with -lcrypto.
-    for older versions we need to link with libcrypto.a or skip the engines
-    alltogether.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1807 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit eeeebc4117563eeb48c21b2065524a9a6f1f0e08
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jun 28 22:54:36 2004 +0000
-
-    small makefile improvement by Ville Skytt�
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1806 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 83635047e0acb9bae66ee79dc6466785d533208f
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jun 28 16:42:03 2004 +0000
-
-    add support for Telesec NetKey cards (still experimental)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1805 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9fb99e70517cdd4d3e897b2d4d5154422b38b02a
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jun 25 15:44:33 2004 +0000
-
-    use opt_passphrase, if present, before asking the user
-    patch supplied by Michael Bell <michael.bell at cms.hu-berlin.de>
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1804 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a7e042fdb3e8554f23ea3f9337510cfaae22877d
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jun 24 17:25:23 2004 +0000
-
-    Add two new commands: update_binary and update_record.
-    update_binary can be used to write arbitrary data data (entered as
-    hex values) to transparent files and update_record can be used to
-    do the same to record files.
-    Patch supplied by Victor Tarasov <vtarasov at idealx.com> and Nils Larsch
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1803 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 446bf759d6d81aed975dcf0ed0ffb6faad55707d
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jun 24 17:03:17 2004 +0000
-
-    patch supplied by Victor Tarasov <vtarasov at idealx.com>
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1802 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7446d43ea5810440b03a56b375639beaa4dca536
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jun 24 06:29:51 2004 +0000
-
-    add (partial) pkcs15 emu support for StarCert V2.2 cards
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1801 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 504fe28dc22fea88f08860dfdb5beba6c679e5e7
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jun 22 17:46:45 2004 +0000
-
-    clean up access rights for updating pin/puk
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1800 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a9b00f005f06be05bbc3051654279ff656bcde28
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jun 21 21:20:29 2004 +0000
-
-    use the padding character from the pkcs15 objects
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1799 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b1859fc2cb80dd4f197c277f176bb5b05c75622b
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jun 20 13:37:04 2004 +0000
-
-    the older generation of oberthur card is not supported by the
-    current driver. better not detect them at all.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1798 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6281259f04910feade9652edbb86d72d0335b747
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jun 18 20:49:54 2004 +0000
-
-    fix usage of asn1 flags
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1797 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b467a52c62c85da6c9a642196e01048baad60802
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jun 18 09:33:53 2004 +0000
-
-    One more italian eID card, this time from gemplus.
-    reported by Antonio Iacono.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1796 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 23d92b8abd22d63bb4226db887774f5ba514b9ab
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jun 18 09:30:21 2004 +0000
-
-    Also add oberthur files to Makefile.mak.
-    oops, sorry for forgetting. Reported by novakv and
-    fixed by Nils Larsch.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1795 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 856cbdebfafb9d2d6dda11af5498139e564d9077
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jun 18 09:12:50 2004 +0000
-
-    fix short options as well.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1794 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 52c1b2d700f4d41b3bf04a76f94ce46a06f4898f
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jun 16 20:59:59 2004 +0000
-
-    Very basic and untested oberthur driver. Could possibly work,
-    as only non-essential parts stripped (or at least that was the plan).
-    
-    Written by Viktor Tarasov of idealx.
-    
-    All bugs by Andreas Jellinghaus, please don't blame anyone else.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1793 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9b7cdbffadb8453b33635f29bb37cd13bf942cf1
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jun 13 20:13:12 2004 +0000
-
-    cleanup debug/quiet/verbose handling.
-    now all tools accept "-v" for verbose
-    operation, and you can specify -v several
-    times to get more verbose i.e. debugging
-    output.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1792 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4aa731e415d878b8270f338ab17dcc6a155ff1f5
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jun 13 20:04:53 2004 +0000
-
-    oops, forgot the select.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1791 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 209dad0217ced24abe275b1c59fa2d2919f377d5
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jun 13 19:45:24 2004 +0000
-
-    fixed a small bug (!= instead of ==) and made
-    the code hopefully more readable.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1790 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 395a128e9684d4280a7f761265b4228612e2dc73
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jun 9 18:40:33 2004 +0000
-
-    replace X509_NAME_oneline with X509_NAME_print_ex
-    Patch supplied by Gregor Kroesen and Nils Larsch
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1789 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7a88ff4d87a5a5f267a9ae93a36b13c419a6c1f5
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jun 8 20:22:36 2004 +0000
-
-    fix module name handling
-    patch supplied by Michael Bell <michael.bell at cms.hu-berlin.de>
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1788 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3560f1a49eedfb2662dc8d81924a4cea251b7041
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun May 30 16:23:59 2004 +0000
-
-    don't omit the first extension
-    Thanks to Gregor Kroesen <kroesen at rembrandtstr.de>
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1787 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 47de5b0a4ad6bd51ce89cd48b7e0cdb993bb2a63
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri May 21 10:15:30 2004 +0000
-
-    fix usage flag
-    Thanks to Peter Koch <pk.opensc at naev.de>
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1786 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0ea8a53c0ea146e9991ca8ee43263fefc7053ce7
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu May 20 09:36:58 2004 +0000
-
-    only set the key_reference if present
-    Thanks to Andrej Komelj <akomelj at email.si>
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1785 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8147c22a93d8bc3674f47b564017ff576a17c274
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu May 20 09:09:30 2004 +0000
-
-    call sc_select_file only if pin->path is actually set
-    Thanks to Andrej Komelj <akomelj at email.si>
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1784 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c35e006c3434b32835b7fb1215a9c5b44217351f
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue May 4 18:13:36 2004 +0000
-
-    add pkcs15-syn support for infocamere cards
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1783 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d5697cfb6e93919f47fd4ae933deae14567fc4ee
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue May 4 18:12:46 2004 +0000
-
-    add pkcs15-syn support for infocamere card
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1782 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 02cbe02bc24c2269bc24d86ad5ade8a04cb49742
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue May 4 17:58:04 2004 +0000
-
-    include common object attributes in the sc_pkcs15emu_add_* api
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1781 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 475a29de671c7f73b78f78958b372532dc4a7a46
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 27 17:41:02 2004 +0000
-
-    proper checking of the SCardListReaders return values
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1780 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f2bd9af6ccfca28709170d1a241747f44a26b967
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 23 17:29:24 2004 +0000
-
-    use pin_cmd for sc_pkcs15_change_pin and sc_pkcs15_unblock_pin as well
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1779 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 338a7c4eff0fb2b6ac10c9da853fadb7a6006774
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Apr 22 07:04:50 2004 +0000
-
-    oops. O_BINARY is for windows, not linux.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1778 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4b4c20196b01c44003667205f4be44e851267615
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 21 21:11:06 2004 +0000
-
-    better checking for null values.
-    found and fixed reported by Victor Tarasov <vtarasov at idealx.com>
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1777 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8cb6a3f94a3dd005a5a4d3f81efd4814f74b4010
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 21 20:11:56 2004 +0000
-
-    "--assert-pristine" workaround for Starcos cards (see comment in the patch)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1776 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f044157553b2929a276e299cf2234651d0709c02
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 21 18:10:58 2004 +0000
-
-    fix incorrect use of realloc (x = realloc(x, y) doesn't free
-    the x in case of a failure)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1775 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b62825d31972bd544d3b39a2261ceb868b221796
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 21 16:52:40 2004 +0000
-
-    fix memory leak
-    Discovered by Victor Tarasov (thanks)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1774 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9e7b7c6e99ced519a2b01881e1d875be423da1d3
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 21 07:41:01 2004 +0000
-
-    Add pkcs15-starcos to windows makefile.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1773 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9fb7334e710ca0bc09814d599828be6325b1efbd
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 21 07:33:49 2004 +0000
-
-    Open file with O_BINARY on windows.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1772 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit effbc2a7b613c4a0083fbf0f15757c454dbb7e75
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Apr 18 18:42:47 2004 +0000
-
-    remove pointer to freed secret object
-    Patch supplied by Victor Tarasov
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1771 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2daf4c814d378b8cba0a386f934dc7fed70e417f
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Apr 18 18:14:39 2004 +0000
-
-    Adds message digest and DER encoding if necessary.
-    Patch by Mathias Brossard <mathias.brossard at idealx.com>
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1770 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit cc91de4a35060e491fba08c533707d462173d2f9
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Apr 18 18:06:25 2004 +0000
-
-    Converts all printf(...) tofprintf(stderr, ...) and condition output on all
-    non-error calls to the'quiet' (pre-existing) variable.
-    Patch by Mathias Brossard <mathias.brossard at idealx.com>
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1769 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit fc6b6054bd3f060f569d72ff7d4c4d1bb8088a88
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Apr 18 18:05:05 2004 +0000
-
-    adds three options PIN, QUIET, VERBOSE to theengine allowing respectively to
-    set the PIN code, reduce output, augmentoutput. First one is obvious, the 2
-    others need the second patch to beuseful.
-    Patch by Mathias Brossard <mathias.brossard at idealx.com>
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1768 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5e080b8202978f834fd21b202fc6f36e13fef2a6
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Apr 17 22:21:28 2004 +0000
-
-    add support for split keys in engine_opensc.c (backported from the
-    opensc stuff in openssh)
-    Thanks to Neil Dunbar
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1767 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b057f4055deae1374d1e22904c852b8ee6a74cbd
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Apr 17 09:25:30 2004 +0000
-
-    add support for "finalize" to pkcs15-init to activate the ACs for starcos
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1766 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 564d07ebe61f3e9871ca1fe1a6d55db8e3a5bc2e
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Apr 17 09:23:26 2004 +0000
-
-    bind the new starcos spk 2.3 support to the pkcs15init code
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1765 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 846a14849e45530011709c512550778acc3285bd
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Apr 17 09:20:08 2004 +0000
-
-    initial pkcs15-init support for starcos spk 2.3 cards/tokens
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1764 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6f1d8852887b7ef2602d523186240eaf706347ce
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Apr 17 09:15:05 2004 +0000
-
-    ensure that init_func is not NULL (even if the config file is not correct)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1763 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ac5fea091aa702ba054bc159ef97d6afcb1a8fa7
-Author: nils <nils at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Apr 17 09:05:54 2004 +0000
-
-    update starcos spk 2.3 support (add create file + key gen)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1762 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 02314bdd7e2d13f8f9803a0e4312112c42609bef
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 14 22:09:51 2004 +0000
-
-    while we don't have code to extract a key, tread
-    extractable keys like non extractable ones.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1761 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6e15c2421ec463f1938b1bcb95521b74d04e9205
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Mar 29 20:34:30 2004 +0000
-
-    check parameters in strcpy_bp
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1760 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 37a957cbe48e7d36a362eac19627e760ad6fbff8
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Mar 29 07:56:32 2004 +0000
-
-    cryptoflex 32k e-gate v4 also has on board key generation.
-    thanks for reporting to Pierre JUHEN.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1759 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0b8ff3ce6a3aeaef600384df7db7a96c20ae9aff
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Mar 28 20:30:58 2004 +0000
-
-    it is legal to read all bytes of the file (e.g. offset 0, len 10, fil->len 10).
-    Bug found by Antonio Iacono.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1758 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 73d092274154556f0a8bb349b860ec8fbbee1871
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Mar 28 20:26:43 2004 +0000
-
-    len is the number of character, we need to alloc len+1 for
-    the \0 terminator. Bug found by Victor Tarasov.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1757 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6460502b98d65e38b8ce7469276c6dec86c69491
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Mar 14 19:53:23 2004 +0000
-
-    add "rm" alias for "delete" and "exit" alias for "quit".
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1756 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 345d30a9d67887b777ff6e41dd503bbcb2cad4f7
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Mar 8 13:59:27 2004 +0000
-
-    Moved the sc_pkcs15emu_xxx() functions to pkcs15_syn.c
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1755 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9326f5f1c4008c354e651cc8fdf992585b04e229
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 3 16:25:48 2004 +0000
-
-    Allow file_app in struct sc_pkcs15_card to be NULL (may be the case for pkcs15-emulated cards)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1754 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9333f53ffcdfce7374fb4703763fee8a47a462a1
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Feb 16 12:29:54 2004 +0000
-
-    remove CARDOS_TYPE_ETOKEN_PRO, the name does not fit.
-    annotate atr with version number 4.0 / 4.01 / 4.01a.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1753 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 21b43fca83fea42b91dcca6df25dbb11e8888eeb
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Feb 15 23:00:04 2004 +0000
-
-    added cardos M4.01a atr.
-    thanks to Laurian Gridinoc for reporting.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1752 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 28461ad360a1cd2d72e9d838f1a51ae0d13c1c27
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Feb 3 14:51:43 2004 +0000
-
-    - properly identify Italian eID card
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1751 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit db7d3bac6ea6caee79d7c62a1f59a30fd80c021e
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Feb 3 10:25:20 2004 +0000
-
-    - Properly handle max-length in PIN statements; added new stored-length:
-    	PIN blah {
-    		max-length = 8;
-    		stored-length = 4;
-    	}
-      Bug spotted by Victor Tarasov
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1750 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 393de85ac109a3e0106df9d10c28776e08dde5c1
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Feb 2 10:24:31 2004 +0000
-
-    - Don't crash if card->serial_number is NULL
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1749 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 20e2b1b94b167bdb5ef1eec8963e00d01dcc7b84
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jan 29 09:36:48 2004 +0000
-
-    memset is defined in string.h
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1748 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a75058ea89a40f19d5c29714fd7944f6eecee4f5
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jan 29 09:21:30 2004 +0000
-
-    - apdu wasn't completely initialized (Renzo Tomaselli)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1747 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ec0d4db12b7f619eec3964959104e22a190c62a0
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jan 27 09:03:15 2004 +0000
-
-    - Allocate the right amount of memory when base64 encoding for PEM
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1746 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5d6af9a68c1b66e889e7c0f19e9c4fcdce2d9235
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Jan 24 20:55:34 2004 +0000
-
-    Added --cert-label option, usefull to specify the user cert label if you do a --store-private-key
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1745 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit cbaec369b964e39b4c04baff1a95fa1c9f6b8720
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jan 23 09:27:41 2004 +0000
-
-    - documented max_{send,recv}_size paramaters
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1744 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8ff6c991e1b2a2861b5b8beec3da8bb329249dcf
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jan 22 22:04:20 2004 +0000
-
-    new debian packages: added pkcs11-spy, undid library merge.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1743 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7a1595601809d3e958b9101c109c04439d8f71a9
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jan 22 12:37:26 2004 +0000
-
-    - Allow lists to end as ,;
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1742 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9f6ffdbe0aa385d1e7efed399f4aa305732f6628
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jan 22 10:13:40 2004 +0000
-
-    - Added a short introduction to scconf as an API
-      and a file format (Jamie Honan)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1741 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9d49aa0769a8756e0e48aa0d04e66bd7a2314479
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jan 20 11:21:40 2004 +0000
-
-    - fix crash with pkcs11 module and token disconnect
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1740 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2b4b08550b14ac07b6f08507c7462cf2de483d1a
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jan 19 19:52:38 2004 +0000
-
-    - Revert previous patch
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1739 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a9c914aa6bea4bfcc255e3543a0f1aeb856ea353
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jan 19 18:54:15 2004 +0000
-
-    make these libraries not standalone (pkcs15init, scam, scconf, scldap).
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1738 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9f8da8298c10913c8798dbf8180166a5c00905e2
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jan 19 18:53:13 2004 +0000
-
-    several debian fixes, new version.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1737 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6aa364bfe4292f9fc8f97323900ba78b971ad9aa
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jan 14 10:43:07 2004 +0000
-
-    From: 	Ludovic Rousseau <ludovic.rousseau at free.fr>
-    > You still have some unecessary files in CVS debian/
-    ...
-    
-    thanks for the hint.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1736 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a717fca4c86b2248abc1b3bebe6d7b01840c5dae
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Jan 10 23:13:41 2004 +0000
-
-    - Fixed a typo in the previous commit
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1735 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4d915b987e8abf1121c9ad0f46d6c3e0bff5ce06
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Jan 10 20:24:46 2004 +0000
-
-    - Add versioning
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1734 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8a2d331b34f0d0855aab51fb176a48f147e66e3c
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Jan 10 19:49:52 2004 +0000
-
-    - Move the variable substitution of exec_prefix and
-      sysincludedir to make-level (Lars T. Mikkelsen)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1733 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d34562110ccedb97242207750ec4e29ade7fd431
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jan 8 18:38:06 2004 +0000
-
-    Unneeded files, debhelper does everything we need automaticaly.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1732 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 85d6bc7922546465dced2f5b0c0c37bd574b4431
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jan 8 15:23:11 2004 +0000
-
-    - Warning fixes
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1731 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9779f07467363f7cc8b55955b33c3f46c1b335ad
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jan 8 14:16:02 2004 +0000
-
-    Fix: no keycaching if USE_PKCS15_INIT is not #defined
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1730 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d98096db6d314d31e38dd919c027f8edd374271e
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jan 8 14:08:46 2004 +0000
-
-    I had removed the wrong file while cleaning up. fixed
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1729 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6473d2d2b3e63522df31dd3685544a53d4ee61d7
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jan 8 14:05:32 2004 +0000
-
-    - Unify with pkcs11.h
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1728 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2a266217266ccb3f3c1e4a626da4c3233ed16618
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jan 8 13:21:43 2004 +0000
-
-    - There is no --with-pcsc, replace it with --with-pcsclite
-      which supposedly works the same way as no argument at all. :)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1727 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8603cb40233b7e83be10c46a3dd00de150c85280
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jan 8 13:04:10 2004 +0000
-
-    - Revert previous patch. Instead of providing a configuration
-      file with all lines commented away, provide a sane configuration
-      that works for most people out-of-the-box without user interaction.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1726 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5c3fbbdfab9659696f21dbd78f98d4f496820dc2
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jan 8 13:01:22 2004 +0000
-
-    - Revert previous patch
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1725 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0e7fa43a2910b30fcfde7a9d0e969d0853e0a26c
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jan 8 11:59:55 2004 +0000
-
-    big rewrite on debian/ files, originaly based on Joe Phillips debianisation,
-    reworked by Andreas Jellinghaus, and with many changes and suggestions by
-    Ludovic Rousseau
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1724 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e5322b0cd9db2cde6fed89ff6cdb5149c0c7d58d
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jan 8 11:57:25 2004 +0000
-
-    changes caused by new docbook stylesheet.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1723 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f2803e1a74e7145e5b233fbff6ee895e73cc9792
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jan 8 11:56:47 2004 +0000
-
-    commented out everything.
-    now you can install those files to your etc, it will not hurt you.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1722 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 115bd355ed1c596587aa8fa4e0ef63ab2ffdf4c5
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jan 8 11:54:54 2004 +0000
-
-    config.h is not used in pkcs11.h or any file included by it.
-    but pkcs11.h is a public header file, so it shouldn't do so anyway.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1721 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b9b1dbf6037ebeb9c0b1a88f9745de72de7e3621
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jan 8 11:53:44 2004 +0000
-
-    cleanup a generated file.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1720 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6ef9257c54da55f7e98143a05b9718396e6bc469
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jan 8 10:50:52 2004 +0000
-
-    - fixed placement of "function atexit" wrt shell exit trap handler
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1719 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4f6a7922d88e825d2a6647e9d82fae253a47db50
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jan 8 10:50:25 2004 +0000
-
-    - fixed test case
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1718 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 844ec9bc23e5acd1830632730d6d0626d22cdc29
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jan 8 09:47:23 2004 +0000
-
-    If the maximum allowed number of virtual slots per card is reached, then silently discard all objects that haven't been added yet instead of returning an error
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1717 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7daafeb5da4f137aa125525718e0e567a6d1ba90
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jan 8 08:32:46 2004 +0000
-
-    Update to the new keycache functions for caching the user and SO PINs
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1716 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7bb64d0fcf3a636aaab64416334a4a2d2af08e72
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jan 7 10:11:22 2004 +0000
-
-    - fixed GPK16K key gen, as suggested by Chaskiel
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1715 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f37cb0fce35499f6c2c84a137e03e793a04f2b5d
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jan 7 10:10:34 2004 +0000
-
-    - When zapping the contents of a DF, write the whole file (data + padding)
-      in one go. Otherwise the GPK driver may barf if the file offset in
-      sc_update_binary isn't word aligned.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1714 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9abadbc711f07dd424675043f837f27f1f61c0a5
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jan 7 09:51:07 2004 +0000
-
-    Increased the maximum number of PINs and removed some unused #defines
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1713 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 23aec107ad299a6b8cbe77b5e54aec9df2fa0911
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jan 7 09:49:10 2004 +0000
-
-    Fixed some comments and added an NULL pointer test
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1712 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0d78f07499ebc8009d70a5dc65f9cc5166c7efe6
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jan 7 09:32:58 2004 +0000
-
-    - improved C_Decrypt testing
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1711 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 30e04cef59d700c7d4f2a47f0a43fa46b986156b
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jan 6 14:30:24 2004 +0000
-
-    - Implemented keep-public-key and sc_pkcs15init_remove_object as
-      suggested by Victor Tarasov.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1710 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 13bf8814ef9b39683e99cfca07f3e6736115bbe5
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jan 6 13:40:52 2004 +0000
-
-    - in sc_pkcs15_read_file, properly destroy objects in case of error (Victor Tarasov)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1709 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 09b2730497bc1f76f95ac03793ec0962d446b988
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jan 6 13:33:32 2004 +0000
-
-    - implement sc_delete_record (Victor Tarasov)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1708 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 759ed8df4967c3c382367812e2edb1b445d600bd
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jan 5 18:44:49 2004 +0000
-
-    - pam_opensc rewrite checkpoint commit
-    - rename some functions
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1707 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ec52d8040830c4ce1922f23b768db466140068cd
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jan 5 08:56:32 2004 +0000
-
-    - properly handle pubkey_label in key generation
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1706 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f6aa07d991ef06f04b0844b74844a3ebfae095b2
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Dec 30 08:20:52 2003 +0000
-
-    - Another fix from Remo wrt keygen_args.pubkey_label
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1705 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8a97a69d1d8decc174474f9c97325f71c93eb9c4
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Dec 30 08:00:10 2003 +0000
-
-    - C_CloseAllSessions would block on some Win32 versions because it tried
-      to acquire the global pkcs11 mutex twice.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1704 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f761d1504fa0d173c79df30d9ef64aacf2909a2b
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Dec 29 23:21:47 2003 +0000
-
-    - small jcop driver fix from Chaskiel
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1703 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 292e13b7d9185244439e763844b7599a52882f1d
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Dec 29 20:50:58 2003 +0000
-
-    Add the JCOP card code
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1702 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 20a707002c535d4756d8e5954c7bb6896071cb0b
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Dec 29 16:54:31 2003 +0000
-
-    - Install unix.h and win32.h as well
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1701 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b552bccfd3307551c7268e4cf206b986611dfe94
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Dec 29 13:15:04 2003 +0000
-
-    - signature tests would fail on cards with several keys of different size
-      (fix by Chaskiel)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1700 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit beb86f351b05bdf36668887301654de86d19af35
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Dec 29 13:06:28 2003 +0000
-
-    - util.c:connect_card() now locks the card; removed sc_lock calls from
-      calling applications (based on a bug report by Chaskiel)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1699 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e03cc716e27f0a99bcdfaf10ce314505d2b537fb
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Dec 29 13:03:48 2003 +0000
-
-    - When testing signatures, don't bail out of C_SignInit returns
-      CKR_MECHANISM_INVALID (Chaskiel Grundman)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1698 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 620b62e8b6ce0de7064f5f845a1c172b6875b6f7
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Dec 29 12:42:50 2003 +0000
-
-    - minor fixes to the new manpages
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1697 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8a4a5f033107ce0e3e8224a62a7e86dd3191f2c3
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Dec 29 12:28:37 2003 +0000
-
-    - Added support for JCOP/BlueZ cards, contributed by Chaskiel M Grundman
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1696 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4e48b7778a4d45c542d22d38cdd2a532418caf12
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Dec 29 12:01:43 2003 +0000
-
-    new manpages for cardos-info and pkcs11-tool,
-    both written my Joe Phillips.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1695 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5db7585bb0453b8c4049027d4d42530f934ba5fd
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Dec 29 11:52:33 2003 +0000
-
-    - Minor bug fix in new_pin(), patch by Victor Tarasov
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1694 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6952fb4030834196ad85f86d7def962aa1a723cf
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Dec 23 16:31:09 2003 +0000
-
-    Made a seperate function for the login functionality, and split test_kpgen_certwrite() into 2 parts, with a logout - unload lib - load lib - login between them
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1693 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f017da5102e8cc9d86a2cba366169f06a1b44e6f
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Dec 23 10:48:29 2003 +0000
-
-    Fix: no copying done from in to out in case of SC_ALGORITHM_RSA_PAD_NONE padding (by Chaskiel)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1692 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3dbb26ad6ab52f7f1dea9e652c133b9503df0573
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Dec 22 22:07:02 2003 +0000
-
-    - Linking changes, don't link libpam to pam_opensc etc.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1691 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e18b7117cdee654d888629327cff78e34dfe6587
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Dec 20 14:41:05 2003 +0000
-
-    - Warning fix
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1690 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 78febf36cf17dc811fbd304e3ff3f40cdacf6d3a
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Dec 19 09:56:57 2003 +0000
-
-    - in pin_cmd, don't overwrite max_length if set by caller
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1689 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ae5dcea8915da3130d87fb3cf6d934f808eb59ab
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Dec 19 09:29:56 2003 +0000
-
-    - created new function profile->ops->init_card for card-specific
-      initialization at the pkcs15 creation stage
-    - Added cryptoflex init_card from Stef. This function reads the card's
-      serial number from 3F000002 and puts it into the pkcs15 serial number
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1688 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5bbe78a8fef37ce722d9ccf90fa76cdeaf92801b
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Dec 19 06:52:38 2003 +0000
-
-    sleep(sec) = Sleep(1000 * ms) on Windows
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1687 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7d3fc55736f7649703bcec350f612dd43faab3b3
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Dec 18 21:37:34 2003 +0000
-
-    - Minor build and C++ warning fixes
-    - pkcs15init: Use u8 for pin variable
-      declarations like libopensc does
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1686 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f5aeedf554fcd0102dba3df032aabd69b5d26914
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Dec 18 21:30:28 2003 +0000
-
-    - Obsolete
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1685 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b706b298c9052077a9482da8237edc1b2b6c3794
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Dec 18 19:13:13 2003 +0000
-
-    - Revert parts of the previous patch, use void *func
-      instead of struct sc_reader_driver *(*func(void);
-      as _sc_driver_entry is used for both, reader and
-      card driver lists.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1684 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5dda541b7e883ee4d468367af927627cb2cd65a5
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Dec 18 16:35:28 2003 +0000
-
-    - made apdu_masquerade functionality available to all readers, not just pcsc
-    - added new parameters max_send_size and max_recv_size, roughly corresponding
-      to the old max_le (SC_APDU_CHOP_SIZE) parameter. You can now set this
-      chop limit per driver class (pcsc, openct, ctapi), which sets
-      driver->max_{send,recv}_size. This value is copied to
-      card->max_{send,recv}_size in sc_connect_card, and can be overridden
-      by the card driver.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1683 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit af37c4e02603684358897cd1fa7aaa189ced5ec3
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Dec 18 08:00:27 2003 +0000
-
-    - do not access file afterdeleting it (S Bakkal)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1682 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c2083ba406bf9365b8ce2531d921949325d5ef10
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Dec 17 12:15:11 2003 +0000
-
-    - Add HAVE_UNISTD_H
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1681 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4d378d1cb8f07bbf74807e5b1af9f0ac21d34534
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Dec 17 07:35:55 2003 +0000
-
-    - properly set key usage
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1680 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a569ef57c7311b3b367628ecc4fe703e9fe079c6
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Dec 16 14:41:04 2003 +0000
-
-    - Display better pin prompts
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1679 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit bca2a9f2332acdb9e3f48510f0476f2ba9ba443d
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Dec 16 14:32:16 2003 +0000
-
-    - added GPK on-board keygen (based on code by Chaskiel)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1678 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b2074743b23d6e47c2cf6cc7200515404b8f73e9
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Dec 16 14:31:12 2003 +0000
-
-    - reduced sc_lock/unlock debug messages even more
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1677 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0996f3977943ba0c30ada22966c43921348328ca
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Dec 16 11:07:32 2003 +0000
-
-    - added ATR for Italian eID card
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1676 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8ed95baff1f4c3b5aafd1a948a3a0ae6bd31e14b
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Dec 16 11:04:01 2003 +0000
-
-    - Updated previous patch
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1675 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6b669736921c8db542c9e53abf5322e1a3c0a6a9
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Dec 16 08:01:36 2003 +0000
-
-    Prevent running off the end of the buffer if the asn.1 is invalid (Chaskiel G.)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1674 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 83a5cb142679208d72dd4ed8cb853a1613070be0
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Dec 15 11:28:20 2003 +0000
-
-    - Ach, forget the previous commit. Just use DBG(printf()); for
-      debugging purposes
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1673 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d9f8c7d879bbd845c45d7ad881416ce1ad6203b6
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Dec 15 10:51:51 2003 +0000
-
-    - error/debug -> sc_error/sc_debug
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1672 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 13030f54b13d5948ecf2219b08eb67fb9bde9b92
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Dec 12 09:32:34 2003 +0000
-
-    - Minor bundle handling fixes
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1671 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5d0095eeb288fc314b1d6e25c1b3edab4777a93f
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Dec 10 15:13:20 2003 +0000
-
-    - Another typo fix
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1670 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d6713aff9ad75a93aab14adcfc0b11f048af9cc3
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Dec 10 14:52:58 2003 +0000
-
-    - Minor naming convention harmonisation for pc/sc and ct-api
-      related things
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1669 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2771b0a52c11951359dbf278e33da110761df8af
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Dec 9 19:37:24 2003 +0000
-
-    - Probe for -lpthread before -pthread, as we did in the
-      previous version.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1668 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4203227a77658b5376d1fbdcfb65d0a29cdae078
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Dec 9 19:35:17 2003 +0000
-
-    - Fix for the previous commit
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1667 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ab9d7bb7ffa109a276f7a559339509ed5c573c20
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Dec 9 15:41:16 2003 +0000
-
-    - removed some dead debugging code
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1666 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit cec660fda1fb43f9213f054357251457ccc8cfbf
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Dec 9 13:57:20 2003 +0000
-
-    - More cyberflex fixes from Martin Buechler
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1665 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0d41e0531090be8cbd040ed6245db18dee9f261b
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Dec 9 12:01:51 2003 +0000
-
-    - turned key-domain printf into sc_debug call
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1664 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit cfdd62bd498564d556209846ea051ba6047f856e
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Dec 8 12:02:28 2003 +0000
-
-    - When generating a key in pkcs15init, allow the caller to specify a
-      public key label (Remo Inverardi)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1663 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b15bd6c4532ed5f21a2cac4c39b29787f7f7360a
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Dec 8 11:43:21 2003 +0000
-
-    - Added support for Cyberflex Access 16K, based on a patch by
-      Martin Buechler
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1662 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 85fa4ed0dafcba13ad7092c5d64fff6932451085
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Dec 8 10:54:55 2003 +0000
-
-    - Matched Cyberflex patch from Martin Buechler. Created a new
-      driver named cyberflex which shares a lot of code with the original
-      flex driver. This is a lot cleaner than having to create if/else
-      monsters.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1661 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit babc626e944cffc54a1788a23920ac8cba63cf56
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Dec 8 10:52:15 2003 +0000
-
-    - use full OPENSC_INFO_FILEPATH when reading info file
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1660 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a239629d9caa614e2d0478c688ffb418d60eb2fc
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Dec 4 16:43:41 2003 +0000
-
-    Added a check for NSS-like keypair generation
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1659 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4d68e1a28e162c94bcb7e421090528d5c388f1f9
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Dec 4 16:42:03 2003 +0000
-
-    Fix: allow a C_GetAttributeValue(privkey, CKA_MODULUS) after a C_GenerateKeyPair() -- M. Buechler
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1658 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 720b2810eeb09b65c8c742c50e214deea751c047
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Dec 4 15:07:26 2003 +0000
-
-    Little fix: forgotten to log an input param
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1657 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4f30699b0d6d6dad07dedfd958fe896f4d4947ac
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Dec 3 14:09:15 2003 +0000
-
-    - Avoid breaking source compatibility, add char *errmsg to scconf_context
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1656 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ff9a45569adbcf2cfe964984d7f49a61c8dac526
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Dec 3 12:07:01 2003 +0000
-
-    - scconf_parse and scconf_parse_string now return an error message if
-      something went wrong
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1655 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8684aff59c6e2b0643fa2061162049e359a568e1
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Dec 3 12:02:20 2003 +0000
-
-    - Fixed a return value for new scconf_lex_parse
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1654 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit dcce086a0ef331c7a6d6b9d61d0e9f1770357941
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Dec 3 11:11:14 2003 +0000
-
-    - Fix the "get_info failed" error; based on a patch by Ludovic Rousseau.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1653 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b10c4ed91ae862c37eb18be946bdea60756e1485
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Dec 3 10:56:23 2003 +0000
-
-    - Add AM_MAINTAINER_MODE
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1652 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1258ba5fd93effd15126ec9990701eb0a01f7a9d
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Dec 3 09:09:57 2003 +0000
-
-    - Updated comments to reflect new apdu_masquerade parameter
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1651 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4b82b04960d5a9ac4f83b80c61425aed1300d99a
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Dec 2 19:03:25 2003 +0000
-
-    - Add check for functions vsyslog, setlocale
-    - Add check for header locale.h
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1650 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e18283d57833a774a9a00f3ab170ca466a3b82e4
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Dec 2 17:51:37 2003 +0000
-
-    - Fixed a typo
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1649 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 61d242d1051a7968966f6b864dd5defd9f753cde
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Dec 2 15:58:13 2003 +0000
-
-    - Fixed a few glaring errors. Marginally better, but not really great yet.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1648 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c46b58fa34fc571c1d16d40c116f3d6fb1838431
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Dec 2 15:51:52 2003 +0000
-
-    Moved the cardinfo file to the pkcs15 DF, changed it's FID to 4946, and protected it against unauthorized changes
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1647 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8ee8d0756c0e15fdc2d83f160609bf7d5b53c953
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Nov 30 17:19:33 2003 +0000
-
-    - Fixed an embarrassing typo from the ChangeLog URL
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1646 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5993b3d1c498fa9f01b85d75b57cd1f1b020cf38
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Nov 26 16:19:03 2003 +0000
-
-    - fixed test for onepin option
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1645 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8ff09b7f773756f1e6f35e70a6b497de4f48fd16
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Nov 26 15:49:09 2003 +0000
-
-    - another fix to verify pin
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1644 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a2c9afec7fa57ca7cda53269d2d333f504ae7ad9
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Nov 26 15:37:29 2003 +0000
-
-    - fixed problem with pubkey encoding/decoding
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1643 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3c89fc8edb44b2008e5b2ce0bff147fc683730b0
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Nov 26 15:35:17 2003 +0000
-
-    - improved support for CHOICE
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1642 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5b1d6dd926c2ad6eda88e227a90e2dbb8c063801
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Nov 26 13:12:26 2003 +0000
-
-    - Support raw RSA on decryption (Martin Buechler)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1641 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit addb6fd992aa051c7cf1b3382e56263dae31e231
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Nov 26 11:56:07 2003 +0000
-
-    - Add missing .SH NAME for some man pages (Ludovic Rousseau)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1640 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d12b21f63337772973391ce4c8312bee1284615b
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Nov 25 11:17:02 2003 +0000
-
-    - Remove all references to usbtoken, use OpenCT instead
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1639 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b6796d040401eb04c0243cdffebebab14cc05587
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Nov 25 10:37:23 2003 +0000
-
-    - fixed suppress_error handling in sc_pkcs15init_write_info
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1638 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 22312dbe17c91cc13a9af3d54e811140575c9395
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Nov 24 10:21:36 2003 +0000
-
-    - set ACLs on the profile info file
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1637 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit af462ab212590c3315c78e37535d7a266f17f561
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Nov 23 16:11:32 2003 +0000
-
-    Removed the exceptional (and incorrect) handling of the signature inputs of 16 and 20 bytes with pkcs11's CKM_RSA_PKCS11 signaturemechanism; and made sc_pkcs15_compute_signature() a bit more powerfull: if a digestinfo+hash input is given but the card only accepts hashes, the digestinfo is removed
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1636 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a843fd1d1163f44f0b3b7b81e257336295bad858
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Nov 23 15:43:38 2003 +0000
-
-    Little fix in test_signature()
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1635 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 30fba619b976be5eb59d6afe9ab273093a540c53
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Nov 23 15:33:56 2003 +0000
-
-    Added an error code
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1634 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1435c8fccec59bc8f418045035231c2f430c2804
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Nov 22 18:50:04 2003 +0000
-
-    - Back out Olaf's change, as it seems to break existing
-      behaviour while parsing pkcs15 profile files. Although
-      officially any list value with an equal sign or braces
-      should be enclosured with quotation marks, but anyway.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1633 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit eeca8db27cc5de5bec178dad49a0a7617a8d7a26
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Nov 21 12:33:38 2003 +0000
-
-    - Replace the default lex based parser with
-      Jamie's version. Please notify if you run
-      into any problems with the new parser.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1632 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0cddfbaf46db3d425343877940f7c0a0dab3bb50
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Nov 20 20:46:15 2003 +0000
-
-    - Warning fix
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1631 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 183fef361dd6c2bd1e69ea358f1f3078587a4b44
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Nov 20 20:37:55 2003 +0000
-
-    - Replace the patched file with a new upstream version
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1630 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 17b5985bb85e9234a9668fbfd548e9b3d0f98ebd
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Nov 20 17:48:02 2003 +0000
-
-    - Fixed CRLF parsing
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1629 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f9c572c92a2c257ddefd9fb2e9706b0425270b55
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Nov 20 16:10:08 2003 +0000
-
-    - allow stuff such as
-    	blabla=
-    	foofaah{}
-      to work
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1628 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit cf733acdad9181ad9e6037b964810c83a2145985
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Nov 20 16:01:56 2003 +0000
-
-    - opensc-explorer.c ceased to accept verify data in hex notation, fix by
-      Martin Buechler
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1627 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a632956e0d9399997fb98c33471c9211e3f4a596
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Nov 20 15:42:10 2003 +0000
-
-    - Deal with cards that require authentication before you can extract
-      the public key
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1626 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 43da7aac4e9e1cb5321e5b8785b70718ea37c45f
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Nov 20 15:41:28 2003 +0000
-
-    - Improved OpenPGP handling; we're now able to sign things
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1625 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 59c38ee7cdc091d3ec7a48517678fa3c9afeb2bd
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Nov 20 15:40:22 2003 +0000
-
-    - Append newline to error/debug messages if not supplied by caller
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1624 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 624e345a584a544ddc9cd2f7c917d2684d63a934
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Nov 20 15:40:01 2003 +0000
-
-    - in sc_format_path, initialize path->count = -1
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1623 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a91824eafa97f9a7ec9db1f79e684dfb76fe77f6
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Nov 20 15:39:38 2003 +0000
-
-    - increase SC_MAX_PIN_SIZE to 256 (OpenPGP cards have 254 max)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1622 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 28a5eb0204187dc73bcf34c482e5e7f0a45a547e
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Nov 20 15:39:18 2003 +0000
-
-    - if ctx->suppress_errors is non-zero, log suppressed error messages
-      at least to the debug log
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1621 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1648a1cdeaa88dbe5899870b86b3fe7b9ac91bf6
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Nov 20 15:38:43 2003 +0000
-
-    - SW 6A88 (referenced data not found) is now translated to
-      SC_ERROR_DATA_OBJECT_NOT_FOUND
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1620 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3fbdc4fbe9cf0279015165912c4976f3fd50ce98
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Nov 20 14:16:20 2003 +0000
-
-    - Link the spy against libopensc (Patch by Mathias Brossard)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1619 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ce076814049fa4ad6209c49eec6f3160aaf0d95a
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Nov 20 14:15:32 2003 +0000
-
-    - Add new hand written replacement for the lex parser
-      by Jamie Honan, not much tested yet.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1618 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c13a417d8b08f831abf30e1fac0a2ce2344f93ae
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Nov 20 14:13:08 2003 +0000
-
-    - Add scconf_list_toarray() by Jamie Honan
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1617 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0b7b3dff9cde5a372ebbcaace873fc748d520988
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Nov 20 09:17:57 2003 +0000
-
-    Support comparison of large object attributes
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1616 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 961e116006ca60ee0ff515df24c17078fafb1650
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Nov 19 20:37:02 2003 +0000
-
-    - Support direct encoding of certificates
-    - Allow more than one profile option (e.g. pkcs15+small+direct-cert)
-    - While creating the basic pcks15 structure, store profile options
-      in a special file on the card (3F002F01). All susequent operations
-      (adding PINs etc) will use this information instead of what's
-      given on the command line.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1615 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1359d9e65daccb5a621b2e895ba5d7192321cf67
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Nov 19 20:33:12 2003 +0000
-
-    - sc_pkcs15_print_id now prints to a buffer instead of stdout
-    - Now pretty printing Common Object Flags
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1614 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9ee5c76a4d8d9f7d901333ba2ad20f7b344878ab
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Nov 19 20:31:52 2003 +0000
-
-    - Support direct encoding of certs in the CDF
-    - Added prototypes for sc_der_{copy,clear}
-    - Changed sc_pkcs15_print_id to return const char *
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1613 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1780e10bf22dbd527ada41036fba207f2cb08541
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Nov 19 20:30:44 2003 +0000
-
-    - Somewhat improved debugging output
-    - sc_pkcs15_print_id changed to sprintf to a buffer rather than printing
-      to stdout.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1612 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 519c1e8e551c18e69d897f5a38121df58460a1d0
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Nov 19 20:29:54 2003 +0000
-
-    - The changed code in asn1.c requires that the PrKDF subClassAttributes
-      for private{RSA,DSA}Key be marked OPTIONAL (our handling of CHOICE is
-      still somewhat limited)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1611 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ed5d12800d77d69e5ef398b2116acf0a8abde7f8
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Nov 19 20:28:02 2003 +0000
-
-    - Read and write CDF entries with directly encoded certificates
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1610 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 12386d65c9931ab085a2df5018380b074106a0c4
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Nov 19 20:22:52 2003 +0000
-
-    - When encoding a path, either encode _neither_ index/count, or both.
-    - Added new functions sc_der_copy, sc_der_clear to handle DER blobs
-    - Somewhat improved debug output
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1609 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0efe4659ed39278bc5a717419ae23355a4f6acda
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Nov 17 18:54:10 2003 +0000
-
-    - snapshot build fix
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1608 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 692aa315599e6ce9dfb5e787b3b2b97e4064d291
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Nov 17 14:52:03 2003 +0000
-
-    fixed "version>" to "version<" in xml file
-    (html file was already fixed by tidy, no change necessary).
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1607 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d6bb9edd59a235651e423ef342c719334e5e7bb8
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Nov 17 14:49:09 2003 +0000
-
-    Applied changes by Stef,
-    updated html file.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1606 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c6f902911fa17b708a89247f11f3e7eb18c0bd13
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Nov 16 16:24:16 2003 +0000
-
-    - Test commit
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1605 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3b746f0b5e85dba46cb1f471afa648c140d1e7c5
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Nov 14 10:14:54 2003 +0000
-
-    Add room for SW1-SW2 in case of maximum reply size (256 bytes)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1604 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 43c4fe5ff5fe26f940689b9c6681be2d726fd521
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Nov 12 19:06:33 2003 +0000
-
-    Fix: correctly set the labels of the public and private key during keypairgeneration (Remo Inverardi)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1603 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit dfba889fba740ccd9d24907a717489a4b896944c
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Nov 12 18:28:03 2003 +0000
-
-    Fix: allow keypair generation of keys other then the default length (Victor Tarasov)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1602 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2e898942c05f865836c749afefa3c4ffc944c58e
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Nov 11 21:30:34 2003 +0000
-
-    - ifdef RTLD_NOW
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1601 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 45d81af97927ab5414cb0b7e1052e7cc42a6adff
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Nov 7 11:15:27 2003 +0000
-
-    - do not test unblocking pins
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1600 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8f72813624fbbfc8fc478a547f2a971f5d74dbbf
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Nov 6 10:43:41 2003 +0000
-
-    - security: prevent format string attacks
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1599 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c85357baf9fb5f385deab620f9f8db5dfa4a1637
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Nov 3 10:20:02 2003 +0000
-
-    - remain backward compatible - apdu_masq patch shouldn't break existing
-      config files that use apdu_fix
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1598 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8e1443071c45911711ea25e1226c927c42862b31
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Nov 3 10:16:25 2003 +0000
-
-    - merged apdu_masq patch from Chaskiel Grundman
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1597 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3d0e266886c232dbb0f5ac2cb00ae047a7eda0e5
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Nov 3 06:54:30 2003 +0000
-
-    - prevent problem with get/get_do ambiguity
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1596 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f5f5f7f57c0f098ac5cbd8c4654dd02073282412
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Nov 1 19:13:21 2003 +0000
-
-    Fix: link the simbolic PIN to the real name
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1595 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 64aaf1847859549501c2082a4088403985e45b5c
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Oct 31 17:18:34 2003 +0000
-
-    - Undid some of the previous changes. We now have a pseudo file system on the openpgp card
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1594 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f9eac7a8d880193955d5213cbd40788d234d8d45
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Oct 31 16:06:40 2003 +0000
-
-    - fixed put_key(SC_AC_SYMBOLIC)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1593 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7ff9fe296ad3ce9964293a1075e32bf0b35e5f55
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Oct 31 16:02:54 2003 +0000
-
-    - dont print prkey path if empty
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1592 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 839dab0fe4e52717ff59e41a8991a000dcfb09e3
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Oct 31 16:02:42 2003 +0000
-
-    - use sc_test_print_card instead of sc_pkcs15_print_card
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1591 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b3b3b02cf0caa72e3fd86848e7bccf539204937e
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Oct 31 16:01:35 2003 +0000
-
-    - Updated, now registers key objects as well (untested)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1590 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 36f170c2e765400bb7eda90189ef70b85e2f1c7b
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Oct 31 16:01:00 2003 +0000
-
-    - OpenPGP card now supports a fake file hierarchy (basically all objects
-      and constructed objects reprented as DFs and EFs)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1589 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit bb97c0d094356b101a7db0399cfb3df173238edd
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Oct 31 13:59:27 2003 +0000
-
-    - Add new files
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1588 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 13a11083e103335d79423fa2004a04a03a153342
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Oct 31 12:31:54 2003 +0000
-
-    - initialize tries_left field to -1 when parsing AODF
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1587 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit cb5e179042ff42aa08c42a15971f198ae28020b6
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Oct 31 12:29:12 2003 +0000
-
-    - Moved p15 print_card function here
-    - print preferred_language, if given
-    - don't print pin path if there is none
-    - print tries_left if present
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1586 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit fd1272c7677a066346c3df73fd61df55dfdc608d
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Oct 31 12:28:15 2003 +0000
-
-    - moved p15 print_card to tests/print.c
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1585 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 16ec507738b8ede2bc1d1e4f011b93d796f2a52b
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Oct 31 12:27:14 2003 +0000
-
-    - Rewrote sc_pkcs15_bind_synthetic a little
-    - Started work on pkcs15 emulation for OpenPGP card
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1584 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d91ecdc24500368ea24d356bfe303fa226d3ee28
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Oct 31 12:26:24 2003 +0000
-
-    - Moved sc_pkcs15_bind_synthetic to a separate file
-    - Moved sc_pkcs15_print_card to ../tests/print.c
-    - added dll_handle and preferred_language fields to p15card
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1583 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 78949a9bcb4525a3941df3b6a313b3bdef60869b
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Oct 31 07:48:35 2003 +0000
-
-    Make the PIN for the 'onepin' option look like a user PIN instead of an SO PIN
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1582 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ee68df94f097f1a0e5a40c37e9b6708e77031900
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Oct 30 17:04:50 2003 +0000
-
-    - added some support for OpenPGP cards
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1581 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0f32616c203ea38bccba235951d24642715dd2f1
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Oct 30 17:04:22 2003 +0000
-
-    - added initial support for openpgp card driver
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1580 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 99e999d64c2655c3bb8a7717b8210bb9c33ba70b
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Oct 30 17:04:02 2003 +0000
-
-    - added sc_get_data/sc_put_data
-    - added openpgp card driver
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1579 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c072c5e0fe72c57817bb82448c8ddb9f651a63e6
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Oct 30 17:03:41 2003 +0000
-
-    - added sc_get_data/sc_put_data
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1578 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ef4f132e6156c392aa5477fc0cb60e2020db52e2
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Oct 30 17:03:09 2003 +0000
-
-    - added SC_ERROR_DATA_OBJECT_NOT_FOUND
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1577 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 323240fa4423a1b1b3625883d5a3b3d2b1c06b10
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Oct 30 15:43:19 2003 +0000
-
-    - small fix in mcrd_finish
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1576 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7ea930a03060ed259db52a7d8ac58a217ef5c8ce
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Oct 30 12:03:31 2003 +0000
-
-    - return error if cflex_create_dummy_chvs fails
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1575 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 728a6a4ade7282af2c6f8ea8e715924e7941a449
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Oct 30 11:47:37 2003 +0000
-
-    - Another broken commit message :-/
-      What the previous commit was all about:
-      If we store a pkcs12 files on the card, it stores a key @45,
-      and a CA certs @46. When storing another p12 file, we must make
-      sure we don't grab the next free key ID (46), because the
-      corresponding CERT ID is already taken. We must skip all IDs for
-      which a key or cert exists.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1574 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d3d7664c118074e888fd0c8e0e836896964762e1
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Oct 30 11:43:21 2003 +0000
-
-    - Changed the internal object search machinery quite a bit so it
-      can search for more than one type of object at the same time.
-    - When enumerating a DF as part of the search, no longer ignore all
-      errors.
-    - When parsing a DF, SC_ERROR_ASN1_END_OF_CONTENTS really means
-      we've just reached the end of data in the file, so return 0
-      instead
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1573 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6e9412cd98abb98812386673c3a5ee84f8125844
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Oct 30 11:38:05 2003 +0000
-
-    - When encountering the end of a SEQUENCE, while there should be
-      more items, we used to return SC_ERROR_ASN1_END_OF_CONTENTS.
-      That error code is reserved for the real end of content markers
-      though. Changed the return code to SC_ERROR_ASN1_OBJECT_NOT_FOUND
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1572 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a9d9aa287717018482b2139e477919e59fb1ab1d
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Oct 30 11:36:04 2003 +0000
-
-    - When storing a p12 bag, check if the CA cert is already present and skip
-      it if so.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1571 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 60892cd0a30ff3ffa1daf52806046f6d8b4ae31e
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Oct 30 11:13:11 2003 +0000
-
-    - added recommendation about 2 cert/key pairs
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1570 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c29e7d8510215382966f3840c2e06f3c7a1593cd
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Oct 28 12:50:43 2003 +0000
-
-    - don't call sc_module_get_address when we dont have a dll handle
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1569 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ead350c2695d920604dc8e62c4db98b5ffff8bad
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Oct 24 13:20:18 2003 +0000
-
-    - now uses new sc_ui_get_pin function
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1568 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5a27b4e81e44be85891c9a361361b4b21686d2ea
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Oct 24 13:18:17 2003 +0000
-
-    - Changed ui API to offer more knobs and dials
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1567 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c693c4799c69814f7a3c7756b0c9c626436b16d5
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Oct 23 09:12:48 2003 +0000
-
-    - Merging between Makefile.am<>Makefile.mak
-    - Add ui.h to main distribution tarball, snapshots have
-      been broken for a few days
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1566 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e62eea53514697c15ada440e5d4e807e81f7cd6e
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Oct 22 18:16:21 2003 +0000
-
-    - Minor cleanups and a warning fix
-    - sc_release_context: free ctx->preferred_language if set
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1565 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 28fcfde1fd52668542ab3729662f67f0c67c5a57
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Oct 22 08:51:41 2003 +0000
-
-    - Replace WIN32 with HAVE_UNISTD_H instead
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1564 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 23d1ca554e89840b89dbf0d0ebf074e03fc29ac5
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Oct 22 08:43:27 2003 +0000
-
-    Let the new UI code compile under Windows
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1563 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit fc4cd7c1af41fc0dc233371405a31f42f49f31ed
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Oct 22 06:56:51 2003 +0000
-
-    'Export' keychache.h
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1562 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c57ac69e56bb8e09455954e1b9a43c9f60ca70fe
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Oct 22 06:56:10 2003 +0000
-
-    Fix: spurious error message (Chaskiel & Kevin)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1561 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2b6516bd997a10e826882f5cb86ed5ab29a646e2
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Oct 22 06:51:55 2003 +0000
-
-    - allow to call scripts with --soft and -d
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1560 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 931a1dd28a234cbd059325b8406497d002d26294
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Oct 22 06:49:59 2003 +0000
-
-    - added error/debug message support to ui.c
-    - sc_error/sc_debug now use the new ui code
-    - added language support
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1559 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8a5f130af8c19d6e7b823d9aca9d4570b5e6eef9
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Oct 22 05:43:57 2003 +0000
-
-    - do an sc_select_file inside do_get_pin_and_verify in case we called
-      a pkcs15 function that enumerated the AODF
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1558 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 879bd502903e83ef7991053ca2da65511bb795ec
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Oct 21 13:30:12 2003 +0000
-
-    - call sc_pkcs15init_set_p15card
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1557 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4615d5eb878840fa6e3ed12a54c219af761ac338
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Oct 21 12:50:04 2003 +0000
-
-    - Add necessary automake conditionals to install-exec-local
-      rule, as it seems to be executed even though lib_LTLIBRARIES
-      is empty in some cases.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1556 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7d34d6b6ee8bf1da739d4dbd50f64885785ad178
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Oct 21 12:48:38 2003 +0000
-
-    - Sort filenames
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1555 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f046d5024e22e67c6e02db821c9e10f6a56eedad
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Oct 21 12:27:47 2003 +0000
-
-    - Add gcc option -fno-strict-aliasing
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1554 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5791395e7417f21af7e00561c8c79fa177798059
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Oct 21 11:12:32 2003 +0000
-
-    - Added new user interface code (not used yet)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1553 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f730572f3482a7673fdbd0f9088a9044817014e9
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Oct 21 11:12:07 2003 +0000
-
-    - install ui.h
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1552 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a644d83d68b45ee88af36913f6ead228e31274dc
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Oct 21 11:11:50 2003 +0000
-
-    - added message for SC_ERROR_CANNOT_LOAD_MODULE
-    - changed the wording of some SC_ERROR_KEYPAD_* messages
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1551 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 72788e32ec20f70e286fa2a691ab531201503698
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Oct 21 11:11:19 2003 +0000
-
-    - added SC_ERROR_CANNOT_LOAD_MODULE
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1550 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ae2cfe8a46c2a37d9c1be4063779699b37a32797
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Oct 21 11:05:35 2003 +0000
-
-    - sc_pkcs15_find_pin_by_reference now searches by reference _and_path_
-    - profile->p15_card renamed to p15_spec, as it reflects what _should_
-      be on the card
-    - added profile->p15_data, which is what _is_ on the card
-    - make do_get_pin_and_verify use the sc_pkcs15_find_pin_by_reference
-      properly.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1549 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9e70efba8a07748ec1f11677e0ab6df5ea02e924
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Oct 21 11:02:48 2003 +0000
-
-    - sc_pkcs15_find_pin_by_reference now searches by reference and path
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1548 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 70597d4b144b7727d9249fc5106c8857ed4ba35d
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Oct 21 08:59:11 2003 +0000
-
-    - fixed change/unblock pin with implicit test
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1547 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8368731ae4b59bcd8f0c9b2b34e64cb137121388
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Oct 21 08:32:17 2003 +0000
-
-    - disallow UPDATE on the Application DF
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1546 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e7f0dbb4a8fc6ebe7717d6ff2ea90a82c0b67f7d
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Oct 21 08:31:45 2003 +0000
-
-    - support UPDATE ACLs when creating a DF
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1545 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c20fcf5e7b597aae8ebb0995e64dabef8fa8ba8b
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Oct 19 18:05:03 2003 +0000
-
-    - bump max number of apps per card to 8
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1544 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit aae679b28adf316f69f4af8075de147a5653328a
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Oct 19 18:02:37 2003 +0000
-
-    - tcos_card_ctl shoudlnt complain about unknown cardctls
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1543 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c9de474d80eafaa2ed18f9859c28194bb752022d
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Oct 18 17:07:34 2003 +0000
-
-    - Do not overflow signature test for 2K bit keys (fix by Chaskiel Grundman)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1542 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8740ced3ee99b3682b09fb5d32c83d156020879b
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Oct 18 17:02:44 2003 +0000
-
-    - dont pin protect pubkey
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1541 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9d78ea1a6ec007081118d4fbee1fa4014c8ef3b1
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Oct 18 12:51:12 2003 +0000
-
-    - data files had ERASE=NEVER; which is obviously bad
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1540 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1eacefc83c971ff1598973180e6fbb30c8e1b4be
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Oct 18 12:41:32 2003 +0000
-
-    - previous patch was bogus/incomplete
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1539 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit af0bd61682b36c34c787b87ae7e3de7b615c496a
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Oct 18 12:40:22 2003 +0000
-
-    pkcs11/framework-pkcs15.c
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1538 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6ff1ecbc7393f741c4454a30fa8986939c0a1ab2
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Oct 18 12:35:42 2003 +0000
-
-    - honor --pin argument for pin pad readers, too
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1537 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 927ae344cceb79410124da1e87a6da2d7823279a
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Oct 18 08:39:40 2003 +0000
-
-    - fix cflex key generation
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1536 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 937e6c711deb99b57cd740cc45006859720c1b7e
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Oct 18 08:08:07 2003 +0000
-
-    - fix for cryptoflex key download
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1535 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2a12ed31081d7ef43ce7a364e945e89c0cb9ca19
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Oct 17 11:21:48 2003 +0000
-
-    - Prepare for userConsent support: changed ops->create_pin to take
-      a sc_pkcs15_object_t instead of sc_pkcs15_pin_info_t argument.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1534 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e1df398dcadfad4421adf05c2132b6ccf436b521
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Oct 16 20:41:34 2003 +0000
-
-    - Merge with recent OpenCT changes
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1533 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit afcf39c6dd2f599e7559bbdda2c5e9f36bcecf02
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Oct 16 14:32:42 2003 +0000
-
-    - some more cleanup
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1532 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 81e6d67204f225e89542638c973a62623477b6ba
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Oct 16 14:31:11 2003 +0000
-
-    - On-board generation of non-repudiation keys did not work
-    - Minor cleanup
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1531 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 574d6f38ee71c1d286a13ae637a624690051436e
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Oct 16 11:41:24 2003 +0000
-
-    - added debian packaging files from Joe Phillips
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1530 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c41c9b1c8e518bef1216d61a61bdfc47600aee03
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Oct 15 13:21:04 2003 +0000
-
-    - pin protection for keys was broken
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1529 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 09cd60504d971b2f641057cfe8ea4b8c3f0dea60
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Oct 15 09:36:53 2003 +0000
-
-    - one suppress_errors-- too many
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1528 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a80928e52b8f024bbe8a506de3d36129ad9dcb5e
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Oct 15 09:36:33 2003 +0000
-
-    - removed debugging print
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1527 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 14b49ccb811d25e54a5e84d6dd41ecbb445140e1
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Oct 14 22:11:11 2003 +0000
-
-    - Forgot to commit
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1526 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 603ccec619497765310e059c93de722d033f6bec
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Oct 14 21:56:56 2003 +0000
-
-    - Fixed nightly snapshot generation
-    - Link keycache.h to src/include/opensc
-    - Move mutex function declarations to opensc.h
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1525 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit cfcc191aa5522f33f5300696cbc261517c78af71
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Oct 14 11:23:18 2003 +0000
-
-    Change setlinebuf() to setbuf(), which is also availabel for MSVS
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1524 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit eaf1f7afdaa150aeb95b27fa24a558246872caff
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Oct 14 10:42:03 2003 +0000
-
-    - Remove old callback error/debug functions
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1523 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e968abd1a1bec4717e6b5e07b4868c841ab7b3ab
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Oct 14 10:10:24 2003 +0000
-
-    - dont barf on empty directories
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1522 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7d7e07998df48e0f6e274f61eff0f332462c9243
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Oct 14 09:58:35 2003 +0000
-
-    - removed obsolete profiles
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1521 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit fffe5b79efdbaf3a898a859b417d2a1460dd13b8
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Oct 14 09:57:50 2003 +0000
-
-    - Error logging changes: replace ctx->log_errors with ctx->suppress_errors
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1520 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f552395705157015468680f0abac303405558a3b
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Oct 14 09:57:29 2003 +0000
-
-    - Error logging changes: replace ctx->log_errors with ctx->suppress_errors
-    - remove error/debug callbacks; always use sc_error/sc_debug
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1519 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 734bceb682f11a36fb65e34e437623d0d2fd3ff3
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Oct 14 09:56:50 2003 +0000
-
-    - Error logging changes: replace ctx->log_errors with ctx->suppress_errors,
-      so that we can nest error suppression using suppress_errors++/suppress_errors--
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1518 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5da3b6f168d23c8ecbe6350b9e5ff240d39ce396
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Oct 14 09:14:13 2003 +0000
-
-    - removed unused variable
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1517 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c323d0a08260cdc764718bed5da552801754835d
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Oct 14 09:02:51 2003 +0000
-
-    - the previous patch was bad; fixed it
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1516 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 12a4ef75ef8db5c697c6a9a521d444bcac178e96
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Oct 14 08:33:20 2003 +0000
-
-    - replace sc_pkcs15init_set_pin_data -> sc_keycache_put_key
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1515 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit aad883149e052232b8919c30a0059c7ae2c1e98b
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Oct 14 08:17:59 2003 +0000
-
-    - removed some dead code inside #if 0/#endif
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1514 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9f52b9e035a3d723ae08466d76b890c9eb1e76c8
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Oct 14 08:10:39 2003 +0000
-
-    - Don't limit the number of times the --send-apdu option may be given
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1513 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 936ad78b02911ce9886c5769dec80c042f751372
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Oct 13 20:41:00 2003 +0000
-
-    - Some build/portability fixes for the pkcs15init rewrite
-    - Add sc_pkcs15_get_<drv>_ops(), yet untested
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1512 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1bdcd2184c9dfec26d2d577b82213ada85ea0ae3
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Oct 13 20:28:18 2003 +0000
-
-    - Revert previous patch, an alternative patch to
-      work around non-C99 and/or gcc issues coming up
-      soon.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1511 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b66e24bf55884e1ebbae4b894eb2a976819da778
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Oct 13 20:16:40 2003 +0000
-
-    Small changes to make it work on non-C99 compilers
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1510 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a42044829cc8960d0206ba4ecdbfd4193af694b4
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Oct 13 16:13:38 2003 +0000
-
-    - updated/added tests
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1509 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 23c1e81512eb6b2013fe3dd507547681bf6da3f7
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Oct 13 16:13:12 2003 +0000
-
-    - pkcs15 rewrite
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1508 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3d283fd925754b0eda1ac4303f745791956f91ee
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Oct 13 14:52:03 2003 +0000
-
-    - fixed a bug in the previous patch
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1507 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 45e820cdacf60f66b6a4cfd2fb16248cbdc424da
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Oct 13 14:35:27 2003 +0000
-
-    - added sc_pkcs15_find_prkey_by_reference
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1506 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ecc469d570e88833c44aae2bc04dd25e1a08cdb1
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Oct 13 14:34:52 2003 +0000
-
-    - added some more errors
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1505 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit efb19cafe623231ee72a0d7da71e90f739697eba
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Oct 13 14:34:38 2003 +0000
-
-    - slightly enhanced debugging output
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1504 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit bf7e801facb33a366578f36c99f1487a73b9989d
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Oct 13 14:34:18 2003 +0000
-
-    - new path functions: sc_append_file_id, sc_compare_path
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1503 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit bdfffb2ffe660b639ef5f9755d1ca87feb6e6242
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Oct 12 19:57:32 2003 +0000
-
-    - allow all pins/puks to be specified on the command line for testing
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1502 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4b205da3da0e2b0090ea67a9206d410f2f3587e8
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Oct 12 08:34:11 2003 +0000
-
-    - Remove unused variable
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1501 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7761dff1a0e9ee0b4eca3ca04dd57bdc96422fd3
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Oct 11 21:02:31 2003 +0000
-
-    Security fix: the flex_onepin profile doesn't allow the AUT1 key to change the PIN anymore. Also: it's possible now to add the SO pin to the flex_onepin profile
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1500 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c5bd03af1ce7a3706f75eebb0b0d5be5e629ff86
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Oct 11 20:58:39 2003 +0000
-
-    - Add missing error->sc_error conversions and other
-      Assuan specific build fixes
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1499 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 106351eb5c33aa27aa4188c6bd7562922036d3a5
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Oct 11 12:41:28 2003 +0000
-
-    - some commands used the wrong APDU case
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1498 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0cf455a56d740dc114f7687f42c9281193468d2c
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Oct 10 14:48:40 2003 +0000
-
-    Fix: don't free() a static buffer (Ivo)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1497 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f003360c1797460451fae253539b25d077f3d78b
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Oct 10 14:24:26 2003 +0000
-
-    Fix: added all required OpenSC libs to the link dependencies (Ivo)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1496 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f0039499fbdb652ca9eb1ea3dc80afbae977300d
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Oct 10 14:11:46 2003 +0000
-
-    Fix: added scdl.lib to the link list, and added all required OpenSSL libs to the link dependencies (Ivo)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1495 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a61c95e204331435f88675295a5bee7e0df0a1db
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Oct 8 06:46:48 2003 +0000
-
-    Minor cleanup
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1494 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 171c4c6daab47ddc44e29a8134a254ef439106ca
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Oct 7 19:15:09 2003 +0000
-
-    Fix: wrong option name
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1493 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 09290bd6ccef307ee60bcfd7c620f8ce85e429f5
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Oct 7 16:05:06 2003 +0000
-
-    Remove hardcoded VERSION define, you'll need
-    need to update versions from winconfig.h and
-    also version.rc.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1492 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e87ba3c387ead798c5c44456b2c70725edea5d5a
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Oct 6 14:22:03 2003 +0000
-
-    Fix: add room for a 'last-flag' object (Ivo Pieck)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1490 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2457faa1e7a9fb60749f12315de31e6501330ca5
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Oct 2 12:21:12 2003 +0000
-
-    Fix: when doing a sc_pkcs15init_generate_key(), the auth_id for the public key wasn't put into the PuKDF
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1489 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4abcfbd82e53f159b876ee46db8eb79f5abe304c
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Oct 2 09:21:17 2003 +0000
-
-    Allow the pkcs15 data to be fetched by label instead of ID, as pkcs15 data objects don't have an ID (Danny De Cock)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1488 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 509119ac3b16fc40eba1d417e328d9887df88956
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Oct 2 09:18:12 2003 +0000
-
-    Correctly add the label to a pkcs15 data object
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1487 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit fac4bd60089690cea0e1beeb8b1a0fc13aeaa5f6
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Oct 2 08:29:32 2003 +0000
-
-    Tweak out some compiler warnings
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1486 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ebca5c681c800561b48a950b34084ca6a4a9c402
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Oct 1 06:51:49 2003 +0000
-
-    Added C_DecryptInit() and C_Decrypt() for RSA keys
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1485 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7730dc11992b541423858420afc950961bb57e25
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Sep 30 20:43:45 2003 +0000
-
-    Fix: read data as a binary file, not as ASCII
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1484 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 70b042746e6af7568622a92f9c0f760c53a7e15e
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Sep 30 09:40:55 2003 +0000
-
-    Add Makefile.mak and version.rc to the distribution tarball.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1481 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2fa013edf0b5d551b8bfbca2d2040af531a0e248
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Sep 30 09:19:06 2003 +0000
-
-    Fix: don't link by default with openssl
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1480 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 29fc182e0ee791ed23b8bb758d7d4b04d6b22a22
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Sep 30 07:40:46 2003 +0000
-
-    Add OpenSC 0.8.1 release date.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1478 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7bd2723f6a0c7a65997a9a9a8ccc709463ff5c06
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Sep 29 14:29:43 2003 +0000
-
-    Some fixes that accidentially crept in
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1476 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d9fbbc6ec3a18f824046bb86aac6e735bb2a3885
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Sep 29 13:54:39 2003 +0000
-
-    Fix: the hash-based RSA algo's can only do sign/verify, no wrap, encrypt, ...)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1475 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1055045267ea95b22d7a9fb6cae80faddcf739ce
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Sep 29 13:45:07 2003 +0000
-
-    Fixed a bug in the mechanism listing and made it more general
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1474 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d208a04872c87b0ec067435b89b57b09aee63728
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Sep 29 09:00:11 2003 +0000
-
-    Cleanups to scconf handling
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1473 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 186be729096720e1141bc07632d70c83e92bdf2a
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Sep 29 08:59:18 2003 +0000
-
-    - Fix a typo
-    - Rename init block into spy instead
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1472 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b5984fccd615b7fcf5cda523e7b3fd48d995ad8e
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Sep 28 19:22:30 2003 +0000
-
-    Some changes for the spy: (1) renamed opens-spy to pkcs11-spy, (2) exported all pkcs11 functions, (3) start the log with the name of the module-to-be-loaded, (4) first look in the opensc.conf file for the module and log names
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1471 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 671adbeb559a1b47a355d8cf20313ed0d5ab4774
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Sep 26 08:15:15 2003 +0000
-
-    Rename HAVE_PCSCLITE to HAVE_PCSC, which is more correct.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1470 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0cbe51b9cf951df00cc79fcfd9da0aac7cca8b2d
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Sep 26 08:15:15 2003 +0000
-
-    Rename HAVE_PCSCLITE to HAVE_PCSC, which is more correct.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1468 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit fe9eac7ad2491f3bf18d5b886e47351a9bf0cc14
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Sep 26 08:15:15 2003 +0000
-
-    Rename HAVE_PCSCLITE to HAVE_PCSC, which is more correct.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1467 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 345914e9e230068055f7cc071498c4cb85619b1d
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Sep 26 08:15:15 2003 +0000
-
-    Rename HAVE_PCSCLITE to HAVE_PCSC, which is more correct.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1466 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2aea8144afa16366a6d40b6a470e39757f7e4066
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Sep 25 15:52:22 2003 +0000
-
-    Fix OpenCT probe issues
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1465 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0077a0876df194e40cabad9f22f5aad53ab42c6c
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Sep 25 09:33:16 2003 +0000
-
-    Fix various C compiler warnings and C++ errors / name conflicts
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1463 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 687007679f5673af53091f3d5af44ca436b71651
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Sep 24 19:58:29 2003 +0000
-
-    Oops, remove hardcoded bundle creator / type
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1461 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit dc83f04c909db7b5828dcb0a25804582dad92b9c
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Sep 24 10:17:32 2003 +0000
-
-    Remove old ChangeLog, add URL to the new location.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1458 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4717ef265527ff394aaa1f08b630b083565d9c35
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Sep 24 09:20:02 2003 +0000
-
-    TODO update
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1456 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 38c5f50bcfe494e3b265b4f7c44d1781e44aae2a
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Sep 18 09:18:36 2003 +0000
-
-    Remove old patches for OpenSSH 3.6.1p2, anyone interested
-    is probably already using version 3.7.1p1.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1454 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 88ab75272d6b33d69285a9037cde4c5ce883e1a7
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Sep 17 19:03:48 2003 +0000
-
-    Back out previous change, wrong branch.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1453 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 99cb33d31a0384b4bac39f639d7a38b83d8443d3
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Sep 17 18:59:51 2003 +0000
-
-    Set version as 0.8.1.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1449 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c221e36eb4a75929182d6a2b634dd0f61f472043
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Sep 17 18:59:38 2003 +0000
-
-    Disable pkcs15-ldap from the 0.8.1 release.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1448 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 886409a5f6e0789ca84b9759fd11ee55e7584adb
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Sep 17 18:43:45 2003 +0000
-
-    Updates for the 0.8.1 release.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1447 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ad70497417f02911cfdc4ae720428a73a4f50d56
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Sep 17 16:20:46 2003 +0000
-
-    Use <version> instead of hardcoded version number.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1446 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit cdc2f67c60618d67c436f91fb5ee5125b0d74fc0
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Sep 16 06:36:41 2003 +0000
-
-    Bugfix: return SC_ERROR_OUT_OF_MEMORY if malloc() fails (Kevin Stefanik)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1445 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4e311104963df21998a748198c219c9af81f92f1
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Sep 14 10:27:21 2003 +0000
-
-    Fix bootstrap issues with Debian/automake-1.4
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1444 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6857ffa11a4806a98850a083938171f2c199f565
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Sep 12 10:36:23 2003 +0000
-
-    Update PKCS#11 library version to 0.8.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1443 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 508b20ada597ff679b0fe801a339a2225866e0e7
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Sep 12 06:48:10 2003 +0000
-
-    The previous libsocket/libresolv configure cleanup broke
-    LDAP support for at least Solaris. Therefore assume, that
-    if we have to use libsocket, probe for libresolv as well
-    although OpenSC's internals don't use it.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1442 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c5eea382eec13c014a672df8079db40504fd6b34
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Sep 11 12:11:52 2003 +0000
-
-    Fix: C_GenerateKeyPair(), C_CreateObject() returned CKR_USER_NOT_LOGGED_IN if lock_login is set to false in the config file, because then the pkcs15_init functions do a logoff internally
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1441 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 05a5696041ecf4fd8e72c30f9e0f2dee052bac5f
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Sep 11 08:01:06 2003 +0000
-
-    Removed compiler errors under Win32
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1440 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1a36f46a5d914ce86b54ab4ca996a4b9f006f6e7
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Sep 11 06:02:43 2003 +0000
-
-    First include <stdio.h>, otherwise the #include <windows.h> turns wchar_t into an (unsigned) short (Unicode)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1439 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c69ef430ee33e307eec41a14e49e84583dba2288
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Sep 10 22:20:26 2003 +0000
-
-    C++ warning fixes
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1438 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 68c885ebe1a22d35fb280a09bc4225a2d5fe5a19
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Sep 10 14:08:29 2003 +0000
-
-    Added version info to the Win32 binaries, and set the version number to 0.8.0.0 (4 numbers seems to be needed)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1437 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b4ea04dfe45cc4cbc035cd5d0782d2af6d1764cf
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Sep 10 10:42:34 2003 +0000
-
-    Build fix for MacOS X.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1436 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f2575116d0c160fddc0993197715e8d2092d685e
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Sep 10 10:41:48 2003 +0000
-
-    Remove extra semicolons
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1435 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2c173c4c063a3a8c07d9a2019a2b5ee5a353b9d6
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Sep 10 10:03:24 2003 +0000
-
-    Accidently changed the version number, fixed.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1434 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3ee103eeda44aa7489c89dcee5272ebddcc06561
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Sep 10 10:02:06 2003 +0000
-
-    Replace overly complex and old configure magic for connect()
-    and friends, just check for socket() in libsocket.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1433 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b3907c5a7e61644df63b319c1e8c0e6bd15651c4
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Sep 9 15:02:23 2003 +0000
-
-    Add cert_support.c for pkcs15-ldap support, old legacy
-    code that needs to be removed at some point. Implemented
-    against OpenSSL 0.9.6, not much tested against 0.9.7.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1432 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1ea97fbb5ef04e8fc657fb11888f4f23c4671a3e
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Sep 9 15:00:51 2003 +0000
-
-    Add very preliminary and quick port of an old scam
-    code that implements ldap-authentication support,
-    needs to be rewritten for more specific OpenSC
-    usage some other day.
-    
-    Work in progress, only tested with FINEID cards.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1431 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 09f2d373b26e4b71f0a9b3b8c04aa0c2b125e7fc
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Sep 9 14:47:37 2003 +0000
-
-    Remove old cruft, enable p15-ldap support (PAM option auth_method=pkcs15-ldap)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1430 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e6f3f9bb085432f488c688f256d699453fe6cb89
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Sep 8 13:38:07 2003 +0000
-
-    Increase log buffer size, so that 255 hex bytes still can be logged
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1429 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0c37fe2f792454f287b1fb014f00614a0662f039
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Sep 6 19:18:38 2003 +0000
-
-    Warning fix
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1428 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit eb1dd0fd4d948074bbe851e23071b04f7682f0f9
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Sep 6 18:30:07 2003 +0000
-
-    Preliminary update for the upcoming release
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1427 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit bbc64d01ff535097bd32c5327ae47f4bc3508dbd
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Sep 6 17:56:21 2003 +0000
-
-    Indent sources
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1426 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a02ef5e7228ebfc6559fc2167b65aee2de5bb515
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Sep 6 17:29:41 2003 +0000
-
-    Bunch of generic compiler warning and C++ fixes
-    before indenting the sources, apparently OpenSSL
-    engines are not under a heavy development anymore.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1425 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ba1a685c8ec3b8ff0f3b8fc75f5815d86add22c1
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Sep 6 16:18:15 2003 +0000
-
-    Don't bother exposing sc_pkcs11_module_t and scdl_context_t
-    to public headers, use void instead.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1424 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4f580598b0bc7506c5937c9e0c53c7f5f7bde86a
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Sep 6 13:36:59 2003 +0000
-
-    Fix: don't print the contents of a NULL pointer
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1423 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1decd28185d59c7b4646108c9ff28eaa0d09992c
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Sep 6 13:35:33 2003 +0000
-
-    Typo fix
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1422 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1941bc79b8729b7b4614a22c6fa12d3531b83741
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Sep 6 13:13:15 2003 +0000
-
-    Build the pkcs11 spy on Win32
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1421 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 97f78bc65f6db590143ac402575a6d7a9361fa53
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Sep 6 05:57:33 2003 +0000
-
-    Fix: handle the 3rd argument of the Change PIN and Unblock PIN commands correctly
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1420 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 842b5cd2f585393d1a293f9343828fa745af0905
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Sep 5 20:16:52 2003 +0000
-
-    Fix: let this card driver do the unblocking itself, don't send it to the iso7816 code (Victor Tarasov)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1419 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5bd87ee0d03b4729651367d884b87b9d6615c582
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Sep 5 07:22:10 2003 +0000
-
-    Warning fix
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1418 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e66bb1ef165e21df9125249ee6d54ce16c1f206b
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Sep 4 16:41:49 2003 +0000
-
-    Remove gcc specific code from usbtoken/openct drivers, untested.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1417 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 915ddc91ca29eec4b875541bbe6d88957a95a5c5
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Sep 4 13:50:30 2003 +0000
-
-    PKCS#11 spy fixes by Mathias Brossard
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1416 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3bd77d0f2b699686363b30b1b977abf533787b3d
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Sep 3 21:53:18 2003 +0000
-
-    Fix make distcheck to work again, weird that it
-    stopped working only after the opensc-spy patching.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1415 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 03de5ba32f18e8cc830c6cd01063cd2c427faae2
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Sep 3 21:31:14 2003 +0000
-
-    error -> sc_error
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1414 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3d7e8a964f03703d0bab7c0928f660caa949544f
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Sep 3 18:55:53 2003 +0000
-
-    - Properly detect CarDOS lifecycle MANUFACTURING and report it as "OTHER"
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1413 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit de2d058617ec955d409f95b47b50775fb5878b1b
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Sep 3 18:21:42 2003 +0000
-
-    Typo fix
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1412 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 597877eb49aff0ff69d3a6c1e70edcf9ce8a4d14
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Sep 3 18:18:57 2003 +0000
-
-    Move #include <windows.h> to winconfig.h in
-    order to minimize win32 specific code sections.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1411 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d63e83d4e3900207d6d28ca8d2d975770d44525a
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Sep 3 18:08:54 2003 +0000
-
-    - Linking cleanups for libpkcs11 / opensc-pkcs11
-    - Build fixes for PKCS#11 spy module by Mathias,
-      so far untested. TODO: C_UnloadModule?
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1410 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c0c3c339d7ea2f3a68ae424b59950c686c3ff948
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Sep 3 17:59:08 2003 +0000
-
-    SC -> OPENSC, old legacy from the libsc days
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1409 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3a2a4463b16f95cda29edd32a816e9041711f69b
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Sep 3 17:19:08 2003 +0000
-
-    Add PKCS#11 spy sources by Mathias Brossard <mathias dot brossard AT idealx
-    dot com>
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1408 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 86475ea7c0d28f2e4f55bebfe765dbc39c0e081d
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Sep 3 17:07:15 2003 +0000
-
-    - Remove sslengines/libpkcs11.h, it's almost identical
-      to libpkcs11's pkcs11.h.
-    - Move default PKCS#11 library defines to pkcs11.h,
-      so they can be used by 3rdparty applications as
-      well.
-    - Minor cleanups
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1407 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5616dba08ea576ab8730ae48edb0fcd544973947
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Sep 3 09:28:55 2003 +0000
-
-    - Stop using unflexible automake conditionals when
-      building PC/SC, OpenCT or USBToken support,
-      use ifdef's directly in source.
-    - Because of above, add HAVE_PCSCLITE for winconfig.h
-    - Remove unnecessary includes for log.h, opensc.h and
-      errors.h in libopensc sources, they're already taken
-      care by internal.h.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1406 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 087b9c10772015c136cdab14cd305069ec97d893
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Sep 2 20:44:15 2003 +0000
-
-    Generate minimal Info.plist and PkgInfo for bundles
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1405 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2c549055a7c284bda4336247bd1aecedb97163f0
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Sep 1 08:48:55 2003 +0000
-
-    EUSER: Cut'n'paste error
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1404 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit bac2b601a95ffa4c3dde883aa204c591b5332500
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Sep 1 08:43:38 2003 +0000
-
-    Move scdl to it's own subdirectory, although it's merely
-    for internal purposes only.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1403 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit bd54ea7a62c6dd4495c3c2d37fdfc64889d85ad1
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Aug 29 16:29:52 2003 +0000
-
-    - Move all dynamic loading related code to src/common/scdl.c,
-      probably needs some more work.
-    
-    As a side bonus, we now have a working CT-API support for MacOS X.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1402 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5835e752b51ca16dd4d70f776c481d7722012047
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Aug 29 16:26:59 2003 +0000
-
-    Cleanups
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1401 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit dc42cd3fa786e380cf5f4eaa4de8212ba62e9b72
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Aug 29 12:55:30 2003 +0000
-
-    - added sc_print_path
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1400 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8fcab2199b145f49f509386a3e1e72ea9a7eec17
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Aug 29 12:55:17 2003 +0000
-
-    - slightly improved debugging output
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1399 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ef42ba2010271eea45acd3ddefe0065a78232df8
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Aug 29 12:54:45 2003 +0000
-
-    - path cache wasn't cleared on error in flex_select_file
-    - slightly better debugging output
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1398 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d59a1034e98e96dacfc4e66b6167ffd291d6b056
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Aug 28 13:08:57 2003 +0000
-
-    - Cleanups to Makefile.am if / endif mess
-    - Don't bother checking OpenSSL engine
-      LDFLAGS if no engine detected
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1397 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2fd5b30f1a8e7b0bba6ee6adc7a4bf0692252f71
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Aug 28 12:51:33 2003 +0000
-
-    - added missing newline to error msg
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1396 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 70c3d91b23dd2ef3781ac44d58a5aa072b94aba2
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Aug 28 12:50:51 2003 +0000
-
-    - added missing intialization of apdu struct
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1395 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3f7599caaa691037f2df94072de2128af176548a
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Aug 27 08:47:09 2003 +0000
-
-    Documentation fixes by Ville Skytt��.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1394 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 24b3c22c6ff7a9dfe62b93fa37a97542f9e9de15
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Aug 26 10:55:02 2003 +0000
-
-    Merge with OpenCT
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1393 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 763fc167047b126c5f19bcfae05c6a9651d133b2
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Aug 25 14:21:18 2003 +0000
-
-    Rename libopensc specific error/debug to sc_error/sc_debug
-    
-    We should have done this ages ago.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1392 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f9f8b1f92fa143b367bc5ab0d8922d8d471b8431
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Aug 25 10:21:38 2003 +0000
-
-    Remove old cruft, minor reorganizing changes
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1391 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit aefab5110bd5ddf2b3906493b1bce676596937ce
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Aug 25 09:29:42 2003 +0000
-
-    Add fix by Olaf to handle CRLF style text files as well
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1390 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 835db855c6e738d0de54a39d68dc6b00163799af
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Aug 25 09:28:48 2003 +0000
-
-    CRLF->LF
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1389 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 252e44b532745c3b4cf454581233b176869db751
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Aug 22 13:44:34 2003 +0000
-
-    Allow MacOS X users to disable the use of PC/SC
-    using --with-pcsclite=no.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1388 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7468169cc920f73095d8f0caa29a6a6d12101fa9
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Aug 22 11:47:09 2003 +0000
-
-    Merge with recent OpenCT changes
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1387 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3c88da0d8136cc11669ac15257d04b7d4416adb3
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Aug 21 05:39:51 2003 +0000
-
-    - Do not barf on empty SEQUENCEs if all elements inside are OPTIONAL
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1386 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 093adc8c89f3dc905dbff609ea34b22df35d2c68
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Aug 20 14:15:02 2003 +0000
-
-    Fix: don't DER-en/decode the data in a pkcs15 object
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1385 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2b3db944e064bbc6a5f0b260a9496fb6ec805f01
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Aug 18 14:54:37 2003 +0000
-
-    - Rename sysdep_timestamp_t to sc_timestamp_t
-    - Add missing function prototype for sc_current_time
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1384 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8cf59459005af06571284d705c8bee4fc62952d5
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Aug 18 14:28:47 2003 +0000
-
-    Add common versioning to all libraries
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1383 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e6258f80490a9cc77e519716a20dfb2dbfd92e70
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Aug 18 13:45:37 2003 +0000
-
-    - Install OpenSSL engines as bundles as well
-    - Don't bother "renaming" opensc-pkcs11.so
-      when installing as bundle.
-    - More irrelevant cleanups
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1382 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 40b747a612d72c0cdcf0893c3c403017927c8a51
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Aug 18 12:06:35 2003 +0000
-
-    Minor cleanups
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1381 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 90cd91c0c58c83dd09fb10741bf0a57192db29f8
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Aug 18 12:05:50 2003 +0000
-
-    Fix for --without-ldap-ssl
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1380 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7160d1190cb87560611ea10c2d1f3446a5d1d8c8
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Aug 18 11:15:36 2003 +0000
-
-    Fix OpenSSL engine linking for MacOS X.
-    
-    Somewhat works on patched OpenSSL 0.9.7b linked again dlcompat.
-    Macosx's default openssl (0.9.6) does not include engine support
-    and fink's openssl 0.9.7 doesn't include any support for dynamic
-    loading, but that's hardly not our problem.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1379 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1a4c15749e7fea796191cf61bfc3adf0b5045292
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Aug 18 08:18:38 2003 +0000
-
-    fix for compiling openscd,
-    thanks for help to werner koch.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1378 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 844a25c9f155bdb6a1a5ad9a007595c765d6163a
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Aug 15 11:30:19 2003 +0000
-
-    Add ANNOUNCE to distribution tarball
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1376 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4f797b33765429636884b403a55f1d202a8e70c0
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Aug 15 10:07:10 2003 +0000
-
-    Add macos
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1372 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit bf5b6e8c145f17dbd4431cb28b186344c307e9a6
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Aug 15 09:00:26 2003 +0000
-
-    - Updated gnupg statement
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1371 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit cbffe9c0f2a8b030ec2f944bcc6fe1c59a47fd8a
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Aug 14 16:05:00 2003 +0000
-
-    Let's not advertise buggy code.
-    Usbtoken is only a fall back solution,
-    openct is working far better.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1361 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5d2ba9096a49f9f6a6b51c010b07671a834a693c
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Aug 14 15:34:18 2003 +0000
-
-    Updates for the upcoming release.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1360 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit bfc584e3efd893f299624ce99bc8d153eaae23d3
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Aug 14 12:45:22 2003 +0000
-
-    - Allow MacOS X build to be able to support simultaneously
-      loading of .dylibs, .bundles (native MacOS X) and bundle
-      objects (.so) created by GNU libtool, if dlcompat is found.
-      Otherwise just support .dylibs and .bundles.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1359 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 890d6ee2bce72127fd404739d757e1b09bd06bf0
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Aug 14 11:47:17 2003 +0000
-
-    Cleanups
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1358 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0aaed9f3cf24b835b38d8a148b29c0ac8aa2460c
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Aug 14 11:37:46 2003 +0000
-
-    - Minor cleanups
-    - Add preliminary support for MacOS X bundle installation
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1357 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c3c68e86f04ea2e5281fc9cc3053587fd159d112
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Aug 14 07:13:44 2003 +0000
-
-    Global Platform PIN Encoding: 1. Fix for pin changes: use the real length instead of the max length -- 2. Check for valid pin chars
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1356 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 062fcebf0ad353693d0de802a7c470fceecefdbc
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Aug 12 11:44:18 2003 +0000
-
-    - More cleanups
-    - Add '-no-cpp-precomp' check for MacOS X
-    - Rename --with-ssl-dir to --with-openssl
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1355 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2a0da5cc31bf5fa570c0b42d343948bd8a6f919c
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Aug 12 09:34:26 2003 +0000
-
-    improve configure code for openssl.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1353 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7089ef56e8250ecdd5f47cb5cd6ad8023504fc3b
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Aug 11 15:26:02 2003 +0000
-
-    More cleanups
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1352 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c62171e2cb7468d3ac99f589e0892b2c24cf09e3
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Aug 11 14:52:13 2003 +0000
-
-    Rewrite parts of the OpenSSL detection
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1351 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 11e38e8d2955560fd697e1a96628f5d11827dc15
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Aug 11 14:39:01 2003 +0000
-
-    - first stab at user_consent handling
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1350 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9f065e840f4cc958623e4daddcfaf53643f93251
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Aug 11 13:56:07 2003 +0000
-
-    - suppress stupid debug messages for sc_lock/sc_unlock for debug level < 7
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1349 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 954325bb8dfbae7b41b1e15785b8d9f29643a4ee
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Aug 11 13:55:16 2003 +0000
-
-    - print user_consent field
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1348 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5ff735c71a0555ed464abc5f246986abbe2c0391
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Aug 9 10:42:41 2003 +0000
-
-    stupid bug, set those variables if empty...
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1345 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3b6b9ee894c2310dedd8b03338bdd362a69ffc9e
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Aug 8 20:46:09 2003 +0000
-
-    - Added announcement
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1344 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c74ba58d0b73e326dd352e3ff9dc04e3df8facbf
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Aug 8 08:44:38 2003 +0000
-
-    - when asked to sign data, also consider SIGNRECOVER and NONREPUDIATION keys
-    - properly interpret return value of get_key
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1343 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3589b0e7178d958e60affabe3e61c70703b80ff9
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Aug 8 08:41:25 2003 +0000
-
-    "-lcrypt" is always wrong for CRYPTOA,
-    and we always need a path to find libcrypto.a.
-    So default to /usr.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1342 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b33b74c37ea334ed501449ff7a762220ac9c8b46
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Aug 8 08:34:02 2003 +0000
-
-    - cleaned up formatting
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1341 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 83f81f29c4bace20ff29f8d372b3ac58fc9f3326
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Aug 7 06:47:20 2003 +0000
-
-    Fix: use of uninitalised variable
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1340 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d0b18fbb4b118688626ec50bb7072e5a1e32e7df
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Aug 6 13:01:07 2003 +0000
-
-    Status update
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1339 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 085ec59b3e413dfdf622c7b75908478dd3af7001
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Aug 6 12:13:09 2003 +0000
-
-    correct makefile so that the depending libopensc is updated when a new scconf.lib exist (Ivo Pieck)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1338 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8dd292fc4b3af9fd96b91e0ad9018a1257d74a35
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Aug 6 12:01:40 2003 +0000
-
-    Blah, unify the string handling a bit
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1337 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 55d05ae2227e6df0d7f5c8e9e494a90817abcecb
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Aug 6 11:18:21 2003 +0000
-
-    Removed some unnecessary output
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1336 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c42a3bfc0f7db6b9b9954ed582c66e0f4edae175
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Aug 6 08:45:57 2003 +0000
-
-    - Fixed a mac specific compiler warning
-    - Fixed libdl-specific code to work with Fink's dlcompat package
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1335 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6e29c9f599c93c9f7ab84347838939718fda02f8
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Aug 6 07:36:38 2003 +0000
-
-    Fixed a typo
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1334 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ce51dac5e944069a5e26205659d8426dbcfe7087
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Aug 5 19:26:07 2003 +0000
-
-    Fixed the verification, so that it corresponds completely with the signature functions (more specifically: the special cases are provided for SHA-1 and MD5 signatures with the RSA_PKCS1_PADDING mechanism)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1333 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3e1dd82f4f973ad0e0b9412becf6702356bc5666
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Aug 5 17:28:29 2003 +0000
-
-    Remove some compiler warnings
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1332 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d1d502eb3a294876713fba613c01f91009237e2b
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Aug 5 10:34:34 2003 +0000
-
-    - accept option -T
-    - added function skip_unless_card
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1331 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 67d61672597eb680011ca9956da6f2e1576c325d
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Aug 5 10:34:04 2003 +0000
-
-    - accept option -T
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1330 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ce2ed80bfa66f5af94b3886898aaeeb088fc8e58
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Aug 5 10:12:43 2003 +0000
-
-    Under Windows, flex generates lex_parse_win32.c, because the default lex_parse.c that is in the snapshots and in the releases won't compile on Windows
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1329 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1287ed1c6dd7fc15fb9bac73eaeef26a1a425468
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Aug 5 09:50:39 2003 +0000
-
-    - doubled file size of PrKDF, PuKDF, CDF etc
-    - provided old profile as pkcs15-small.profile for e.g. GPK4K
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1328 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 222387d7ef82a3e0a343634d2a73be836d05412e
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Aug 5 09:08:02 2003 +0000
-
-    Added info about SC_ALGORITHM_RSA_HASH_NONE, to comply with the 0.8.0 release
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1327 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ef1826ce5f15134543944d4972e11cfb63d98f90
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Aug 5 07:09:09 2003 +0000
-
-    Renamed pam_opensc-test to test-pam
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1326 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d44719457b33eaadbf454026620cff2c25b6204f
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Aug 4 15:11:27 2003 +0000
-
-    Add support for native MacOS X pam header location
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1325 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1091548edada766df9ddd5c20c764df4721aba29
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Aug 1 07:03:16 2003 +0000
-
-    seperator is written to an u8, so it should be a char or u8 anyway.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1324 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3a68ba695b538f55f4bf45fe8f79ffb9b00ac5c1
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jul 31 21:16:15 2003 +0000
-
-    - warn if EF is too small for the amount of data we want to write
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1323 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7fc4ad2db0e84dafcdd4bde549e1c0edf20cd289
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jul 31 19:06:43 2003 +0000
-
-    - fixed error message
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1322 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c23ff8f56e578e923d8594ffc1a33dd9748a5729
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jul 31 08:27:35 2003 +0000
-
-    Removed a call for a (not yet) existing driver, which I accidentally added along with another change
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1321 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 77432ee4381abfcbeade84b998a2e51eff23a418
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jul 31 08:10:23 2003 +0000
-
-    - indentation fix
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1320 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit af50810d0f5b6f626eb1bbd60449c5a6f63c1fb4
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jul 30 14:46:27 2003 +0000
-
-    Fix: if a pkcs11 attribute is requested that valid for that type of object, but that we don't have, then we should return length = 0 instead of returning CKR_ATTRIBUTE_TYPE_INVALID
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1319 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0f97eb15b885f15afddcb0d15ab43e38bbd36a14
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jul 30 12:51:14 2003 +0000
-
-    Add support for probing the correct extra magic needed for
-    linking sslengines. Probably not perfect, but it's a start.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1318 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 53b5c2b389dc519fccad89139d2a736af99748c2
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jul 30 11:07:25 2003 +0000
-
-    - fixed VERIFY handling
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1317 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a9f05d11005cc9c8720510f20afd0e1109d020de
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jul 30 09:50:18 2003 +0000
-
-    Remove CFLAGS_OPENSC, cleanups to INCLUDES handling.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1316 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ccc9aca6d2baeda0d51f5b5fd2b49437666cd12a
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jul 29 11:52:49 2003 +0000
-
-    Fix OpenSSL engine detection for cases using --with-ssl-dir.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1315 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2836ff0287a1cd0b63cc3b9ec51f1b1b058966bd
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jul 29 11:50:41 2003 +0000
-
-    Fix for the MacOS X pam module installation
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1314 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 26b2ebbb774adae96766c0e2639610f31454f6dc
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jul 29 10:17:55 2003 +0000
-
-    Remove old references to OpenSSL
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1313 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 886de97b2715f134fdb55bd7e76805f471c9bfce
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jul 29 10:04:40 2003 +0000
-
-    More consistent indentation for multi-line variables
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1312 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0b1a65cd8109ddc287dca5b4b7242399df01a532
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jul 28 13:19:49 2003 +0000
-
-    Added struct sc_card to process_fci(), just like it's done with the orhter card operations
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1311 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 10a9d6ffc45b6bdc33c73b0b22c89e387c0a7f7c
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jul 28 12:17:21 2003 +0000
-
-    Upgrade the version number.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1310 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a327d1994a5db8f4cd489def1ed757a5669b591e
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jul 28 12:11:03 2003 +0000
-
-    Minor cleanups
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1309 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3ed1b9dfc7dd0d04e6c77de813f692e2ced86af8
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jul 28 11:10:26 2003 +0000
-
-    Fix the pam_opensc-test linking problem for AIX5.1+ and MacOS X
-    
-    MacOS X doesn't have /usr/include/security so you'll need to
-    symlink /usr/include/pam to /usr/include/security yourself
-    at the moment.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1308 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 40f995994ae72f1ecaf241f5ed5ebe6cafc1ab79
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jul 28 10:02:23 2003 +0000
-
-    Add support for MacOS X with PC/SC framework using autoconfigure.
-    Tested using Panther (WWDC build) + fink. Should work without fink, too.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1307 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit bc7d9bdef36eff7ef5a986a42ddda0dad96064e7
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jul 27 16:51:50 2003 +0000
-
-    Renamed test_engine.s to test_engine.sh
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1306 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit abc1e8b0002d32a318054bd950b647e687320b9a
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jul 27 16:50:08 2003 +0000
-
-    Fix: allways set pag_flags = SC_ALGORITHM_RSA_HASH_NONE if sc_pkcs15_compute_signature() is called with this flag
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1305 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7fb4472f4cb3e57d2a6e9654527e004d7822be78
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jul 27 16:31:33 2003 +0000
-
-    Add a big fat warning not to use usbtoken.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1304 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5b1e46329b438d5113c8efbc77336db0f675b805
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jul 25 09:01:51 2003 +0000
-
-    Build fix
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1303 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 18ebc833f8b1de88386d34680dc5fc2e141d6d26
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jul 24 14:27:54 2003 +0000
-
-    Fix: don't give an error if the hash algo is SC_ALGORITHM_RSA_HASH_NONE
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1302 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4de1bef042f7fca8703600f835e164a31b4e3b73
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jul 24 13:10:53 2003 +0000
-
-    - Build fixes
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1301 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4cbd578bc03aa08baaf3f1446264ab615abc9557
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jul 24 11:29:08 2003 +0000
-
-    Added test code for Mozilla-like keypair generation and the writing of a certificate
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1300 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3a61c4fe97200c6a1ddb2b49623c996860aed611
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jul 24 10:00:57 2003 +0000
-
-    - Remove src/assuan, what's the point of having --with-assuan
-      if we're including our own version? Besides, opensc-signer
-      and openscd both are incomplete versions, I don't know if
-      they work at all.
-    - Minor cleanups to openscd.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1299 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8b091d6694e4497a041b46ce7fe8721a134f4138
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jul 24 09:09:35 2003 +0000
-
-    Add missing 'n' for getopt_long
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1298 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6ff35eed3dcbf7f96f98fb22fa37d5407e07687a
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jul 24 08:35:34 2003 +0000
-
-    Little fix in test_verify()
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1297 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 849d48068ea95f90b90b61fd3a81432bcc83b0dd
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jul 24 06:47:54 2003 +0000
-
-    Nils fixes to starcos.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1296 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 98ffae14ca46e399c1b1d7df9b003e471dab4f63
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jul 24 06:46:27 2003 +0000
-
-    Add Nils and J��rn to Authors.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1295 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b458deb38b6b17808bd7841641afa2d0c360acb9
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jul 23 18:12:08 2003 +0000
-
-    updated patch. changes:
-     - add Nils fix for split keys.
-     - changed "ask for pin" code.
-    The later is ugly and needs to be changed. however it is
-    open how we can do that. Maybe it will require changes in
-    openssh, so lets keep it till those issues are solved.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1294 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0da7aaadeede3cece398cbe53e9424ce6eadfe46
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jul 23 16:11:53 2003 +0000
-
-    Resync with p15_eid changes. No, it still won't work.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1293 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d87ec12d0c8bd5c7c7774689a02c66a205a73f16
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jul 23 15:07:41 2003 +0000
-
-    Remove the rest of old, obsolete SCIDI related crap.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1292 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 06d4311e80b32b9aa791fb5c257d730d4b741d04
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jul 23 14:31:21 2003 +0000
-
-    Made the construct_fci() a card operaton, just like it has been done with process_fci() before
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1291 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c34eb2b1472db7abf231632953643ad3163d5246
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jul 22 15:51:17 2003 +0000
-
-    find the keys by usage (patch by Nils Lars)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1290 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c4b6992735bd05051f201bb40edc8b1789651327
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jul 22 15:50:22 2003 +0000
-
-    clean *.m4 files.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1289 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5f0e9c9333410aec1caeb9f1d935b57e3fcebee2
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jul 22 15:13:16 2003 +0000
-
-    somewhat improved profile search.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1288 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 23ee0807567cbd78065e542c0749b04a1902fc6d
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jul 22 09:54:20 2003 +0000
-
-    Added test code for the new Verify functions
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1287 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 99c2b883e77a4d167d53dfcb9c507542a435110b
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jul 21 13:03:54 2003 +0000
-
-    add id's to all chapter and section tags.
-    add documentation on Eutron CryptoIdendity IT-SEC.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1286 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 993abdd4430b211f5acbc492c83bd3942d20a02b
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Jul 19 10:52:02 2003 +0000
-
-    set automake option.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1285 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c2d09ff9595d31597b1189ed77d62801027d292f
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jul 18 09:34:38 2003 +0000
-
-    Read the file's contents as binary
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1284 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit cb581484b853e7d615cd97a8fed16e62d324ced3
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jul 18 09:32:41 2003 +0000
-
-    Read/write the file's contents as binary
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1283 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 98f56be49a162ad42edffaa681c381941909e325
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jul 17 23:03:16 2003 +0000
-
-    - added sc_pkcs15_compute_signature.3 draft
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1282 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d9d050bc5d6b2b0c6145e279e734d6851ff89955
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jul 17 23:03:08 2003 +0000
-
-    - fixed typo
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1281 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 01a36a8aed2489d9c8ecee94fd963c453781bcbb
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jul 17 22:59:12 2003 +0000
-
-    Added some debugging info
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1280 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 47489c5567bd6f02368cc6e03c69d6c53fce8e81
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jul 17 22:53:48 2003 +0000
-
-    Added some debugging info
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1279 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f8c5da9ccc8b7f487a83a2da38e683737d2d3b89
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jul 17 22:09:18 2003 +0000
-
-    Fix: if a pkcs11 operation fails, it should be ended
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1278 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 31819196c4439a4d7e9773b459799218a5bc727d
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jul 17 16:50:02 2003 +0000
-
-    Don't leave -lpcsclite to LIBS, use LIBPCSC instead.
-    We really don't want to directly link -lpcsclite to
-    every single library and program.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1277 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1c1db1823221db4afcb1ed27d8d993eba1ed1998
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jul 17 15:13:37 2003 +0000
-
-    Use $LIBDL instead of hardcoding to -ldl
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1276 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9dd994fb2c0320f00571b14377983d768315f7a1
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jul 17 15:09:01 2003 +0000
-
-    Little fix for Windows
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1275 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6ff35cbbba2cbeadc5ad5663b405f039389efd6b
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jul 17 13:09:59 2003 +0000
-
-    For crying out loud, hands off. There is a fucking
-    reason for these files to be removed manually.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1274 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d79ed53743f6725ff3226c16994383a1f707600e
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jul 17 13:07:06 2003 +0000
-
-    Remove the use of AC_FUNC_MALLOC and AC_FUNC_MEMCMP as
-    they don't work correctly with autoconf 2.57, we don't
-    really need them for anything anyway.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1273 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit beebb1bc473999deafe11dd26c9b091bede73ff9
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jul 17 13:05:09 2003 +0000
-
-    Remove C++-style // comments. Yes, I know that they
-    are ok in C99 spec, but who says that all compilers
-    are already C99 compatible.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1272 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 118c7a4dcc7d4791923b917eae9aecb8ce9a6d67
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jul 17 12:39:11 2003 +0000
-
-    Resync .cvsignore files
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1271 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 049246f2346ce74a4ba0b1252347bc455740dd27
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jul 17 11:04:25 2003 +0000
-
-    real cleanup via MAINTAINERCLEANFILES. include depcomp in distribution.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1270 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 83d17988d7698c4ab47791c5123d76b55a40c7be
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jul 17 10:59:10 2003 +0000
-
-    The CVS HEAD should always have a version "CVS".
-    For stable releases we should create a branch I guess.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1269 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 64c62eb0db4ec3f26216c531a1df02b3724d51cd
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jul 16 15:17:57 2003 +0000
-
-    - patch for synthetic p15 cards by Nils Larsch
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1268 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 665ee522105ce0e5d8af9de6d15822c7e1813a7d
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jul 16 15:10:54 2003 +0000
-
-    rm -f depcomp and friends so that we don't have to use
-    -f flag for autoreconf. Fixed an issue noticed after
-    upgrading to autoconf 2.52 -> 2.57, automake 1.5 -> 1.7
-    and libtool 1.4.2 -> 1.5.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1267 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f563ee6a9e4d1b674ed902d79a046dbd83498cae
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jul 16 11:52:28 2003 +0000
-
-    Moved padding from pkcs15-sec.c to padding.c
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1266 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 34fbb4219ac9ea7f799f21b94f354a7017892cac
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jul 16 05:20:58 2003 +0000
-
-    Fix of the previous patch: show only 1 public key if both public key and cert exist
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1265 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 95e2d8b78ac816568ebb05ce7e9124aa239bb714
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jul 15 10:49:28 2003 +0000
-
-    - Change padding functions
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1264 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0a05d8340c7f70e5496bf94cb0b729abc8409bd7
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jul 14 17:39:19 2003 +0000
-
-    Have process_fci() as a card operation instead of being called internally by iso7816_select_file(). This way card drivers can implement a select_file() and process_fci() independently
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1263 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e8cf96af9f63ce76a4cc6b50e3745734e3b0f326
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jul 14 17:34:50 2003 +0000
-
-    Fix of the previous patch: if there are a public key and cert with the same ID, show the public key derived from the cert
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1262 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 864f261679fb7abb88ecaab600e34f288e3a080f
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jul 14 17:28:30 2003 +0000
-
-    Fix: if there was a public key and cert with the same ID, you'd see the public key twice in pkcs11: once the 'real' one and once the one derived from the cert
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1261 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 29add3c3c9ff852f97500e40e6f4ddcd97d9590e
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jul 14 16:56:38 2003 +0000
-
-    - added SC_ERROR_WRONG_PADDING
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1260 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 82c3efb4bbcdbd099eeb8abeaedd51bd9f48a321
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jul 14 16:56:15 2003 +0000
-
-    - added missing error messages
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1259 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c2e40211be2a48c33dc82b3de0c68df4397c57a5
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jul 14 16:55:54 2003 +0000
-
-    - try to deal with RSA_SIG keys (first try RSA_PURE_SIG, then RSA_SIG)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1258 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 901a2d90e393e31455230c8e85c9474f4507a6c4
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jul 14 13:20:49 2003 +0000
-
-    Added 'Global Platform' PIN encoding
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1257 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit cd20622c96e1c2a13370fa5d3c6deeb64fc71ab2
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Jul 12 17:19:45 2003 +0000
-
-    remove files in "make distclean" instead of "make maintainer-clean"
-    to match the distribution tar file.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1256 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 512fb4469d7d9036ed52e85c1f0e81aee2dbb81c
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Jul 12 12:58:59 2003 +0000
-
-    - Fixed OpenSSL detection (at least with Debian)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1255 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b093146578ad2f6cbc311cd4103c9b1bcc8bccbb
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jul 11 20:14:48 2003 +0000
-
-    If C_SetAttributeValue() wants to change the CKA_SUBJECT, simply return OK. This is OK as we don't save the CKA_SUBJECT of a public key anyway, and it's needed for doing keypair gen + cert writing with Mozilla
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1254 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c83c8870d164afa8daf9ade9e934c7ecd5783846
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jul 11 18:16:12 2003 +0000
-
-    Cleanups, fix --with-common-dir work with OpenSSL engine detection
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1253 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit cde2543e4e6325912a8e1eac811f0932f33f792a
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jul 11 16:33:30 2003 +0000
-
-    Forgot this one
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1252 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c4d2611d123a47be00c29d8d718ed598a40da870
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jul 11 16:31:06 2003 +0000
-
-    - Various build fixes for various operating systems and compilers
-    - Add missing .cvsignore files
-    - Remove tools/ and make configure to work again
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1251 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit dbefbade41df2f73d001f683b5fe2e05d3b1c73b
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jul 11 11:18:39 2003 +0000
-
-    Changed libpkcs11.a to libpkcs11.la (by Ville Skytta)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1250 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1b3239c69ad1c4849f88e6b6b3ceb0bd740f8b80
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jul 11 11:16:14 2003 +0000
-
-    Fix: use strncasecmp() instead of strnicmp()
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1249 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit df89427bfb764e5f61e2504da03539a0d51ab024
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jul 11 09:40:49 2003 +0000
-
-    Bug fix: let sc_transmit_apdu() returns a negative number or 0 (no positive number)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1248 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 473a701c8027a23cae9c3b5a2b1a13b915b8ce02
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jul 10 22:31:14 2003 +0000
-
-    Forgot to init slot[0].flags to SC_CARD_PRESENT
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1247 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4737789ede74fc393ffa5f7f223ae998f3255daa
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jul 10 11:38:02 2003 +0000
-
-    Implemented the get_response card operation, is now explicitely called by sc_transmit_apdu()
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1246 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1b988af695661b0d836c020ad47f9584fe9062fb
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jul 10 11:13:18 2003 +0000
-
-    Fix makefiles.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1245 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d94de46a598b2208ef7374305dc25c13b30a67af
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jul 10 10:44:23 2003 +0000
-
-    remove old text files.
-    new documentation is in opensc/docs/opensc.html (and .xml)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1244 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit aee7119020f694b7bcb35eab2252f7ca73d4109e
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jul 10 10:33:22 2003 +0000
-
-    updated configure to newer init calls.
-    set automake strictnes to foreign.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1243 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0ee983fdbe625f39b15910e13e449371d94b9254
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jul 2 20:47:40 2003 +0000
-
-    Some of additional documentation.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1242 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 17cec0cd064e491cf2b041d2b387aaabf33a8c7b
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jul 2 17:58:28 2003 +0000
-
-    usbtoken is now obsoleted by openct. Update the documentation.
-    
-    This patch was made possible by the INKA e.V. ISP and the Hoepfner Brewery
-    and Beergarden. Thanks for free Internet!
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1241 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 44dbbffc70a716a04d4cae822c5581216036e92b
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jul 1 17:34:58 2003 +0000
-
-    disable usbtoken by default.
-    put usbtokens readers behind openct readers.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1240 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 694715e85ac55d62e3b63f86a08046c00317ecd5
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jun 30 18:25:34 2003 +0000
-
-    Xander Soldaat <lists at b-yes-d.net> reported this ATR,
-    the card works for him "like a charm."
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1239 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3669fa86e7c96b4e4651d7e28acf56c04341253f
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Jun 28 07:02:26 2003 +0000
-
-    Increased the pkcs15 ID size from 16 to 255
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1238 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4f979cf880cb1b3867c0baf423849dd14df9f196
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jun 27 23:01:10 2003 +0000
-
-    attached is patch for card-starcos.c This patch generalizes
-    the handling of the driver internal extra data (for example this will
-    be usefull to supply the card driver with the necessary information
-    to create MF/DF/EF). I also added a workaround for certain
-    profiles which require that the pin is only verified once (i.e.
-    the state doesn't change after a signature verification).
-    And finally I changed the order of some starcos function
-    (at first the init/free function and then the rest).
-    If nobody has objections it would be nice if someone could
-    commit this patch to the CVS.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1237 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7b7f2106f21392d2b3ffb277434de0329621e49f
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jun 27 15:26:17 2003 +0000
-
-    Implemented the C_VerifyXXX() functions
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1236 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b7d92d3127f2dbedc399989d2cab919b5046bebc
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jun 27 13:29:51 2003 +0000
-
-    Removed the CKF_WRITE_PROTECTED tokeninfo flag
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1235 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 82c00d806c550f823a635a0ba5c49d1bb1e7b6e7
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jun 27 12:59:22 2003 +0000
-
-    Placing #include <windows.h> in wincofig.h causes compiler problems, better put it in each file that uses _MAX_PATH
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1234 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0cb9a18963fda61c6c0acf466e2b71670e9cfc3c
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jun 27 12:32:57 2003 +0000
-
-    Some Windows fixes
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1233 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4fdecc39c2d44dd58572897c4730ea92c8137d04
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jun 27 12:11:19 2003 +0000
-
-    Fix: register CKF_GENERATE_KEY_PAIR in a correct way
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1232 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 033e032820a32fa528740b2ca54bcefdea657262
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jun 27 12:02:39 2003 +0000
-
-    Added test code for C_SetAttributeValue()
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1231 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ffadf4770cc47e417a16e0d6983e10aa075a8e0c
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jun 27 12:00:43 2003 +0000
-
-    Implemented C_SetAttributeValue() that can change the CKA_VALUE and CKA_ID
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1230 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5ed3d17ad88880eaca928ec1550b8ac933963999
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jun 27 11:59:37 2003 +0000
-
-    Added sc_pkcs15init_change_attrib() that can change the label and ID of a pkcs15 key or cert
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1229 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0b15d0aac41ae66a9c18ac00bd243569f929a610
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jun 27 11:32:58 2003 +0000
-
-    Use a better notation for the -key option
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1228 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7775154fa6d8ce3de178ae37b4522d59454c841a
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jun 26 16:47:45 2003 +0000
-
-    run tidy on html files (ignore if it is not available).
-    tidy html files, so they are readable.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1227 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit bfaacaf52a0b865372408d750022f8e20ac6cb5c
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jun 26 10:38:35 2003 +0000
-
-    ssl engine update (key format), pkcs11.txt integrated.
-    both done by stef, I'm only commiting (and updateing the html file).
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1226 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c1261a6c2e3d2db1dee4a79fba30bc38b6c78669
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jun 25 20:20:32 2003 +0000
-
-    xml/html based documentation.
-    This can replace:
-    
-    README
-    README.Win32
-    README.cards
-    README.signer
-    THANKS
-    TODO
-    AUTHORS
-    src/openssh/README
-    src/pkcs11/README
-    src/pam/README
-    src/sslengines/README
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1225 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4dc226d05f8910058c1362028f51d08e415027aa
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jun 25 10:57:41 2003 +0000
-
-    Added a little extra logging to C_GenerateKeyPair()
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1224 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 59da343eeafe90dd0b6f2ea4df3f952d00eb85fa
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jun 25 10:19:08 2003 +0000
-
-    PATH_MAX is defined via limits.h (I hope that exists on all
-    systems). MAX_PATH is a typo. int r was never used.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1223 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e7fcb2be88d6364fcf5447591dd280a696c4db32
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jun 25 08:42:37 2003 +0000
-
-    make live easier for other developers:
-    html file is now also in the repository, and I will update
-    always both at the same time. So not even developers will
-    need docbook dtd + xsl + xsltproc.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1222 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2141d58230c2352f249deaab9380ddbf95a31ac5
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jun 24 22:29:26 2003 +0000
-
-    removed pkcs15-init.sh reference
-    (oops, when did that creep in? shouldn't be.)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1221 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 09650d29a30aa8c8361f78a00a3fd73af871759b
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jun 24 11:31:02 2003 +0000
-
-    Changed SC_PKCS15_MAX_PINS to MAX_OBJECTS in pkcs15_create_tokens()
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1220 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 11660330f42c1ad1486c5ab19add05831e74cabe
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jun 24 11:26:17 2003 +0000
-
-    Added a safer locking mechanism, based on sc_lock/sc_unlock (Olaf)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1219 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a8724bea785524be89407ce63f68a7244db52d3e
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jun 24 11:11:49 2003 +0000
-
-    In slot_initialize(): Bugfix in a memset and added a pool_initialize()
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1218 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4fb623d537f9844afea2ee32ec19f4ec48454341
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jun 24 09:14:57 2003 +0000
-
-    Some fixes/improvements, e.g. an ID now has to be entered in the same way as in pkcs15-init
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1217 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 24b517cda5a7963f260588f813bb159bd03dc40e
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jun 24 09:11:01 2003 +0000
-
-    Added support for selecting keys by slot and by key ID; and added newlines to some error messages
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1216 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 127f94ad3773941c89945e9988ce9f92e63a3538
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jun 23 12:56:36 2003 +0000
-
-    - added pinpad support for OpenCT
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1215 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3c50c4d4e01290df6bd59218c56b040b0294e088
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jun 18 20:49:20 2003 +0000
-
-    Some improvements to gen_keypair() and write_object()
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1214 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit bb4bdd529dce4dd3306b249911587736f2f23a40
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jun 18 12:38:27 2003 +0000
-
-    Let sc_profile_locate() behave about the same way under Win32 than under Linux
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1213 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 97da0b6149df3393aa27c21bba4a4ba0f24f59c2
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jun 18 08:07:12 2003 +0000
-
-    Now you can specify your card profile for pkcs15init, both on the command line if you use the pkcs15init tool and in the opensc.conf file. Not specifying gives the default one, like before.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1212 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 79a5456b24d553a7808782686f21038f86e67126
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jun 17 11:31:48 2003 +0000
-
-    Changed strcat to strncat
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1211 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 70b17b36e535d33267519d1213729de984df19ac
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jun 16 09:45:23 2003 +0000
-
-    The code now asks for the passphrase.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1210 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6cc4820d5f1c271fc52bcac6082578244c5e0f88
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jun 16 07:40:43 2003 +0000
-
-    - when loading a profile, check all variations of <profile>.conf before <profile> itself
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1209 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 98d12f121055dd6169f965c72f8c96c64ab23af4
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jun 15 22:22:31 2003 +0000
-
-    added makefile so regression files will be included in tarball.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1208 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b511ae284dc099f98601b458233d3a0293bb2bc7
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jun 15 22:21:37 2003 +0000
-
-    current patch for openssh. does not work.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1207 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f2aaa70cadfcd1458641d91b1a0e0aff2cba6fb3
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jun 15 22:20:21 2003 +0000
-
-    makefile fixes, so the tarball will contain all files.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1206 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit bf527eb70b4af61ac847e1ee94ef8cb771001e22
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jun 15 22:19:41 2003 +0000
-
-    Doesn't work, but added current openssh patch anyway.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1205 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7021fcb5a56289da0442a2aa5263534627c038f3
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jun 15 12:56:07 2003 +0000
-
-    - iso7816_logout now invalidates the path cache
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1204 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit afe999d3ece4b022285c1ec6d8dc7d6f1d295fb4
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jun 15 11:56:10 2003 +0000
-
-    A small fix in OpenCT detection.
-    Bumped the version number up to 0.8.0-rc2.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1203 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d7640a432e1a153dfd77f0636814914f2e3dd194
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jun 15 11:55:19 2003 +0000
-
-    - put HAVE_DOCBOOK conditional around %.html rule
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1202 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9fd1ceefb52edd63d9b46b1956ea31f1e750fd5a
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jun 15 11:54:40 2003 +0000
-
-    - added --without docbook
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1201 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0b85e180d7853cbc72a113c753763b75dc81b874
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Jun 14 12:31:30 2003 +0000
-
-    Add AuthID for pkcs15 data objects
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1200 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c0b8b08e9c3a4836e0ad4c58075604d7fe53ce34
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jun 13 12:45:11 2003 +0000
-
-    Also compile the sslengines dir under Windows
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1199 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit bd3eab81e41f3b45ddfa34e3a5962e72ff900ee3
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jun 13 06:51:26 2003 +0000
-
-    Added #include <openssl/rsa.h>, this is needed for openssl 0.9.8 and higher where openssl/evp.h wont include the algorithms anymore (Nils)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1198 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0d2a15c29b09f8109eaf0ef99a6b774dc7fbd4ca
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jun 12 21:35:20 2003 +0000
-
-    Added support for a new cryptoflex profile, where the user (CHV1) is in charge of the pkcs15 DF
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1197 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 694a649ab80f09d338949e45c2a0ac6255910f1d
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jun 12 21:23:01 2003 +0000
-
-    Add the AuthID when writing pkcs15 data objects
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1196 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit aecd987286911385b11a6c8e22a53582716d0dda
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jun 12 21:14:04 2003 +0000
-
-    Add support for non-optional ASN.1 object that are empty
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1195 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit de20691dd482e1c3bf5708bf97719ecbf5f8a411
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jun 11 11:03:40 2003 +0000
-
-    Added some info
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1194 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d86e7fbd522bb1416dfb66a0bb1dbe2aac24894d
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jun 11 10:56:18 2003 +0000
-
-    - starcos fixes from Nils
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1193 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0cfd6319bfc80923f0fb00b2d6a523e70fac388e
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jun 11 10:56:04 2003 +0000
-
-    - New public function sc_add_padding
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1192 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0c4e6ef581fa4c6330dfa10f592e82d8518482d4
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jun 11 10:54:02 2003 +0000
-
-    - another fix for --without-openct
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1191 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 20ac705c0739927bacd6bd4f4acf122386fa98ce
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jun 11 10:53:19 2003 +0000
-
-    - dont fail if we dont have xsltproc
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1190 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit da8a49569c8f5cd2bbcd818fdd4163045ba4c016
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jun 10 16:45:38 2003 +0000
-
-    added flex_so.profile,
-    moved list of all profiles to PROFILE
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1189 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit df9d7a6484c97fe844df57e854178f6cb1c6716a
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jun 10 12:54:39 2003 +0000
-
-    makefile fix by Robert Bihlmeyer:
-    include usbtoken.html in distribution tarball.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1188 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 51100d16f1c2a9c5988ed7cd7c7d3585441bf6ed
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jun 10 06:32:31 2003 +0000
-
-    - prevent excessive calls to logout
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1187 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6575a4adbf0b80a02c74e64228fdd6c91b665a2f
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jun 10 06:31:48 2003 +0000
-
-    - iso7816_logout should call driver specific select_file function, not the iso7816 generic version
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1186 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2871cd82692294113422f1872f01efcc96e3743f
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Jun 7 07:17:26 2003 +0000
-
-    Add support for a new cryptoflex profile in which the SO (CHV1) is in charge of the pkcs15 DF
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1185 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c85913c5c7072e3c9b65e85797719b4f56c4d2e2
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jun 4 19:17:51 2003 +0000
-
-    Fix in pkcs15_gen_keypair(): labels didnt work
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1184 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5716f100cc5f51e85bcacc5f2a32129b68f38a47
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jun 4 18:37:52 2003 +0000
-
-    Fixed a type in previous patch
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1183 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 20053af948392324ac885997719f6b1446a5210d
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jun 4 12:30:02 2003 +0000
-
-    A first implementation of write_object(), mostly for testing purposes
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1182 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit fe3cb3de3fcf12dd3303b662ebc9eef220d4f16b
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jun 4 12:26:06 2003 +0000
-
-    some fixes to pkcs15_create_object() and pkcs15_gen_keypair()
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1181 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e3262c5fcd6d6c09ff30bf7ff04b4e89970e3339
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jun 4 12:24:19 2003 +0000
-
-    added a check for CKA_CERTIFICATE_TYPE to attr_extract()
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1180 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c8c2cf725b929d4e7d64d3f95ff54a8f7f6ad298
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jun 3 13:57:52 2003 +0000
-
-    First implementation of C_GenerateKeyPair()
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1179 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7fe0ba8749a81989d0c8663bd8e36e7d32628f7e
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri May 30 09:54:14 2003 +0000
-
-    - fixed typodef in sc_pkcs15_*_info_t (spotted by Nils)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1178 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c6027179e79814db6730606698601f53f8f7b6c0
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri May 30 09:45:26 2003 +0000
-
-    Compiler warning (result of malloc not casted)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1177 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2abc5040517ab1e9bd950dda6a8f36e3637e2170
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri May 30 08:54:42 2003 +0000
-
-    - remove signedness warnings printed by new gcc
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1176 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 81f2b7fe7d78761be9565aafcf6d61aa17a2c7b1
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri May 30 08:33:19 2003 +0000
-
-    - added --name option
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1175 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5b5e98e56a75102117cc665cafadb4743954df3b
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed May 28 20:52:46 2003 +0000
-
-    - added function skip_if_card to allow tests to be skipped for certain cards
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1174 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 48a61e95c0bbe4ee0b1bfa18dd959db91c938f81
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed May 28 20:52:33 2003 +0000
-
-    - added card name to struct sc_card to allow upper level apps to identify
-      card type more precisely
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1173 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3791a686afeba35580268da8135ad91a26d4abb0
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed May 28 18:05:18 2003 +0000
-
-    - added
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1172 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 580b9c45a66359a471d7c25719828f65c9509e5c
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed May 28 13:36:55 2003 +0000
-
-    - specify user pin when erasing card
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1171 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 59b07de3d42f99b812ff6cd2cad01d01f84300bc
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed May 28 13:36:25 2003 +0000
-
-    - better handling of failures
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1170 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7b5e8d2ba3725b8a6bb2e753c1d6138bc64c6205
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed May 28 08:30:03 2003 +0000
-
-    - allow specifying the list of tests to be run on the command line
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1169 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e76a0dd60bca60d5d870d0d9b1f6d2f9670115f0
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed May 28 05:25:10 2003 +0000
-
-    - fixed crypt* tests to work with cryptoflex
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1168 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit afe01d753276ce19bbd1b2e525aa6ac47827e146
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed May 28 05:24:40 2003 +0000
-
-    - added
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1167 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2f421d23b9f368f480358047113f348a70213894
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue May 27 15:58:03 2003 +0000
-
-    moved main() function into it's own file,
-    killed duplicate compiling,
-    made older autoconf/make/libtool happy.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1166 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9d6227ec64b66b93a1411223fd6b996326a6f923
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue May 27 09:58:39 2003 +0000
-
-    - return value of pkcs15_login was ignored
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1165 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit cf718b675f404e3bfb914357e98b783ccce90c1c
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon May 26 09:30:48 2003 +0000
-
-    move autoconf helper files to tools/ subdirectory.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1164 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9da55fc26253d6df39749d78e51464fe8714ceb5
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat May 24 19:31:12 2003 +0000
-
-    configure now accepts a path with --with-openct,
-    and that directory is searched, and variables
-    OPENCT_CFLAGS, LIBS, LDFLAGS are set (and used in src/libopensc/Makefile).
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1163 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 890e8a75a611e84f6156a982a9447b9a52e0892a
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri May 23 10:10:45 2003 +0000
-
-    - erase card using --secret
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1162 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit cce7ef1b81ba9d1199f7cb39f77afff7f7f7ae21
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri May 23 10:05:54 2003 +0000
-
-    - fixed pin handling in generate key
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1161 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 484fca5308ce592216fce4e0378cc1350a53f033
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri May 23 10:05:12 2003 +0000
-
-    - in pin_cmd, dont assume the caller has properly initialized max_length and encoding
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1160 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 24107c26f8a913c100a9a5cf49731a6502a26b31
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu May 22 21:04:31 2003 +0000
-
-    - fixed cryptoflex keygen
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1159 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 795915e1463f6d94bf0ad23326c90f52425a347f
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu May 22 20:53:15 2003 +0000
-
-    - added cryptoflex RSA key generation (not yet functional)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1158 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e6864b5897f5d9e9dd58d8db0bdb261af479a5a6
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu May 22 20:51:45 2003 +0000
-
-    - less verbose debug messages
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1157 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f4d1147224167c103b3a41539473b6298134c990
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu May 22 19:34:45 2003 +0000
-
-    - change debug level for sc_lock/unlock
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1156 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 296a9cc54b4100fe4b474fa2ff75e74d588017b7
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu May 22 13:59:25 2003 +0000
-
-    - fixed the hang with logout()
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1155 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4873e125d121410f26f774a80ad4ccc506fa4b3d
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue May 20 10:53:41 2003 +0000
-
-    libtool.m4 is not required, and a version too old causes problems anyway.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1154 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit fc31b65a88fe5ed8cc5bed3ed7956db4bebcb497
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue May 20 08:30:46 2003 +0000
-
-    added sc_logout() functionality
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1153 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a6d6a1f628a986afa43b57a1fe785353ac9153e2
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun May 18 10:08:26 2003 +0000
-
-    - added option --secret
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1152 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3e30e87cbd286aeaa472193c4097b8b75635ba4c
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun May 18 10:05:14 2003 +0000
-
-    - do_get_any_verify_pin: try to look up p15 pin info from card
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1151 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5a91780f7b936a8a8956d4b6ede48cac41f96040
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat May 17 13:30:09 2003 +0000
-
-    replaced it with a newer version.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1150 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4bfc94caed23db5572269ecddaaec6eb1edd896b
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat May 17 10:55:23 2003 +0000
-
-    always create and use a pin.
-    removed --split-key, cardOS users have to specify it.
-    three new tests.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1149 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 43931de9930e2cc52077c07df3a9ef9e16644870
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat May 17 10:54:27 2003 +0000
-
-    Added --pin option to pkcs15-tool
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1148 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 31c95778dd51ac4ce8159c4567cad4e2ad81aee8
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat May 17 09:18:38 2003 +0000
-
-    - Disable colors for now
-    - use --assert-pristine to ensure card is pristine
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1147 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a496e8e42be0484ea15353ae5c21fcf5594a0e10
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat May 17 09:10:32 2003 +0000
-
-    - added sc_pkcs15init_set_secret
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1146 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 705103d4d85a12ebe4d732214a3287f230440eb9
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri May 16 22:08:41 2003 +0000
-
-    fix include paths.
-    include files are supposed to be in opensc/ and opensc/rsaref/.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1145 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0070307a04240046c100e8dd7fbd496d30bd1271
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri May 16 19:12:54 2003 +0000
-
-    - redid option handling (you can now call it with -ECPa 01 -G rsa/1024 - except
-      there's a little bug that prevents this from working properly)
-    - implemented --assert-pristine
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1144 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit da8dfa9e6679f5806f403fcec339de4bd3585dcc
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri May 16 19:11:38 2003 +0000
-
-    - fix for previous change
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1143 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 35a12ea8680d9929505efed929daa52e8941fed9
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri May 16 16:41:53 2003 +0000
-
-    - print_usage_and_die: skip hidden options
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1142 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0d3948ed427b8971ac4814665d9be791475aa212
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri May 16 16:33:42 2003 +0000
-
-    - in test_signature: check CKA_SIGN before doing any signature tests
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1141 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f75ffc57d9776776dbec9cf0aeb18992dc4a2128
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri May 16 15:30:42 2003 +0000
-
-    egate cryptoflex 32 card can generate key. updated the flags.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1140 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 54f12273ed517395f81007a8cf5091f795ccdf63
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri May 16 14:25:13 2003 +0000
-
-    - display LIST_FILES and CRYPTO ACs as well
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1139 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4104cb19d56c10ae3da560261997f80e651e1491
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri May 16 14:24:50 2003 +0000
-
-    - minor fix
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1138 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit aeb84dadbc31058012a8be4995adadb12766cb4a
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri May 16 14:16:15 2003 +0000
-
-    - make sure CREATE/DELETE are protected
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1137 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 67747f45e157d8311c7234530284485810e7e7ff
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri May 16 14:15:36 2003 +0000
-
-    - select file: do not interpret INVALIDATE/REHAB AC bits for DFs
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1136 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f41586b731aab6198e79dd476178a0eebefa209d
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri May 16 09:51:59 2003 +0000
-
-    - added some color
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1135 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3bc3b4f6d59e287438bd718fc065b92133071fe6
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri May 16 09:34:09 2003 +0000
-
-    - bump the CDF size, as we now put the subject name in the label
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1134 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 684ceef2cf7c3f1be4e30706a9e3ecf496e9f953
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri May 16 09:27:38 2003 +0000
-
-    - added pkcs15-init pkcs12 test case
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1133 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d5713d2f1fc90b7ef796ede0e056ee4cce53378b
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri May 16 09:14:10 2003 +0000
-
-    - updated test scripts
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1132 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d34eb0e3b5d120b947c08fa89d19dc9c95705a78
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri May 16 07:42:26 2003 +0000
-
-    - test set didnt abort if p15_validate failed
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1131 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 30c094395aeea1cfc20b4c0a25dd8107ef809fd3
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu May 15 15:42:45 2003 +0000
-
-    - it seems the upper limit for r/w binary is 244
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1130 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e396ff5c95a8c8566da52d788f8422ad912bb664
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu May 15 15:30:34 2003 +0000
-
-    - more tests
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1129 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit fa123c4b75ce862aad1b9689658ee0b3bc60893f
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu May 15 15:29:42 2003 +0000
-
-    - Allow "pkcs1-init --erase" without further options
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1128 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2e673aead6e4b5d0d6a24dbb8eaeaa35c6034a43
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu May 15 15:28:35 2003 +0000
-
-    - Do not try to C_Login if the token doesn't require a login
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1127 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0f29e7543e248124aea6fc3f1fc5d86bda4661d5
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu May 15 15:27:33 2003 +0000
-
-    - allow full access to keys not protected by a PIN
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1126 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4356c7d9c981a9499ee62310fb1bf93fe0736a06
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu May 15 15:26:29 2003 +0000
-
-    - increase size of PrKDF, so that we have room for 2x2 split keys
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1125 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 383f1b13a12afd23feb64e005f387402e3b2de08
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu May 15 13:33:31 2003 +0000
-
-    - added --no-prompt
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1124 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8c7e571c89539e2083f2eada475d342968884ab3
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu May 15 13:33:04 2003 +0000
-
-    - erase card fixes: forget cached secrets, and use sc_free_apps
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1123 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b68cb1e0b3e6613820dfa9dbb1c4b4ba856abd57
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu May 15 13:32:17 2003 +0000
-
-    - added sc_free_apps to undo sc_enum_apps
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1122 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e85ebc6a9d986956dff931825968a6f1379e69bf
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu May 15 11:41:43 2003 +0000
-
-    - fixed card_ctl error message
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1121 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 99c1bf0da30a1502a4688c7fb4ab75d309ca3118
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu May 15 11:39:02 2003 +0000
-
-    - keygen: when --split-key is given, try hardware keygen if usage permits
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1120 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8fddbdb3b6030ff7a3efa9c69c01f97e9401c617
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu May 15 11:33:28 2003 +0000
-
-    - improved test cases slightly
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1119 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit cf5c0fb3a8d5689719eada4c6a1b8aaf47440ca0
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu May 15 11:32:21 2003 +0000
-
-    - added --slot-label option to find slot by label
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1118 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 992fb077d9c93c5ab19512ab181b4bd716ee214b
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu May 15 11:31:46 2003 +0000
-
-    - get_pin_callback takes an additional label argument
-    - add split key support to key generation
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1117 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7b34c2ecf7b11ce70efd8f6adcf134db2bfd0ad7
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu May 15 11:30:46 2003 +0000
-
-    - get_pin callback now takes additional label argument
-    - call get_pin for ALL pins, not just those listed in the profile
-    - add split key support to sc_pkcs15init_generate_key
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1116 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a3d81aa980a311bd10d493b51d5d4ea9940ba3c7
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu May 15 11:29:29 2003 +0000
-
-    - etoken_erase don't assume PIN 0 is always the SO PIN
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1115 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 27e105540e01f50db4f6e7f3ea6197561b52f964
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu May 15 11:27:38 2003 +0000
-
-    - added sc_pkcs15_find_pin_by_reference
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1114 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 053b10e2bf0b343358a8e54f4cb3904131e23b6c
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu May 15 10:34:03 2003 +0000
-
-    If signing/decryption fails because the card lost its security status, try to log in again and then do another attempt to sign/decrypt
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1113 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 059d37757d08998af8e58cffad4b03b7b87de8bc
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed May 14 19:13:40 2003 +0000
-
-    - dont say all tests were successful when we failed
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1112 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4be5cbd6c899e11d6590996f5a79bbf0f3dde1a3
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed May 14 19:13:13 2003 +0000
-
-    - show output of pkcs15-init commands
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1111 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8a3992a4db5b20fee3217ba70d661d022502a6d8
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed May 14 16:29:47 2003 +0000
-
-    - bumped buffer sizes for EF(TokenInfo) labels
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1110 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 77b22f1626405d02be1389d554412ef0cbeecc09
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed May 14 16:22:14 2003 +0000
-
-    - minor usability updates
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1109 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 209681d43e4fe5bc82a2d7862226dbe405660aa5
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed May 14 16:21:02 2003 +0000
-
-    - some tests for pkcs15-init
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1108 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6aeb544fd96548f3b81d7c40c6453a139dd43836
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed May 14 13:13:38 2003 +0000
-
-    Ported to Win32
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1107 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 877423b7ec6bd9b1ce14d19c883f3188a1ae4d53
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed May 14 12:25:13 2003 +0000
-
-    - restrict max read/write size to 128
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1106 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3ed0c2f5b10be541f0a9a1df2b742b14456b548e
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed May 14 12:00:57 2003 +0000
-
-    - do not mess with Case 4 APDUs unless we're doing T=0
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1105 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9c198d7b959c8bf006353d22e17116891384decf
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed May 14 08:47:04 2003 +0000
-
-    Some typos fixed and fixed the algos for use in OpenSSH (Nils Larsch)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1104 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 41a9e6ff2f1420a69d7e41953182c1e93795287b
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue May 13 20:24:24 2003 +0000
-
-    - sc_pkcs15_compute_signature(RSA_RAW): zero pad input if shorter than modulus length
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1103 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1bfe075ccd5ade5c299dd7fc91d852c2610a0a3f
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue May 13 14:29:59 2003 +0000
-
-    OpenSC header files are included as
-    	#include <opensc/opensc.h>
-    Thus it has to be -I/path/to/opensc/include
-    and not -I/path/to/opensc/include/opensc
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1102 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d416f2fe485b326eae72506d338039a1b9a8cf43
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue May 13 14:06:25 2003 +0000
-
-    added #include <string.h>
-    killing warnings.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1101 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7cbe523cc4465c4a59940317bd0bdf985484ef42
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue May 13 13:43:09 2003 +0000
-
-    At least the rainbow ikey 3000 need bigger labels.
-    Label size should be 255, as per pkcs15.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1100 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2fae230794d5ab22b48ccc2b69a51c42845f6125
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue May 13 07:06:29 2003 +0000
-
-    Make sc_pkcs15_read_file() work if the pkcs15 files contain only FIDs instead of file paths (Nils Larsch)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1099 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 167dea46de42c6ab666569b2240c36b5bd8e716c
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon May 12 20:37:07 2003 +0000
-
-    libpkcs11.h was missing from EXTRA_DIST
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1098 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 496232d9b96bbf65c2c5fd8d3bcb2067cfa24e10
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon May 12 20:21:08 2003 +0000
-
-    new sslengines implementation with pkcs11 and opensc backend.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1097 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b1e4c88aec98cd10dfe6e649728e8a4f49984a16
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon May 12 20:18:31 2003 +0000
-
-    Add sslengines.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1096 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 20fa07c022b454b40fc2168ba7ec5df1cc81c79f
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon May 12 11:51:22 2003 +0000
-
-    Added decryption functionality
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1095 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 55e8c31b1297a0a398e4005a0b3735132cfc5c09
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun May 11 07:22:27 2003 +0000
-
-    Fixed: support for X.509 V1 certs
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1094 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e9e7db89c715c4c193aac3691f92577f0417a334
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu May 8 10:42:36 2003 +0000
-
-    Fix of the previous Win32 patch related to the assumed absence of OPENSSL_cleanse(): this function does is present on OpenSSL 0.9.7 but not on the beta4 version
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1093 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c79e42d82e691410afdc63cbf80070ee638c5531
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu May 8 07:54:30 2003 +0000
-
-    Added support for Mac bundles
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1092 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c4e49486b9dbee7c5460eda4804da131e8a3b94b
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri May 2 15:12:02 2003 +0000
-
-    oops, didn't remove reference to sslrandom.c. fixed.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1091 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 99d3289ecd2ea681f8018c80e60bca4cb1a96e32
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri May 2 15:03:02 2003 +0000
-
-    this should fix the libscrandom issue:
-    the obvious solution is to create libscrandom.la (not .a)
-    and link with ../scrandom/libscrandom.la (not -lscrandom).
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1090 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 67530577b18166d8ba73dd33d398181cbfc7b15e
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri May 2 15:01:18 2003 +0000
-
-     - added a "nofork" parameter
-     - changed the initialization order to fix a race condition
-    	where the first usbtoken uses the id 1 and not 0
-     - fixed a bug where all tokens always used id 0. now several
-    	tokens work at the same time.
-     - fixed a bug: pid files were empty.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1089 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit dd81cea09322cc72c216a5e80ceb086d5c813192
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri May 2 15:00:34 2003 +0000
-
-     - indent (maybe not such a good idea?)
-     - improved some error messages
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1088 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a58e5e5d1991fe360d3b89cb84ca4ab7c044fb77
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri May 2 14:57:44 2003 +0000
-
-    improved "get" function:
-     - path is now by default like 3F00_5015_5031 instead of "3F00"
-     - the final message shows not only number of bytes but also the filename.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1087 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 782f5d39e66ec04d04dcc12ea0ebd3f7d2a5d292
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri May 2 14:33:02 2003 +0000
-
-    Fix for Win32 where there's no OPENSSL_cleanse()
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1086 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit dc6e5f856a9ffab8a1f6d8cf069a416d7ec7bf1d
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri May 2 13:38:05 2003 +0000
-
-    Little update on how to add OpenSSL support
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1085 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 67dd35f435146e3c8a5843d8bf706f818ea78a22
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri May 2 08:01:23 2003 +0000
-
-    Added info about the pkcs11 lib
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1084 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 683b946c5202e74778a384166491773782b6bc1a
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu May 1 14:09:11 2003 +0000
-
-    Patch by Robert Bihlmeyer:
-     - remove liscrandom
-     - use scrandom.c directly (list as part of the SOURCES)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1083 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e437a38c9875cb7961b45952d5880decb59bb41c
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 30 12:24:40 2003 +0000
-
-    Dont give errors with -t option if the private key doesnt support key unwrap
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1082 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a70954d2c2e7473c6189032f557f187e96c2259f
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 29 11:37:11 2003 +0000
-
-    - Yet another test commit
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1081 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit dcf4a948478a097c0b4805293362a6fa14fabbcf
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 29 11:10:06 2003 +0000
-
-    Build libscrandom in both .a and .so versions (by R. Bihlmeyer)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1080 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9213f6c5ccc0f44155470959d5f444b029fbdfc5
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 29 09:27:36 2003 +0000
-
-    Removed some compiler warnings
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1079 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b0d4f0670398aa05838999bd674b0d1b3a6d9c05
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Apr 28 16:34:38 2003 +0000
-
-    - Renamed card->chopsize to max_le, which is more descriptive
-    - Changed a few checks to asserts
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1078 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a6e7fa3af9888d8e288283976cfab5795c0bbe70
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Apr 28 16:29:57 2003 +0000
-
-    Nils fixed asn1 code to detect two byte "file name" versus
-    longer real paths.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1077 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f5bed52c763de0af640929f3ffac7740c5c6572d
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Apr 28 16:29:13 2003 +0000
-
-    Comment fixed by Nils: should be 0x80 or 128, but not "80 bytes".
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1076 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f417883e154f6484e098951d6ed5a7e39e7a28dd
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Apr 28 09:55:36 2003 +0000
-
-    Avoid an Assertion Failed (ctx!=NULL) in log.c if sc_establish_context() fails in C_Initialize()
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1075 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c6efa1e9a1d095407e04923e43222acbaaf142b6
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Apr 27 19:08:23 2003 +0000
-
-    create card->chopsize, init it with SC_APDU_CHOP_SIZE,
-    allow cards to change that value, and add code to
-    starcos_init to set chopsize to 80.
-    
-    chopsize is used with read_binary and friends to chop
-    the data into small requests, read/write them, and reassemble.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1074 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1c121b1430640d5591af2d6c3287b74801c2f942
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Apr 27 15:05:03 2003 +0000
-
-    Only look at first byte for end of data detection.
-    That way not only 0,0 and ff,ff is recognized
-    and 0,ff,ff,ff... will not cause trouble.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1073 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 07668a30ff27cb34f89941515237d2fd8a328c58
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 25 10:03:09 2003 +0000
-
-    Nils Larsch:
-    
-    here is a patch to remove a bug in card-starcos.c and two warnings:
-    
-    card-starcos.c: fix apdu.le value
-    pkcs15-pin.c: remove unused labels => avoid compiler warnings
-    pkcs11-tool.c : remove memory leak (a RSA_free() was missing)
-    	and simplify code (+ remove warning).
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1072 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit fecf9f5e15c024fb168e3ae15ec29ca467fcaed9
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 25 07:51:05 2003 +0000
-
-    Allow empty key file paths in compute_signature and decipher
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1071 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2698dc6cec32120758de1b2a79da68d6bceecce9
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Apr 24 07:03:48 2003 +0000
-
-    Have a compile option to enable PTHREAD locking at the pkcs11 level
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1070 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d8ef40512b478d2ad3d4fae03a12de05b9601050
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 23 11:46:07 2003 +0000
-
-    Extended caching for single-user Windows OSes (Win98)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1069 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 54aaf365a1b0c5bb115b6569c0d4356d24dd3c01
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 23 10:40:07 2003 +0000
-
-    Changed Roberts email address as requested.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1068 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a9692c9c4619def8cfbe3dcba404ac17b4d203d0
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 23 09:52:09 2003 +0000
-
-    Disabled OS thread locking on OSes with PTHREAD due to closing problems with Mozilla
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1067 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 870efbf2c02e0d6a729e67bece5b8f58ae9bfa84
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 23 08:47:57 2003 +0000
-
-    Added SC_PKCS15_PRKEY_USAGE_NONREPUDIATION as a valid signature usage
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1066 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 189a692012ccb72fa428334fda2c9f71e5d099bf
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 22 20:43:02 2003 +0000
-
-    Fix in case no OpenSSL is present
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1065 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c0ea6e9554a3ee28f410499467be0c8e565c2f58
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 22 17:02:28 2003 +0000
-
-    remove references to SCIDI
-    sanitize pkcs11 include header references
-    (now they are installed in rsaref/ subdir,
-    and pkcs11.h is *not* overwritten).
-    
-    remove automake 1.5 requirement
-    (automake 1.4 on debian stable/woody works fine)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1064 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 131719b8c63d722548d6a600fe0c68b1337b78aa
-Author: aj <aj at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 22 17:00:38 2003 +0000
-
-     - add robert to Authors as contributor of bug fixes
-     - configure code finally working.
-       engine is detected and path to libcrypto.a is also set.
-     - roberts fix for reader-usbtoken.c
-     - card-gpk.c migraton to DES_ routines with #define for 0.9.6 openssl.
-     - man pages: do not ship pkcs15-profile.5 (.in is in the tarfile)
-     - assuan: replace "strcpy(stpcpy(.., ..), ..)" with
-       "strcat(strcpy(.., ..), ..)" which looks good, but nobody uses
-       assuan I guess ?
-     - declaration of sc_pkcs15init_set_lifecycle kills a warning
-     - #include <openssl/bn.h> kills a warning (or compile problem?)
-     - removed unused txt[256]; from p15_eid (kills a warning)
-     - now "ln -s" the signer plugin to the plugin directory.
-     - moved key_out direction to the beginning of a function (kills
-       a warning or compile error)
-     - changed pkcs11-tool option "quiet" to "verbose" to conform to
-       other tools.
-     - made algo argument to wrap_unwrap a "const" (kills several warnings)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1063 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2de518de2dae61e88c69917cc346554ad1039033
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 22 12:41:03 2003 +0000
-
-    Moved win32/readme.txt to README.Win32, and updated this file
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1062 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0523e1d1fba99ea69c636fb9708fc94ef31db2d5
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 22 12:26:47 2003 +0000
-
-    Fixed an OpenSSL issue with MacOSX
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1061 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a02b233a6c29643f7c5ca6d4eb3e70fe40cc48d5
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 22 07:51:45 2003 +0000
-
-    Correction of the previous insert-remove fix
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1060 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3e46905b41a28feb0af0655d51be836310c830a9
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Apr 21 15:02:57 2003 +0000
-
-    - added missing win32/Makefile.am
-    - added usbtoken.html to docs/.cvsignore
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1059 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0aea6fcba55e897458ccc615e39ccb4696215816
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Apr 21 15:01:55 2003 +0000
-
-    - applied build fixes from Andreas
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1058 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 686a78e34e0e9c4eb5434ba745fd10b260918398
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Apr 21 12:52:42 2003 +0000
-
-    - fixed Olaf's e-mail address in AUTHORS =)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1057 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9c555ef6047e2ec0b744e97dbdb18f0b4f52e3fb
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Apr 21 12:45:16 2003 +0000
-
-    - trimmed bootstrap script a bit as suggested by Andreas
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1056 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1c4370dd3b680b8851f6fbd7640b0b8f6ca26556
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Apr 21 12:39:18 2003 +0000
-
-    - fixed a typo
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1055 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9ddbeaaf85e2d0a9e8c0ed0fefc925d0e50ab8e7
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Apr 21 12:36:40 2003 +0000
-
-    - Do not install openscd for now
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1054 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ed0ffac09bba88153e06a631a9c98e14dd70c07b
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Apr 21 12:29:03 2003 +0000
-
-    - fixed add_padding() in the case where padding is request, but input
-      isn't a hash.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1053 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ae19782ea8cd52f83de57ef05dbbed4a4661885d
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Apr 21 12:01:07 2003 +0000
-
-    - NEWS entry for 0.8.0
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1052 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4ae13b64a46c38014e6fc6a67734a1fd624bff55
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Apr 21 11:40:51 2003 +0000
-
-    - fixed CHV changing with a CryptoFlex
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1051 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit fb417772fb6f8f9b3c0c1d03bfa6a36edcbc4e30
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 18 15:42:04 2003 +0000
-
-    Allow non-repudation as a signature usage
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1050 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 01896a8f2e7cc51fa6288183fcc136e2268ff6da
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 18 14:57:50 2003 +0000
-
-    Added some files to ignore, also for Windows
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1049 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b05aadce59f2f711c9778a91cb16f4af5239eb0d
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 18 11:58:11 2003 +0000
-
-    Have a sec delay in C_GetSlotInfo() per reader instead of a global delay
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1048 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a85d6d7aa49697b6bbfd3582f643af99d601c0c7
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 18 11:55:16 2003 +0000
-
-    Added code for MacOSX
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1047 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0f4c706e3bcae8a5578e3fa4a20d861a159f2f90
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Apr 17 14:39:44 2003 +0000
-
-    - added tests for key unwrap
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1046 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 41a22174dc485fae14f7929d78e6a57b2d76544e
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Apr 17 14:38:00 2003 +0000
-
-    - bugfix for unwrap
-    - support getattr(CKA_VALUE) for public key objects
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1045 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b531527169aa18bdbad827a4ebae0951425d28bf
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Apr 17 14:35:58 2003 +0000
-
-    More robust detection of removal/insertion events
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1044 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit aa4c60c4bd3c8840c0571e738dd06c984c51d9a9
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Apr 17 13:25:20 2003 +0000
-
-    - another fix to the engine test
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1043 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e384675fcec15ed195642510c517bb7dff7c0322
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Apr 17 13:23:22 2003 +0000
-
-    - fixed test clause
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1042 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c94d72f3ea72359b4cfc14955105f4d320e6e373
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Apr 17 13:13:48 2003 +0000
-
-    - fixed signing and hopefully unwrap for split keys
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1041 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9fae9999ea033171aded4aec32ee457fc68047b6
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Apr 17 13:03:49 2003 +0000
-
-    - fix for the previous change
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1040 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f169b5c8915f450920a7e978eb795b3dc2e50069
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Apr 17 12:47:48 2003 +0000
-
-    - only build sslengine if OpenSSL supports it
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1039 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d2075b2c1389f986eba7ea3ea893d5c2f2751387
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Apr 17 12:38:08 2003 +0000
-
-    - implemented split-key support for CardOS
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1038 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6faee57a95817706248a25dfeb52342244a5acc5
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Apr 17 11:04:28 2003 +0000
-
-    - fixed compiler warning
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1037 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 93edc07115b3cf7fccd89c10d807a8883a1eff65
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Apr 17 09:39:09 2003 +0000
-
-    - Allow command line --key-usage to be more restrictive than the
-      usage given by the certificate (pkcs12)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1036 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f08a12f10849486fe1c01514a5ef15fa150dfb64
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Apr 17 09:37:31 2003 +0000
-
-    - when no specific reader is required, just select the first one that
-      holds a card
-    - when computing RSA signatures, don't assume the card supports raw RSA -
-      the it the challenge is a sha1 digest instead.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1035 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 98907b68f107936e83fa2b24ba4e4a6d536bd0e2
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 16 20:52:26 2003 +0000
-
-    - fixed endianness problem with encoding/deconding of bit fields
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1034 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 897e4a87ca40c43089c357ef93b8c13ce0236c70
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 16 19:50:30 2003 +0000
-
-    Added debug.obj
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1033 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 005590ab8f959c23a8cf088876e8f19e04afe04d
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 16 19:49:50 2003 +0000
-
-    Added card-starcos
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1032 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 192e140fd37e612f9f35ea7ee10620cc8808f433
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 16 19:03:11 2003 +0000
-
-    - merged SSL ENGINE patch from Kevin Stefanik
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1031 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit fcd5ddfa55202b8979db7082f2dd4c6c576f3022
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 16 17:00:02 2003 +0000
-
-    - removed SCIDI stuff
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1030 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f1aaa62c2be1e0ed9d551448d24c2554e5ae7157
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 16 16:59:34 2003 +0000
-
-    - integrate starcos driver
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1029 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7dd987d6cd34512a1b1060132a9e19b3129c95b4
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 16 16:01:22 2003 +0000
-
-    - fixed some compiler warnings
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1028 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5abf1b898e1c8e481a398b1d8fedf6166f51c337
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 16 15:58:57 2003 +0000
-
-    - added SC_SEC_OPERATION_AUTHENTICATE for starcos driver
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1027 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f8a7fecf7869e54c9f9441e6c42ff9eff6aeb67e
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 16 15:56:40 2003 +0000
-
-    - get rid of warning
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1026 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 095db2b907107bed6e1306b6929f639e1a2de098
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 16 15:53:44 2003 +0000
-
-    - getting CKA_LABEL would not 0-terminate the string
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1025 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f81929eb161bf9494263852de1564a72eabceab7
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 16 14:38:35 2003 +0000
-
-    - moved the lifecycle stuff to libpkcs15init
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1024 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ac1c926cc828f577950d46b872763f6a4b45b3fc
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 16 14:27:33 2003 +0000
-
-    - Added starcos driver
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1023 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 138346a0184ee13aff9a2a213066bfc6c06f9230
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 16 14:20:40 2003 +0000
-
-    - backed out AM_LDFLAGS change
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1022 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1714b3147c807a67c71fa6c426d9c87984b5b97e
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 16 14:18:07 2003 +0000
-
-    - improved debugging output of CK_ATTRIBUTE data
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1021 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c53043a97e4169b84c2ab38667bfee8251440b77
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 16 14:17:02 2003 +0000
-
-    - in getattr(CKA_LABEL), do not include trailing NUL
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1020 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit be09dc97f3a7192269cc243c5cc7db7bccc9bc1f
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 16 14:16:08 2003 +0000
-
-    - when getting certs from a p12 file, put the subject name into the cert labels
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1019 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7cb99011136ec5d530c15d4aa967b10f3e6ffddd
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 16 12:01:08 2003 +0000
-
-    Correction of the previous patch for MacOSX
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1018 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit aa6e626a794bafbae4913938725d2a3b69a860ef
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 16 11:50:49 2003 +0000
-
-    - import all certs from a pkcs12 file
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1017 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 90598ef590e86ec2ef3831dbd374789959abe3e4
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 16 10:20:22 2003 +0000
-
-    - new error code SC_ERROR_CANNOT_LOAD_KEY
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1016 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 44995d388d97ee6385447c897bbb0e654ca5b714
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 16 10:19:20 2003 +0000
-
-    - don't complain about read/write/update binary with a length of 0
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1015 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0c173451fc9c981b0c85f29af188dca5fb5ff97f
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 16 08:33:37 2003 +0000
-
-    - dont return error in detect_card_presence if there is no reader
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1014 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e04b90f5b29122274bdd6d53740e1bbb6387925e
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 15 20:06:19 2003 +0000
-
-    - a few more changes from Andreas
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1013 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 088a346bddd7a921aadc740c9f45ed7e3ba1d418
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 15 17:10:25 2003 +0000
-
-    First thing written in the debug log will be ==========
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1012 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4545fc2ab6963c2d6474bdb82d34ea234906fdf7
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 15 15:59:32 2003 +0000
-
-    include for MacOSX added
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1011 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 92c5e24572633b6e23554c420c873bed465ef12b
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Apr 14 17:29:19 2003 +0000
-
-    Have allways a label in CK_TOKEN_INFO
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1010 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 46ddaa903dec28d5bf936a1423261a802e0811b4
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Apr 14 15:19:53 2003 +0000
-
-    - fix pkcs11 signatures with etoken
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1009 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3b36593adab927b3f626cf8963dc9ae8d20053c6
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Apr 14 14:51:42 2003 +0000
-
-    - added pkcs15 unblock functionality
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1008 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit bdb71c7f9575b40b466c04398074bf1b382d329c
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Apr 14 14:49:06 2003 +0000
-
-    Update
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1007 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2b4ee79dc1b57f8744bc478dc3e712957c016ac1
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Apr 14 10:57:11 2003 +0000
-
-    - changed version to CVS
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1006 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0b333129d95766c00c747d0f99bd7fe2dbe6ee90
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Apr 14 10:33:07 2003 +0000
-
-    - explicitly mention we do raw RSA
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1005 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 91b7b3c7a6d85baa1491afd9efea74b582da4e12
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Apr 14 08:17:53 2003 +0000
-
-    - suppress "not supported" error messages from sc_card_ctl
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1004 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d2b5c08857ab040c46e7d3d32719d6a171947095
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Apr 14 07:44:27 2003 +0000
-
-    - fixed unblock command when puk given in hex notation
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1003 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a9a766fafbfff36b63f80c43b55e6d8d6c3686b5
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 11 15:29:29 2003 +0000
-
-    - more fixes from Andreas
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1002 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 91deef3734d6a06533b8a147115743d302169c49
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 11 15:26:05 2003 +0000
-
-    Added cardos-info.exe
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1001 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit dc269cea3ef383364c96612e871bbb9db670f1b3
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 11 14:48:54 2003 +0000
-
-    - reverted previous patch
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1000 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 99dc52d8755691dc4ad6ff25a3056c3184452e3f
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 11 14:42:45 2003 +0000
-
-    - try to deal more gracefully with hotplug events
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@999 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f4b866c1ea783f9d35a8367b19fa5ad00d3bf297
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 11 14:42:29 2003 +0000
-
-    - include config.h
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@998 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e052e6956d745f1700dace32a9e52244df53e5f5
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 11 14:42:16 2003 +0000
-
-    - added hotplug errors
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@997 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f801d14ffd6322dabf041d5c3fc5763f965c8e57
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 11 14:22:52 2003 +0000
-
-    Removed some errors that occured with unsupported cards
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@996 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 04b52edbb819b1a0dbdda87542a86497974c5ecd
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 11 13:55:22 2003 +0000
-
-    - added
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@995 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 56e2e70e07bec868253419c1ba1f5a3fbf3226e0
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 11 11:48:57 2003 +0000
-
-    - new tool cardos-info from Andreas
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@994 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0eecac13bb14ededc5ed006ed644ccb17e2c41e4
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 11 11:47:41 2003 +0000
-
-    - support for lifecycle cardctl; cardos lifecycle support
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@993 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5ca228f7b8d6f7b3d5ffa0a5d89c5d31df73a735
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 11 11:46:57 2003 +0000
-
-    - usbtoken fixes from Andreas
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@992 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 87a0cc51a1685b1bf086145ac9e5a54bd3987e9b
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 11 11:46:02 2003 +0000
-
-    - build fixes from Andreas
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@991 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a89ab6477c8e066d88d2f8d5e9f9337ff5276bb3
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 11 11:42:12 2003 +0000
-
-    - added --enable-usbtoken
-    - added --with-openct
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@990 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9437f109ec458f5bbcba1cac0971dce90a3536fe
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 11 11:41:31 2003 +0000
-
-    - Added OpenCT reader support
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@989 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1e1eec0d8a7eff63749f88df7e7993d0fd669766
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 11 11:28:09 2003 +0000
-
-    - getopt cleanup from aj
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@988 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 632dc7dfc8339b2c318c493995ad7b99a7ff8edb
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 11 11:19:04 2003 +0000
-
-    - fix for newer flex versions
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@987 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 89edb55ead225e9dab25706d3ffd61513305821c
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 11 10:32:50 2003 +0000
-
-    - Textual representation of PIN encoding instead of "Type: 1"
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@986 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f29ce046e723e5b407a9be1f1606aa4c32ec1deb
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 11 10:32:15 2003 +0000
-
-    - Don't set PIN defaults until after we've parsed _all_ cardinfo blocks
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@985 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4f60d849c6ad68e380b12983827dba076fb9c537
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 11 10:31:33 2003 +0000
-
-    - fix for 2048 bit keys on cflex
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@984 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c07de5157ad7645144033be0cd090b9ef644acc6
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 11 10:30:25 2003 +0000
-
-    - added SC_PKCS15_PIN_TYPE_* defines for weirdo encodings
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@983 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 340aad07a0a800c781a3e5cd2112867acfe3f5d7
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Apr 10 09:16:05 2003 +0000
-
-    - fixes for le=00/lc=00 problems
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@982 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b00a91c8afab47c3fb8fe1d5ba9c8b9487491529
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 9 20:19:42 2003 +0000
-
-    better fix then the previous for the assertion failed bug
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@981 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit af89c9b3fd8c8c5eb76be52cc180335161904633
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Apr 7 10:44:18 2003 +0000
-
-    Dont include DllMain in the exports
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@980 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ae700e318bb7180806a9454f2881bb10b233039c
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 4 09:52:39 2003 +0000
-
-    Fix: assertion failed (lock_count>=0) in sc_pkcs15_bind()
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@979 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit fabb271b6de956614aa22997f68762f8335c08cf
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Apr 3 18:19:22 2003 +0000
-
-    - fix sc_transmit_apdu to properly deal with le=00
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@978 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 97ed6f3d9ea4262b60e7f1af62fb745265b1cf3b
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Apr 3 14:38:44 2003 +0000
-
-    - added *.3 manpages
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@977 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 34b5c87399a11d99c4bd41e06ce38082bfd54d7e
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Apr 3 14:34:20 2003 +0000
-
-    - wrote a bunch of manual pages
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@976 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit fa2e617cd1ae98ddd18fd0a84253c0e8c70c638a
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Apr 3 13:18:00 2003 +0000
-
-    - added sc_reader_t
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@975 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9ae2b2fa07a2962f154e0a9960e5ab298c8efdd9
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Apr 3 09:53:32 2003 +0000
-
-    - usbtoken fixes from Andreas
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@974 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 35a5cdd78042d8d75230597f81d5795b41e9a007
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Apr 3 09:53:06 2003 +0000
-
-    - changed description
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@973 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0ea0ce2ac93adb36aa3ef948f70c26c106548e9a
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Apr 3 09:52:41 2003 +0000
-
-    - opensc-tool -f: don't crash on large or record structured files
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@972 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 00d2d7ce4c68a635ca5994091b3986b2a11f3be1
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Apr 3 09:51:46 2003 +0000
-
-    - minor printf fix
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@971 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a7962eeed6a4acf91dd2dbfc671e7a5d566a6ed7
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Apr 3 09:46:26 2003 +0000
-
-    - stubs for "synthetic" pkcs15 tokens
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@970 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ac4b6dc45fb4c2e13d3cd4d52f402da226aeaf72
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 2 06:59:19 2003 +0000
-
-    Fix: card detection in C_GetSlotInfo is done at most once a second
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@969 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9d3b5a3941d51ea11593270fd07952e87c7b8648
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 2 06:58:20 2003 +0000
-
-    Added sc_current_time
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@968 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 909b917694b22ffc4163dabd27b1cf1c5dac17e7
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Mar 28 13:28:44 2003 +0000
-
-    - opensc-tool -f should handle files > 2K gracefully
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@967 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e0a80576e6901574890180213b0853e7af9eb01d
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Mar 28 13:26:55 2003 +0000
-
-    - Remove workaround for t=1 bug in etoken driver.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@966 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0abafd0e9aaac2d71191197b57e2d200ac2f30d4
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Mar 27 16:08:10 2003 +0000
-
-    Fix: root certs could be shown more then once
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@965 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3d38b2a72e90101fb8139cd0cde3a0bcdfd72869
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Mar 27 12:40:39 2003 +0000
-
-    - add usbtoken.html to dist files
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@964 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a279abd2bcf2db7b44a27d1c8a5f7023fb3928b5
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Mar 27 10:20:35 2003 +0000
-
-    - usbtoken.html was listed twice
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@963 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4ca1db07327d943e7f48003dc3abb40928d37396
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Mar 27 10:20:10 2003 +0000
-
-    - autoconf fixes from Andreas J
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@962 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d21d3bf8ba2fabfa939592acaa3a54fadc8ed901
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Mar 27 10:19:44 2003 +0000
-
-    - added usbtoken docs
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@961 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit da172fd4c5242669107f3443ee5324a20de85f22
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Mar 27 10:14:22 2003 +0000
-
-    - added reader driver for usbtoken
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@960 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 995bcfa2dfaad91a326c7f1bd3e65b585cbea68b
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Mar 27 10:12:02 2003 +0000
-
-    - added missing win32.h
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@959 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 86d486c6021bbac7ceac9d5c64048a081e4b5ec9
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Mar 27 10:08:27 2003 +0000
-
-    - top_srcdir/top_builddir fixes (aj)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@958 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit bdb9163a8f6723e02c91ef8537449391b0532e7e
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Mar 27 10:06:53 2003 +0000
-
-    - added
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@957 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit dd8f50465a4dee4f7dc6db28331e01fc7070bc58
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Mar 27 10:05:44 2003 +0000
-
-    - properly set max pin length attr
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@956 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 944a5534875b8d4f59b2dfc4ac8c924a43da5ec0
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Mar 27 10:02:55 2003 +0000
-
-    - Merged Andreas' usbtoken code
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@955 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 556c216c4bd34ef00b66035f8c6940220a9a3e5a
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Mar 25 11:19:49 2003 +0000
-
-    - make sure all APDU fields are zero when processing -s option
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@954 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4aef09109bcb774c6f4a18655eaadc8dc2453221
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Mar 20 12:52:39 2003 +0000
-
-    card remove/insert dection for Win32
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@953 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c816a1f4619ea4e28b44d52c0f4d2389078f7aae
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 12 10:20:46 2003 +0000
-
-    - use OPENSSL_cleanse instead of memset to zap DES key (Nils Larsch)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@952 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4690cc5e6215246bcac4ff19d7822e96855911c4
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Mar 11 12:41:18 2003 +0000
-
-    - libdir -> pcsc_libdir to avoid name clashes
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@951 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 489401a9b3f398c7d7148d07b064cda3ef1de7be
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Mar 11 11:00:02 2003 +0000
-
-    - changed HAVE_LIBPCSCLITE -> HAVE_PCSCLITE
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@950 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 496b30d30e1b10971f56131309afba9994f97343
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Mar 11 10:59:38 2003 +0000
-
-    - Updated PCSC test code; allow building --without-pcsc
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@949 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ec6c86512e2ee34d364d6c4c3ba91da2ff31dd55
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Mar 11 10:52:09 2003 +0000
-
-    - abort on errors
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@948 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6717b4224b4ce8ad72e7d6807081e5eed66a6874
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Mar 10 21:35:47 2003 +0000
-
-    - dont install rsaref/{unix.h,win32.h}
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@947 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit aab6ebd1e73fd6c4b0d487328e83e3a76a82ed97
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Mar 10 21:23:08 2003 +0000
-
-    - minor cosmetic change
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@946 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d5d1fb395c4a6ed1e392144aa31014e55c762388
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Mar 10 21:22:42 2003 +0000
-
-    - bump SC_MAX_READERS to 16
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@945 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit faf95af4604d0b707e6f3bc6793c72425dba9f9b
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Mar 10 11:44:16 2003 +0000
-
-    - makefile cleanups
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@944 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ca6a27e4290aa2daa1a84e4820e2266279e14131
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Mar 7 14:18:55 2003 +0000
-
-    remove/insert fix: restore the slot->reader in slot_token_removed
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@943 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4dd322f82a5d63fdbb1fb019c238df872b11a28b
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Mar 6 12:13:48 2003 +0000
-
-    Corrections/additions for compiling with OpenSSL on Windows
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@942 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit bca885ff86c550dbf0f50140be2063f9cc689eaa
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Mar 6 12:08:36 2003 +0000
-
-    Compile with /MD (multithreaded) instead of /ML
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@941 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit faa73e582703835067cca79fde9c44b89866bec7
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Mar 4 15:47:05 2003 +0000
-
-    bug fix in sc_connect_card: only the first ATR in a config file was accepted
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@940 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f5ac3cd8ab986504197fab30e7e1e92869bd04d0
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Mar 4 09:38:23 2003 +0000
-
-    - fixed ATR
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@939 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c097704149d8f88b5261d56f9f9df656c8e7da44
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Mar 3 21:07:42 2003 +0000
-
-    added error msg SC_ERROR_KEYPAD_TIMEOUT
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@938 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 66a8076baa9835e55685008e890925d0bbbc3f76
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Mar 3 13:07:28 2003 +0000
-
-    - more robust handling of concurrent WaitForSlotEvent vs Finalize
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@937 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 32f532a782ac303c43215d0b8cb56a85a5cda7ee
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Mar 3 13:03:59 2003 +0000
-
-    fix: clear the CK_SLOT_INFO flags in slot_token_removed
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@936 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a2ff6d66b47b99c25f21dc1a02578c07db104798
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Feb 28 15:16:56 2003 +0000
-
-    take the last 8 bytes of the card as the pkcs11 serialNumber
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@935 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0036545ffa0dd0af7da7ce03ad7eee7fd6093813
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Feb 28 12:47:32 2003 +0000
-
-    fix in C_GetSlotInfo that previously cleared the slotDescription and didnt clear the CKF_TOKEN_PRESENT flag
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@934 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e13720e391d96bf6a528b8fe5303c14f0d7b74e4
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Feb 28 11:07:37 2003 +0000
-
-    - renamed connect() to open_reader_and_card()
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@933 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9fe5baa4b75dfc4b06b14323ddac9c7966cd5666
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Feb 26 07:27:42 2003 +0000
-
-    added error code CKR_PIN_INVALID
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@932 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5c1ae16ac8bfb42279b3e613948a6bc8166ef200
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Feb 23 20:10:24 2003 +0000
-
-    fixed wrong return value in C_Finalize
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@931 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 49760f9cfb7962b00f5a77dfaec893e99eaf6aa7
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Feb 23 19:38:50 2003 +0000
-
-    fixed some thread dead-lock bugs
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@930 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9173c9934e937dc6b0186bcd9bd74d6c7f9785b5
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Feb 23 17:50:33 2003 +0000
-
-    - new pkcs15 object creation stuff
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@929 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0529d27e3f4405ed8eaf358b9b7c0eedaf991a39
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Feb 22 21:27:35 2003 +0000
-
-    buf fix in sc_connect_card
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@928 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d9e99b0e17a376d246f7f9e2ea4dd29ec4df2297
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Feb 21 15:40:06 2003 +0000
-
-    little fix in C_GetInfo
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@927 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 33133a8d5a796679530edbd55bb1b3888daebfe4
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Feb 21 12:47:30 2003 +0000
-
-    - prevent compiler warning
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@926 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b0a8b1a26a8e03c228f40e96900dc378e3f8a365
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Feb 21 12:29:14 2003 +0000
-
-    extra check in C_Logout
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@925 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 252cbd51d2a2b586d49e7b0a07b1a84192cdbd22
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Feb 21 12:27:24 2003 +0000
-
-    login should return CKR_ARGUMENTS_BAD if wrong pin length
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@924 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 66f7de93786f75b21489d964dc40eda57e1516e4
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Feb 20 23:20:08 2003 +0000
-
-    removed unnecessary debugging
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@923 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a7a5701e0c73e7f6266900525e7fdef2e76c617b
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Feb 20 23:19:01 2003 +0000
-
-    added support for max pin length
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@922 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a69a309c6e849a1c45a42f848f32c132ac91a367
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Feb 20 18:55:35 2003 +0000
-
-    NULL_PTR check added
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@921 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4d4920b6617a9203e864974835dca0b59153746b
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Feb 20 18:54:52 2003 +0000
-
-    Let C_FindObjectsInit return correctly
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@920 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 213941af28c4708b6fa4b442e3a17891bd249e49
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Feb 20 13:03:15 2003 +0000
-
-    little fix of the previous commit
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@919 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9631ef363681bc497553f0fa43e11602a078e5f7
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Feb 20 12:51:07 2003 +0000
-
-    removed const in sc_card_driver (caused win32 crash)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@918 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b75ea0a0b26258b041624baf9e8cae3bd0a859f1
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Feb 19 21:10:39 2003 +0000
-
-    more parameter checks + fix in previous checks
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@917 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 958658102d7636f5958111a6964cda54e6df6d8b
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Feb 19 13:44:36 2003 +0000
-
-    added check for NULL pointers and uninitialized pkcs11 lib
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@916 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 57954682fdb25e8a19121b9034966eeb690ad402
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Feb 19 13:36:58 2003 +0000
-
-    added error: unresponsive card
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@915 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c05cef967808e8899f5aa399af769b343ad12940
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Feb 17 16:53:49 2003 +0000
-
-    correct behaviour of C_GetSlotInfo at empty slots
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@914 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 870d9d9f666db706c8c767cdd6282af644e01e61
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Feb 17 14:57:51 2003 +0000
-
-    - made card_detect() available to everyone
-    - C_GetSlotInfo now always does card detection, but only for the
-      reader which which the slot is associated
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@913 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit cf6037314fd73df23e9582269086bf9b97f03c82
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Feb 17 14:21:38 2003 +0000
-
-    - Introduce locks around all pkcs11 operations, in case the caller
-      is multithreaded and wants to access us from different threads.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@912 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5265456cabc8e073035779a20c9b4affc002f25b
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Feb 17 11:09:24 2003 +0000
-
-    some cleared messages
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@911 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4ffba35b5e499437d82c0a7d0244db2da578ff29
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Feb 16 20:25:41 2003 +0000
-
-    - fixed change/unblock pin for GPK
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@910 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e1f4108c33fa3549ee8fc991ec2244324ac62ae5
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Feb 16 18:09:10 2003 +0000
-
-    added error code CKR_USER_NOT_LOGGED_IN
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@909 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 58985e51c2431232b463f9acf0475f7b621817a8
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Feb 14 16:59:23 2003 +0000
-
-    reset first_free_slot during C_Initialize
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@908 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d944d917140bf1a7e6a270932e188e77b7f3b16f
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Feb 12 14:20:53 2003 +0000
-
-    added the CKR_DEVICE_REMOVED return code
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@907 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0b9c44172dd94ac0f41526d2c56e66664131b5a7
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Feb 12 14:20:00 2003 +0000
-
-    get the right error code on card removal
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@906 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7dcf350d7b0b421993007fedbcfeab5c663678f4
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Feb 11 10:38:43 2003 +0000
-
-    added p11 error CKR_PIN_LOCKED
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@905 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 23d686576e01f95cdc146d05f3d07cfa99138f67
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Feb 10 14:08:54 2003 +0000
-
-    - fixed minor compile warning
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@904 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1c660257986a8a463cc9101e0bcc1b0e95c9f378
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Feb 10 14:08:29 2003 +0000
-
-    - Each reader now gets a fixed range of slots
-    - Each slot now shows the reader name in the description field
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@903 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a2b9838bb1c5217a90f5241cb922e3fc77bb485f
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Feb 6 14:46:57 2003 +0000
-
-    added locking to sc_pkcs15_decipher and sc_pkcs15_compute_signature
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@902 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8160bf64a1b05ecc3c4fae3d20ba7196f1caf55f
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Feb 5 15:43:51 2003 +0000
-
-    - fixed typo in previous patch
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@901 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d1a122ce3b9cbf237c69701f2fd032fe6b5af7a5
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Feb 5 15:39:44 2003 +0000
-
-    - fixed typo in previous patch
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@900 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit af6cfb5537476c92e74132968c8449d0259487e1
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Feb 5 14:45:48 2003 +0000
-
-    - Support Belgian eID - be less pedantic about the AID listed in EF(DIR)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@899 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0e691fb13eded967b893eb204d1854d7e50a306a
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Feb 5 13:55:22 2003 +0000
-
-    added support for pin pad readers + change pin
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@898 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4ff3821a0a9d4206fab727127a7a7470a1c4ef22
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Feb 3 12:32:43 2003 +0000
-
-    - suppress bogus insertion events
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@897 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f71e2b0c5eb98116637e87a28262ffd7f66c4e98
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Feb 3 12:23:05 2003 +0000
-
-    - Added test for WaitForSlotEvent
-    - fixed a bunch of compiler warnings
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@896 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5276bbb1c4410e33dd062fbc9eb85ddffb1a2897
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Feb 3 12:20:54 2003 +0000
-
-    - merged Stef's WaitForSlotEvent patches
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@895 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 76e7ce90e40b23c181d72d814ee3c1804660c9f7
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Feb 3 12:20:24 2003 +0000
-
-    - fixed compiled warning
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@894 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 542e12deb327b12dbc5791811cc0c09698c5aff3
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Feb 3 12:17:12 2003 +0000
-
-    - pubkey asn.1 encoding fix
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@893 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0b84c49f9a0cb6fa1f0dad6f4783f802ae1554e2
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Feb 1 20:26:12 2003 +0000
-
-    now also caching if file->size differs from what sc_read_binary() returns
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@892 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e8e738aac425299b4087e9960bf1dbd8320b65c4
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jan 31 15:32:27 2003 +0000
-
-    added signature test for all keys
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@891 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f6a343712e697348f801fb8838775e7cd9c9a7c6
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jan 31 12:50:26 2003 +0000
-
-    added: opensc SC_ERROR_KEYPAD_CANCELLED -> pkcs11 CKR_FUNCTION_CANCELED
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@890 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7dab6baeeecd18d646831b36b2cae8cdd477401e
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jan 30 09:45:13 2003 +0000
-
-    file size fix + removed unnecessary code from previous commit
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@889 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 16dfb55118ab1cc50bd6b9247a0b0c53ff091e92
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jan 28 15:39:47 2003 +0000
-
-    the slot's slotDescription is now the reader name
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@888 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5c1b8d9411215351f2eafe41b6f547393faca02f
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jan 28 15:37:54 2003 +0000
-
-    selection between SHA-1 and RIPEMD160 sigs when 35 bytes supplied
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@887 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 20ad65a85894a48ee751ea00e6b27bef4bdff443
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jan 28 15:36:08 2003 +0000
-
-    made buf[1024] dynamic (malloc)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@886 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit dfc01ab7ed6876ecc96345cf8d89a7fc5e0a4576
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jan 27 13:43:06 2003 +0000
-
-    typo fix
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@885 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d8871d9a46372b4100fb54815c12153786f079db
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jan 27 13:33:28 2003 +0000
-
-    some fixes + added cert viewing for -O option
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@884 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a383ed91d51caf2b7d1145d397734c34863ab082
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jan 27 13:17:08 2003 +0000
-
-    added return value + fix (needed if hide_empty_slots = true
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@883 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7d6837321f528c99a340aa8e57fd54916e961436
-Author: sth <sth at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jan 27 13:01:17 2003 +0000
-
-    Fixes for Windows, who's PC/SC has more events that interfere with insert/removal events
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@882 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 039363bffe3b79d800663a87d9fa946bc2e59fe0
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jan 24 15:24:40 2003 +0000
-
-    - Remove openscd for now
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@881 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3a83fca45237b2448acce569c9489d572a0436af
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jan 22 08:34:44 2003 +0000
-
-    - cflex 32k v4 supports keygen
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@880 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b9c3ec2ec45466099ceef425a8d4da9948959f54
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jan 21 15:29:17 2003 +0000
-
-    - fixed two minor issues in p11 test code
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@879 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 733f6d1fb9e3243630e292c2a4eae13e9bc4bb1f
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jan 20 12:09:30 2003 +0000
-
-    - fixed previous %windir% change
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@878 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7eef2f81a27236ab4de459396e5770d7ba86dc9a
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jan 20 11:40:38 2003 +0000
-
-    - new ATR for eToken PRO 32k reported by Kevin Stefanik
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@877 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c5f5557367ce0d02e3eedac6a3b0937892ec3e9f
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jan 20 10:22:41 2003 +0000
-
-    - sc_pkcs15_read_file: gracefully deal with short reads
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@876 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 501cdbd7e092ab28769c472fce523ba7630bc770
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jan 20 10:12:28 2003 +0000
-
-    - Get opensc.conf from %windir% rather than hard-coded C:\\WINNT (Stef)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@875 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1a994ef76006362538fb570a2b8db8e4957d269c
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jan 20 10:02:07 2003 +0000
-
-    - a few minor changes from Stef
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@874 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7c6896ad736a627bbddc8b40871b95e6dc9f8ca7
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jan 20 09:57:23 2003 +0000
-
-    - link against libscrandom.a, no libscrandom.la
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@873 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c83a6468ac9a4420a9b483a1a7b8bb1f0e92f9ad
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jan 20 09:56:53 2003 +0000
-
-    - fixed typo in previous patch
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@872 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a5492a32a8a06f83b1c9e77e53c093156d482d6b
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jan 20 09:56:27 2003 +0000
-
-    - slightly more verbose error messages when ASN.1 parsing fails
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@871 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 693c5e6b8ba7dca3fe4e7fbd9495f20064ee0bb6
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jan 20 09:53:10 2003 +0000
-
-    - do not encode zero length sequences
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@870 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4867251671aad340962f5db54a6dd5aace62513d
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jan 20 09:52:05 2003 +0000
-
-    - fix sc_pkcs11_signature_size to return modulus size in bytes, not bits (Stef)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@869 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 69f8588f47e13b86d0e50c92c40d0ac224558c0e
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jan 20 09:50:33 2003 +0000
-
-    - added card_detect_all
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@868 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5b1eb43b933e66743f0792098e6394d215cc38e4
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jan 19 17:47:07 2003 +0000
-
-    - add some support for card removal in pkcs11
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@867 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a7551e1822c13bcabe43be9b2c23d910efeacf92
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jan 16 20:10:28 2003 +0000
-
-    - Patches from Stef implementing PKCS11 RNG related functions
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@866 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 98e9561b5c09275087c77ebfadf6fd9e9f1e79ae
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jan 15 13:20:22 2003 +0000
-
-    - added command "random"
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@865 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e69517941f4307c36c89c8deb8fbc126b9e1607b
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jan 15 13:20:02 2003 +0000
-
-    - added SC_CARD_CAP_RNG
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@864 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b1eff6686762861c94808d6bcb9d6f378c7fff9d
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jan 14 19:55:45 2003 +0000
-
-    C++ warning fixes (assuan excluded)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@863 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a89e65bfb38cbbd7d5fd414dc337e58e6a0a584b
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jan 14 16:49:54 2003 +0000
-
-    - mask out additional flags in the card type byte when asked for the AAK
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@862 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f2f6c247163e2536b8a3478985b988d9f9b03c81
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jan 14 16:44:34 2003 +0000
-
-    - added ATR for Cryptoflex 32k v4
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@861 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6532461cf350251385fa8573a15bf3376cec9818
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jan 14 14:26:23 2003 +0000
-
-    - win32 fixes for mutex change
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@860 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6346fd0fcdc719be60b1fa07d2302b785a72f21f
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jan 14 13:31:55 2003 +0000
-
-    A small warning / compile fix
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@859 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit baf8393a8a8c18e76f99a6a4c8d562d5b560a6e7
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jan 14 11:22:33 2003 +0000
-
-    - merged mutex patches from Serge Koganovitsch (Zetes)
-    - created new file portability.c and moved the whole mutex stuff
-      there (so we don't pollute public header files with #ifdef HAVE_XXX anymore)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@858 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0af2a35b9c68268427f139fedaa114bd46b9185d
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jan 13 21:38:43 2003 +0000
-
-    - Another go at the empty slot/empty token issue
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@857 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 41ee6a61ba5e60b1dabe14e4d17b4066435fbca0
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jan 9 12:33:41 2003 +0000
-
-    - fix to previous patch: if use_cache is given in both the default and the application conf block, use the latter
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@856 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 373de3ed8728d2696fb997875e4298b7d6a5bf1b
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jan 9 12:31:03 2003 +0000
-
-    - actually honor the use_cache config option
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@855 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1aa5e6161c976671999662c6a36d67ec315d6e92
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jan 9 11:41:04 2003 +0000
-
-    - PATH_MAX fix for win32 (Stef)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@854 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d2d83a47ffd533bd80fd95a23b5526709d3294c2
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jan 9 09:18:02 2003 +0000
-
-    - when caching pkcs15 files, transparently create the cache dir if not there
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@853 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7be0774cf280a6c07976883a3e75bbf229b84420
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jan 9 09:14:15 2003 +0000
-
-    - learn_card: the cache directory is now created by libopensc
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@852 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4a14b41dca7ea13babdc3e3f244dd105bf425080
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jan 9 09:09:25 2003 +0000
-
-    - reordered options for help message
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@851 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e60c9d705e1a1bdcb3b2b9da8a9648e55c397fbf
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jan 9 09:09:01 2003 +0000
-
-    - fix the help message for --very-long-options
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@850 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0b1b8b14f583b52a58bf8452f975f8bbf996af10
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jan 9 08:46:11 2003 +0000
-
-    - use "wb" rather than "w" in fopen (Stef)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@849 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e13804aa32fa19f7221f4d1098dca3e9298e893b
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jan 9 08:45:27 2003 +0000
-
-    - fixed message in --learn-card
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@848 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4749a40e5b7d8c1d2450133a7027564d7ed50399
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jan 9 07:31:58 2003 +0000
-
-    - prevent segfault in opensc-explorer create command
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@847 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d13155a9e356dd21ba57455e42b46290b1237598
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jan 6 23:47:04 2003 +0000
-
-    Add pkcs11-tool
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@846 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 037dbdfa13dda6ad53506ee30f2812867410a676
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jan 6 23:46:24 2003 +0000
-
-    Fix compiler warnings
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@845 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 12bfb8ba64903631f8ed99739130274e5cd9e951
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jan 6 21:46:46 2003 +0000
-
-    Cleanups and logging improvements for non-GCC compilers
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@844 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2e417f3d8d4cb82997c296a19099bd294077a00a
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jan 6 19:52:56 2003 +0000
-
-    Update from Stef
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@843 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 67608feffb659383e673c65d30cdf91b1b19d78a
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jan 6 19:52:11 2003 +0000
-
-    - Win32 fixes in case openssl is not present (Stef)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@842 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 144bb23a7c1e52d5d635e0030dcd01f8f527fef1
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jan 6 19:37:37 2003 +0000
-
-    - fixed minor pin pad bug
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@841 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 92651f0595580c5cc1158d81a876a8e4693e3657
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jan 6 19:36:23 2003 +0000
-
-    - sc_pkcs15_change_pin: small pin pad change from Stef
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@840 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9c5782e2b21492632c6dec1e41d8dfaba832dd5c
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jan 6 19:28:48 2003 +0000
-
-    - pin pad changes from Stef
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@839 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8229351cce3517f3a9ab162665299796100fd405
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jan 6 17:45:06 2003 +0000
-
-    - DEF_APDU_FIX wasn't used unless you install a config file.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@838 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4384423879789e75ad65e781888547d3c08d7762
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jan 6 12:06:50 2003 +0000
-
-    Add missing case 'w' to handle_option
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@837 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 608debfc1533184af8e84595645ecf0810b80b5c
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jan 6 11:03:17 2003 +0000
-
-    - Tools did not work unless -w switch was given
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@836 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8b659eb3d3419b3fc1b9c30d117b0b56a4439ff6
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jan 6 10:53:37 2003 +0000
-
-    Minor cleanups
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@835 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e9f97a9f31d7f16c5a0d3b248d0b555e9cd98ac6
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jan 6 10:48:37 2003 +0000
-
-    Add .cvsignore
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@834 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9b330f340849d9bf81845bba2a2daa0d2965d005
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jan 5 18:06:35 2003 +0000
-
-    - vertain platforms need time.h to understand time_t
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@833 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit bb7708335bfdce37c445a6cb12aa860f552034d3
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jan 5 17:59:43 2003 +0000
-
-    - fixed comment before sc_wait_for_event
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@832 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 04c00ef5ef04dc0e075298ecd543fa6f753033be
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jan 5 17:59:24 2003 +0000
-
-    - fixed problem with infinite tiemout in sc_wait_for_event
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@831 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 86039021af7c99a6adc29e7b986ef569440c6924
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Jan 4 13:17:40 2003 +0000
-
-    canelled -> cancelled
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@830 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ad7fb4ee05fb5219cd08349302b0353405ca253f
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jan 3 17:07:56 2003 +0000
-
-    - fixed help messages broken by previous patch
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@829 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 269967076216a75c2c91310d0f7a87c6576eb0da
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jan 3 17:07:42 2003 +0000
-
-    - instead of calling sc_connect_card, use new function connect_card from util.c
-      This function will take care of the fine print and optionally wait for
-      card insertion too.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@828 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d1064f44172de2a2dc39f71481ac4e2cca08a091
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jan 3 16:58:32 2003 +0000
-
-    - instead of calling sc_connect_card, use new function connect_card from util.c
-      This function will take care of the fine print and optionally wait for
-      card insertion too.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@827 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 65ead88908f39837172ed8ea5740752e0b2cfe68
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jan 3 16:57:46 2003 +0000
-
-    - New function connect_card() - this does all the work of connecting
-      to the card, optionally waiting for card insertion using sc_wait_for_event
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@826 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 21fe5ef918a47745a3293556ac987732a68e4919
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jan 3 16:32:06 2003 +0000
-
-    - Patch from Stef to implement sc_wait_for_event, slightly enhanced by
-      yours truly.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@825 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8d7fd40e8049879a9bf5f87307a4e9afb547e856
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jan 3 16:30:28 2003 +0000
-
-    - new error code (wait_for_event timeout)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@824 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e01554814b52057fdd08739f6b54289e0ccac67a
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jan 3 14:33:17 2003 +0000
-
-    - Patch from Stef: add support for --pin and --test
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@823 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit bd96ae9be3a0b1516cd7dd4e2723951ce50863fc
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jan 3 14:28:50 2003 +0000
-
-    - C_Sign* and C_Digest* now return the proper codes when the output buffer
-      is too small, or when the caller is doing and output buffer size query
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@822 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 675ef650739842bafe0207a268aab557d4043b9c
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jan 3 13:27:19 2003 +0000
-
-    - default apdu_fix=1 on win32
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@821 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 939d78a72dba4fc772fdeea326b21e91f4ba72ae
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jan 3 13:26:58 2003 +0000
-
-    - allow hard-coded config options
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@820 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3dc71272a5a099ecb50407258b8e89f1b2bfbb00
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jan 3 11:54:02 2003 +0000
-
-    - added support for parsing a static configuration string
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@819 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1c22c55655e0fbf2288f10e317e7799aaace5152
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jan 3 11:40:11 2003 +0000
-
-    - Try to fix pkcs11.hide_empty_slots
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@818 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0ffa466eabd3a42aef879159b78c931281c14790
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jan 3 11:39:59 2003 +0000
-
-    - sc_pkcs11_slot_t typedef added
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@817 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 36930668fbbf08f1c684ea91eeb45c325687e10b
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jan 3 11:09:45 2003 +0000
-
-    - Added run-time option pkcs11.cache_pins, default false
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@816 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8e6dc966b5aeb39c82ced8abf28c66c34da6b324
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jan 3 10:49:07 2003 +0000
-
-    - Added run-time option pkcs11.lock_login
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@815 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 93c0cab7b9f380014f96c9e9e850a3d356372ce7
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jan 2 15:31:53 2003 +0000
-
-    - win32 fixes from stef
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@814 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8abb5fa801b318e33a9dfca45eec154477411333
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jan 2 15:23:08 2003 +0000
-
-    - Getattr(CKA_MODULUS_BITS) would fail for keys w/o certificate
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@813 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c010358bbc6b13f353105934f0171e040cbf8d46
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Dec 23 19:17:44 2002 +0000
-
-    Update
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@812 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9acca0e7244d83bf0ffa955c765dac74bfa3d9fc
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Dec 23 18:47:27 2002 +0000
-
-    - Implemented new PIN verify/change/unblock framework. All PIN operations
-      are routed through sc_pin_cmd(), which builds the APDU and either passes
-      it to the card directly, or to the card reader along with a request to
-      read the PIN(s) from the reader's keypad.
-    
-      Currently, entering PIN in the standard way (i.e. via the application)
-      should still work - I have verified GPK and eToken; Cryptoflex verify
-      should work as well. Anything else needs additional testing, and support
-      for keypad input in particular (I cannot test this at the moment for
-      lack of a suitable reader).
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@811 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 604e9cd3187cfcc0f337112de58e03a71271a35e
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Dec 23 18:43:04 2002 +0000
-
-    - the AC CHANGE condition of the PIN objects we created referenced the
-      PUK, rather than the PIN. This caused the standard sc_change_reference_data
-      operation to fail.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@810 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 44195746089b1e1f39fd20e7495a2a978a727a69
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Dec 23 17:02:05 2002 +0000
-
-    - NUL-terminate strings returned by getattr(CKA_LABEL)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@809 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 079821b8c48e8343739bd6b0f0cab53ad6e78bc7
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Dec 22 23:16:47 2002 +0000
-
-    - Added --hash/-h to hash data (Stef Hoeben)
-    - Added function to translate CKR_* error codes to strings.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@808 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8c7bfd1a3d63ae48dc0f5b730fb0bb54521a9cd4
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Dec 22 20:50:25 2002 +0000
-
-    - define enough reader slots
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@807 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1ddde4e8996c98833be322231a33f5f1e58950b2
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Dec 22 14:43:13 2002 +0000
-
-    - Add access, mkdir and getpass wrappers into winconfig.h
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@806 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d1fa35e1d026fa82d84aa23589442841306f9185
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Dec 22 11:50:41 2002 +0000
-
-    - slightly changed previous patch; new flag hide_empty_slots
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@805 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0babb9119472aaee51d5f6bc192c865a7ef3b96d
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Dec 21 16:45:37 2002 +0000
-
-    - Allow the admin to configure how many slots are used per card
-      (opensc.conf; pkcs11.num_slots)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@804 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3b7ebc7c025fe9ee9a5e41927fd1ed7f95e0ec50
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Dec 21 14:10:36 2002 +0000
-
-    - clarified use of conf_blocks in process_config_file
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@803 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4c28f0dad8a707f245fc3baeb6c3a4610341f299
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Dec 20 14:55:17 2002 +0000
-
-    - prevent buffer overflow
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@802 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 34d45b2210d3a875ae73ef485447951c3dc1c309
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Dec 19 21:17:06 2002 +0000
-
-    - minor signedness issue
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@801 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 882c5b9ed313236de30e4ae0310242babdb9b692
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Dec 19 19:42:51 2002 +0000
-
-    - implemented unblock command
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@800 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 098082579691bb8a8a47951b102f0ed0249bf07a
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Dec 19 16:16:42 2002 +0000
-
-    - get rid of warnings when calling load_card_driver_options
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@799 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a7615abdeb9ac5123da57580ba440f5f6534b920
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Dec 19 14:26:54 2002 +0000
-
-    - attempt to fix DODF encoding/decoding
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@798 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6d324715da4e162d9ecaa5989b19b5cd709a1bb4
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Dec 19 10:49:28 2002 +0000
-
-    - add missing help message for --module
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@797 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a16772681c55962133ef832c702909a3b66e43b6
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Dec 19 09:34:19 2002 +0000
-
-    Update
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@796 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d22d1b13a43c5abca54e282d866d3d1246a775e0
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Dec 19 09:27:08 2002 +0000
-
-    - Another fix to mechanism handling: ripemd160 signatures should work now
-    - Got rid of get_mechanism_{list,info} in framework_ops, as they're not
-      needed anymore.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@795 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9a472d4e653303ba1b98545171401da7a0bae8d1
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Dec 19 09:24:58 2002 +0000
-
-    - fixed rsa-ripemd160 signatures
-    - Added new option --module
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@794 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1dab7bb7b6fb840ff5bac8c712b9cbaae3622c72
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Dec 18 19:28:47 2002 +0000
-
-    Compile fix from Serge Koganovitsch
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@793 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit fc26b49ee594b3d10d4a1eed81df19ce8329402b
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Dec 18 19:26:18 2002 +0000
-
-    - Values of CKA_SIGN and similar attributes now based on the pkcs15
-      usage flags rather than on some hardwired defaults.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@792 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d37c1ff58c46480a15652fdb2d19be9ffdb105c7
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Dec 18 12:15:04 2002 +0000
-
-    - fixed pkcs1-ripemd160 signature header
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@791 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0f57fdf2cf1fe3493980b2a94195e038fac2740a
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Dec 18 11:40:02 2002 +0000
-
-    Update
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@790 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 337674d65a6de08cb534c21b7a084bebbb52bc41
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Dec 18 11:34:35 2002 +0000
-
-    - Added helpful comment about --use-default-transport-keys
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@789 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b86d2e994b85316122a892c9d614b855a7cc7e86
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Dec 18 10:17:01 2002 +0000
-
-    - First shot at pkcs15 data objects from Danny De Cock
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@788 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ca82169e63d43323a32b248cfd50255f731368d7
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Dec 18 09:23:10 2002 +0000
-
-    - removed some dead code
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@787 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit aef2a271603ef5aba49408282ba92fe34ccb57e3
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Dec 17 22:13:54 2002 +0000
-
-    Update
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@786 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2e4f640c2dbce22c96907c10da99844c08846e02
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Dec 17 20:44:48 2002 +0000
-
-    - More win32 fixes from Stef
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@785 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7bc0d11c4e6930b0bc128f54fa8b427ab130ff64
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Dec 17 20:20:26 2002 +0000
-
-    Update
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@784 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 647d4bcdefaa9f69de6f5c9fb1dcff00b356e529
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Dec 17 20:16:31 2002 +0000
-
-    - Register only those mechanisms the card actually supports
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@783 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0c16b3d887e46d721b5e510afe2ea795a3e5438a
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Dec 17 20:15:56 2002 +0000
-
-    - Added shorthand rsa-ripemd160
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@782 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5ef34fc7bc5635d5033cb73c74bfe3db77f6007c
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Dec 17 20:15:32 2002 +0000
-
-    - Added support for SC_ALGORITHM_RSA_HASH_RIPEMD160 in sc_pkcs15_compute_signature
-    - rewrote add_padding
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@781 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3f584dbb1fecb2a62c000ec8cc6a7d318b118516
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Dec 17 20:14:41 2002 +0000
-
-    - Added SC_ALGORITHM_RSA_HASH_RIPEMD160
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@780 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 29dd06ba9f278137c3d30d5f6da52686e51be3a1
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Dec 17 16:00:40 2002 +0000
-
-    - more win32 fixes from Stef
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@779 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 96c953c5a3b7dbbee3cb90eb3dfbaca92f3f19a4
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Dec 17 12:37:44 2002 +0000
-
-    - generate header symlinks for libpkcs11
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@778 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d584e80d712899df18a8f4b2f02c800b7a4ec2f1
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Dec 17 11:51:07 2002 +0000
-
-    - build pkcs11 before tools, as pkcs11-tool needs libpkcs11
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@777 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ffd4773e200bc1d67b7f99270fbcc1ef99330eeb
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Dec 17 11:50:11 2002 +0000
-
-    - New application: pkcs11-tool
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@776 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 21dfabee2730b59c3986895f84f808f51528d283
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Dec 17 11:49:12 2002 +0000
-
-    - New mechanism framework
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@775 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a01b8d0b2442472a34fdb24802cca40ff0a4ec6c
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Dec 17 11:48:54 2002 +0000
-
-    - New mechanism framework
-    - New libpkcs11 utility library
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@774 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 317a0663c9a79cf868a121c669a7491ade19d9a8
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Dec 17 11:48:14 2002 +0000
-
-    - New utility library libpkcs11 - supposed to provide easy loading and
-      unloading of modules, and possibly a few other features in the future.
-      Needed by pkcs11-tool
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@773 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d997440546a7ac5d714ca4b387b2624fbbe33362
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Dec 12 10:08:23 2002 +0000
-
-    - more Makefile.mak fixes from Stef
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@772 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 87fc4815d94ae5a1645e72b6d6567743d4d8ed16
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Dec 11 08:54:16 2002 +0000
-
-    - do not segfault when we fail to parse a pkcs15 DF
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@771 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f984a3fd977f1b1bcdc7abc659e11fffe003de52
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Dec 10 17:53:58 2002 +0000
-
-    - win32 patch from Stef Hoeben
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@770 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 23158d7a9693f22e7d5657bef3186dac55e31d4b
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Dec 10 17:47:19 2002 +0000
-
-    - win32 patch from Stef Hoeben
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@769 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2e6af762c376b1a64df95337466fdb9feab2b379
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Dec 10 17:47:10 2002 +0000
-
-    - Added support for CKM_RSA_X_509 (Stef Hoeben)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@768 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9a8c3b2b20b529dc4bdd6b05863d5a028e3e10f0
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Dec 10 14:44:42 2002 +0000
-
-    - Added support for separator characters in sc_bin_to_hex()
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@767 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3acb5728decbae5fa117318734922ab8c87e7062
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Dec 10 14:31:08 2002 +0000
-
-    - rm -rf autom4te.cache - it's a directory
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@766 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit dc06b5f70231c85e0375dc7e5ae49efc8c8ae5cf
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Dec 10 14:22:26 2002 +0000
-
-    - When exporting the public key, fall back to the certificate object if
-      there's no public key with the given ID.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@765 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 717cb0cccec837c13f0467e054f97e641c1ace0f
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Dec 10 14:14:55 2002 +0000
-
-    - Modified base64 test so it actually tests base64 stuff
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@764 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9b6074b95118e8124a7ef7b9ce22eeab0b02f31e
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Dec 10 13:43:23 2002 +0000
-
-    - Added openscd and Assuan
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@763 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0b8853a1a68a2fcc42239eafd07dc35c0723ef78
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Dec 10 13:41:36 2002 +0000
-
-    - Small bugfix
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@762 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 79b5672edc6f1761deae17fd5957e0fe402b2495
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Dec 10 13:27:17 2002 +0000
-
-    - Keep the DER encoding of each PKCS #15 object in memory
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@761 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3bced8aeae6d271806cd44a3438df6c96611930b
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Dec 10 13:26:31 2002 +0000
-
-    - Changed sc_bin_to_hex() prototype a bit and removed the ':' characters
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@760 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5a568eeb7589c956ef8ce35527ee48939be0838e
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Dec 9 13:33:39 2002 +0000
-
-    - translate SC_ERROR_WRONG_LENGTH to CKR_DATA_RANGE
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@759 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6217b4adf5eb5b87b63b13d09f1508b5c4fa1346
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Dec 6 21:40:41 2002 +0000
-
-    - changed pcsc_detect_card_presence to call refresh_slot_attributes. This
-      eliminates duplicate code, and that we also pick up the new ATR if another
-      card was inserted in the meanwhil.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@758 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 868d1d7a20cfbbed87d33fe6a2c5984eacd32ea3
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Dec 6 12:49:19 2002 +0000
-
-    - added sc_bin_to_hex
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@757 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 59ca2a4b0f420b5ef3f0272917927fbd18a93d1c
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Dec 5 09:34:24 2002 +0000
-
-    - sc_parse_atr: initialize slot->atr_info.hist_bytes even if the ATR is bad
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@756 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4f35b0a753dbd2e8ee63f44fde654a45c720b3ca
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Dec 5 08:58:54 2002 +0000
-
-    - we expect an RSA key, so better make sure it _is_ RSA
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@755 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c83fa88ca86973fbb4fbd30e05f8d546b1c8f8ed
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Dec 4 15:36:33 2002 +0000
-
-    - Parsing pkcs11 IDs and paths with an odd number of bytes would scan past
-      the end of the string. Made sc_hex_to_bin more robust and change various
-      place to use it rather than doing it on their own with scanf(%02x)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@754 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 96ba7bf4d353f368dbb736c9074dd0f3376d269a
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Dec 4 14:56:50 2002 +0000
-
-    - pass the --label argument as the token label when creating the pkcs15 app
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@753 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e9c8806c7574698a56a81e84cc5c68aaa919a3ab
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Dec 4 14:56:17 2002 +0000
-
-    - properly set the TokenInfo label from user input
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@752 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 22fd834ec441e49c5fa5239456227e50e69b432e
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Dec 4 14:28:08 2002 +0000
-
-    - added comment on pkcs12 files
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@751 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c55b8d83779360ed0a7d308d70d0e5bc48c8ffcd
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Dec 4 13:50:23 2002 +0000
-
-    - Fixed CKM_SHA1_RSA_PKCS: if OpenSSL is available, use it to hash the supplied
-      data.  If OpenSSL is unavailable, CKM_SHA1_RSA_PKCS is not advertised to the
-      user.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@750 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 27c2369cee2a5eb5e9fa96f59b07e79509cd4ef3
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Dec 4 13:25:31 2002 +0000
-
-    - make sure we don't assign the same ID more than once
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@749 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d8a318902656f427f6b5fbfde8676089d28f5295
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Dec 4 13:24:40 2002 +0000
-
-    - Added sc_pkcs15init_get_secret so that the GPK driver can get the
-      MF secure messaging key.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@748 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2c280fe3514ab0aef17520641941d6e2c79751a5
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Dec 4 12:33:43 2002 +0000
-
-    - updated pkcs15init error codes
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@747 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 92adeef9a6c01469cadf07f78e470a6080744ebf
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Dec 4 12:09:07 2002 +0000
-
-    - fixed ATR for Cryptoflex 32K e-gate
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@746 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8ba7b370e4a0ed1719dcf9ff28b1da58a981c876
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Dec 4 11:57:32 2002 +0000
-
-    - got rid of default transport keys
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@745 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 946824dfe53f64ff04b2a8674de588f33ffaea12
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Dec 4 11:56:51 2002 +0000
-
-    - implement get_key callback
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@744 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit eaebdec8b0f8e648299a662a3ebea2820b4fbf6c
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Dec 4 11:56:34 2002 +0000
-
-    - Change the way we handle default transport keys, attempt to reduce the
-      risk of users entering the wrong keys and locking their cards. Here's how
-      we do it:
-       - ask the card driver (via cardctl GET_DEFAULT_KEY) for default key
-       - invoke the front-end's get_key callback. If the card driver gave us
-         a default key, pass it as default value
-       - front end is free to use default key as-is, or prompt user
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@743 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 555f612166bac391dd09ea388927c6c1a314eaa8
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Dec 4 09:59:33 2002 +0000
-
-    - implemented SC_CARDCTL_GET_DEFAULT_KEY for the flex driver; will return
-      the default AAKs for Cryptoflex and Cyberflex Access. Hope I got them
-      right.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@742 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3168c8ea26551eb35def9c2879adec990902b452
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Dec 4 09:26:40 2002 +0000
-
-    - added new cardctl SC_CARDCTL_GET_DEFAULT_KEY to get default transport keys
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@741 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6df8dbbed36fa3fd2827de1ed7502d92ddae3f05
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Dec 4 09:24:49 2002 +0000
-
-    - fixed asn1_encode_path - include length value if given
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@740 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 98e0f2d7204b32b65a423606c5b110707abc86e4
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Dec 3 15:40:53 2002 +0000
-
-    - "document" new card_driver.atr feature
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@739 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d635d53771dea906f9633f9c006d230d443993fd
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Dec 3 15:40:40 2002 +0000
-
-    - support ATR maps in /etc/opensc.conf, e.g.
-    	card_driver flex {
-    		atr = 11:22:33:44;
-    		atr = 55:66:77:88;
-    	}
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@738 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5e8a76d6dad427931dcc3777113c41459c1d5f1a
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Dec 3 12:44:02 2002 +0000
-
-    - disabled default AAK for now
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@737 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f44247070f0b75a08d90536a71eec64709e48ab1
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Dec 3 12:27:29 2002 +0000
-
-    - added Cryptoflex 32k e-gate
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@736 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 08f4d67cecbb7bccbbaed363a6bc4339efab7be5
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Dec 2 14:40:30 2002 +0000
-
-    - Avoid segfaults: if we cannot parse the certificate, do not create a
-      cert object.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@735 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 021ea9c0c323b675879852d2b58749650c649f06
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Dec 2 13:42:03 2002 +0000
-
-    - added length value to sc_path
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@734 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3f16e04a8f5ac15bae34f474ca6a0abb59e57dd9
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Dec 2 13:39:36 2002 +0000
-
-    - sc_pkcs15_read_certificate now uses sc_pkcs15_read_file
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@733 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d3c6bfd10fb97e070e6ac0206957f8a41eaa3562
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Dec 2 13:38:50 2002 +0000
-
-    sc_pkcs15_read{,_cached}_file now honor the index/length parameters from Path
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@732 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit fcfbeb184516f7db1780c97da400e6ae2601ade9
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Dec 2 13:38:09 2002 +0000
-
-    - When decoding Path, decode "length" value as well (if present)
-    - a few int -> size_t changes to suppress gcc3 warnings.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@731 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d4ac1aabaaf7450c764d1d3863634c36a4df54de
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Nov 29 10:54:12 2002 +0000
-
-    - do not crash if the application tries to log into a token w/o PIN
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@730 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 38280e479e6a7d1d88bfeb0ef4056204125e4a58
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Nov 29 08:56:32 2002 +0000
-
-    - use @libdir@ instead of ${exec_prefix}/lib - some platforms (such as
-      s390x and ppc64) put libraries into /usr/lib64
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@729 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8a01ceb81c7b8918580cfecb74e365621fd72397
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Nov 28 16:38:26 2002 +0000
-
-    - fixed typo
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@728 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 96c291470428b40789e1f8b2b20c2351b46ca89d
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Nov 28 15:58:52 2002 +0000
-
-    - lots of new manpages from Joe Phillips
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@727 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b00579d40d31259a0cc9e77facc8e6c5c4dd673f
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Nov 28 15:44:32 2002 +0000
-
-    - Fix from Joe Phillips: fix help message
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@726 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 09faf83bd03225849ba27a10c2942d76dcdc80ae
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Nov 28 15:43:54 2002 +0000
-
-    - Fix from Joe Phillips: option mismatch in --help message
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@725 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 718aa6e3618d6ae59ef4fafb1e80e901973812ed
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Nov 28 15:38:55 2002 +0000
-
-    - Fix from Stef Hoeben for win32
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@724 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 51d8983b99dc0c729adb70c080449bf15937d6cc
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Nov 27 14:27:53 2002 +0000
-
-    - Fix from Stef Hoeben to get the eid-cache stuff working on win32
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@723 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 34ba5b223cabf12feebb228de146b42386ffbe4b
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Nov 25 09:03:48 2002 +0000
-
-    - --card-driver was mapped to -D, but should have been -c.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@722 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c3b479fc825595429a06d1b8d31dac1659c1379b
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Nov 22 09:10:10 2002 +0000
-
-    - in case of an invalid session/object handle, return OBJECT_HANDLE_INVALID
-      or SESSION_HANDLE_INVALID instead of FUNCTION_DAILED
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@721 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6f4587f61252d97d53e17042f28ab43bb116b17a
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Nov 22 09:09:04 2002 +0000
-
-    - Return correct error codes in GetAttributeValue in case of
-      ATTRIBUTE_TYPE_INVALID and ATTRIBUTE_SENSITIVE
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@720 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 828819a1ecc06569893cf008073425d225fa8239
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Nov 22 09:07:43 2002 +0000
-
-    - get_mechanism_list now reports correct number of mechanisms
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@719 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4e61af2b57cbfdc3bd62d7f3c84fb618f49edbd1
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Nov 18 09:05:06 2002 +0000
-
-    Duh, revert previous patch.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@718 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9c4844ede7d308192ce9543098b4e14025ac698b
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Nov 17 20:26:25 2002 +0000
-
-    Build PKCS#11 module for win32 port.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@717 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit df6dd39e2bb5254df7edacea5f29c989026f8894
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Nov 17 20:23:35 2002 +0000
-
-    Add usage of __FILE__, __LINE__ and __FUNCTION__ macros
-    for non-GCC compilers too, where available.
-    
-    (Based on patch by Stef Hoeben)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@716 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0ca5922274f96054194926616c1cabd476ef379b
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Nov 12 14:32:17 2002 +0000
-
-    Merge with dvbsak.sf.net
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@715 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 705b498a2a22ad5fa27c7976c5d28161db8e93b0
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Nov 12 11:35:59 2002 +0000
-
-    Free yy_current_buffer since lex doesn't do it, take 2.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@714 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit de9e4916ff938dd11095dc6a346e858ecc020027
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Nov 12 10:33:53 2002 +0000
-
-    add HAVE_GETOPT_H
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@713 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d03d5511c79bde7b41d06511e07b0522ce03f752
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Nov 11 22:40:54 2002 +0000
-
-    Add @GETOPTSRC@
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@712 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8a9bd1272e731b6e7ea5d9ca4deb7266d1a6eec5
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Nov 11 22:26:06 2002 +0000
-
-    Added new functions:
-    scconf_put_{str,int,bool}
-    scconf_write_entries
-    
-    TODO:
-    - Cleanups, add more sanity checks
-    - Rewrite parts of the API for LDAP support
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@711 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit da615f3eea2ffd7c1b9f14c07924eda9fe4af16e
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Nov 11 14:27:48 2002 +0000
-
-    Oops
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@710 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d9cd213345c325bf3eec874746b613a25e6ddb4e
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Nov 11 14:08:45 2002 +0000
-
-    Checkpoint commit. Added new functions:
-    
-    scconf_block_{add,copy}
-    scconf_item_{add,copy,destroy}
-    scconf_list_copy
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@709 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3837299e1e61e94540470d01818e279336a0ac52
-Author: fabled <fabled at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Nov 11 08:22:11 2002 +0000
-
-    Updated win32 port for recent updates.
-    Noticed by Stef Hoeben.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@708 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 78d2160f469e251d4bfe21a579ef6b4f3166e611
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Nov 8 14:14:42 2002 +0000
-
-    - added SC_ALGORITHM_NEED_USAGE
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@707 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8ee38b9567bec9f365aafc0dcd63a9a55d3a00c3
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Nov 8 14:14:28 2002 +0000
-
-    - handle SC_ALGORITHM_NEED_USAGE flag
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@706 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a10fe0876a0bea4cb5dfef489228b511a8cdb4a5
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Nov 8 14:14:05 2002 +0000
-
-    - set SC_ALGORITHM_NEED_USAGE flag in algo info
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@705 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 45892e686fdb4a0506fd0dcba11a7717fcb2c6e6
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Nov 8 13:50:33 2002 +0000
-
-    - detect when a GPK card is already personalized
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@704 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit dd740e9f8c253a2403f050bc1cfe6d09da6662c5
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Nov 8 13:04:47 2002 +0000
-
-    added
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@703 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b3852705d47c6ff87d10231f18e662e426396259
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Nov 8 13:04:00 2002 +0000
-
-    - make sc_get_driver static
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@702 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ac43fede3119a006bacc7b3ab706fd6b9d55192e
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Nov 8 12:10:55 2002 +0000
-
-    - GemSafe cards have a directory 0200 with an AIDF file in it, and
-      will return a 0x6F file info block when selecting this DF. Try
-      to parse it, as far as we understand it.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@701 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7d3c61349ed2703ea80a78385e9366f94870991c
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Nov 7 14:48:03 2002 +0000
-
-    - fixed segfault in mkdir/create
-    - minor cosmetic change in do_verify
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@700 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b1881beb01a3bcf7382d1abfc5a6aa83fa349076
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Nov 5 13:47:23 2002 +0000
-
-    - added getopt option parsing (-r reader -c driver -dddd)
-      What's a test app when you can't enable debugging?!
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@699 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4811eeca8d92065bf9c648de023974b31fd3e46e
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Oct 20 09:20:21 2002 +0000
-
-    Another build fix
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@698 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 148f4051f672916e7665758232d19b97da9a9132
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Oct 19 16:51:37 2002 +0000
-
-    Various build fixes
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@697 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1d2c9e4c487996ca26defb4dc303deb8801f4b0b
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Oct 19 14:04:52 2002 +0000
-
-    Cleanups for initial win32 port, untested.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@696 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 172d86b31a35a440c208d36336c726a2e2cfcf23
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Oct 2 10:55:52 2002 +0000
-
-    - fixed typos in help output
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@695 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3ffcfcf110957e7567c9e8a8693f0aae1a98f344
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Oct 2 10:50:53 2002 +0000
-
-    - added --reader, --key-usage command line args
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@694 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b2379d40d530e8e76cf5314b787b04cb3a545e4a
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Oct 2 10:50:15 2002 +0000
-
-    - allow to generate/store decryption keys
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@693 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit fe27ed651e4873ab0e9f598583ae62702083c8b8
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Oct 2 10:49:07 2002 +0000
-
-    - fixed deciphering (apdu.le was not set)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@692 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3eab911651378741c3020dd241e5e6842db86964
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Sep 30 20:24:16 2002 +0000
-
-    - during card initialization, allow to enter SO PIN interactively
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@691 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8db1dcf49b1efe398e71bb806de3c7ca0e47b84d
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Sep 30 20:03:10 2002 +0000
-
-    - when entering new PINs on stdin, make the user re-type the PIN to avoid typos
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@690 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f0d73785fb56fcb3ee62b77607ab3341d312fe3d
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Aug 21 10:34:29 2002 +0000
-
-    - Also removed the ref variable
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@689 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2569daf4313e857cd7faeb1c7d8a7669bea1f1ec
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Aug 21 10:34:08 2002 +0000
-
-    - Removed the last goof I made
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@688 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d38851b9e4aa81fa1a763b4d0d63281a144c4e21
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Aug 21 10:22:48 2002 +0000
-
-    - Fixed prototype for sc_pkcs15_card_new()
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@687 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4c36cb96419a809d7e500b3342cd9b45a4e87993
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Aug 21 10:22:13 2002 +0000
-
-    - Used cert->key instead of key in parse_x509_cert()
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@686 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 25931fe3e501a9104299c103f9bf9e01ccfb134b
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Aug 21 10:20:30 2002 +0000
-
-    - Set bit 8 in key reference, if PIN_FLAG_LOCAL is set
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@685 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 00a2a0defd97603f11e470f0f0153c6f1ab0ab14
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Aug 21 10:16:42 2002 +0000
-
-    - Brown paper-bag fix
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@684 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0810ccf4af0b832e63ac4fa59807d9e87f4c6696
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Aug 21 10:15:58 2002 +0000
-
-    - Removed error list
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@683 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit df4b9620e39bc08c25d724113b4dad5f1662c35a
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Aug 21 10:14:37 2002 +0000
-
-    - Added card-mcrd.c
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@682 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8bbcb933a484f1a06453494f7aa0b33e4d694526
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Aug 21 10:13:28 2002 +0000
-
-    - Added driver for MICARDO 2 cards
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@681 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 82fabceeae8faf1ba867225f8d4299fe1a30bd71
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Aug 21 10:06:59 2002 +0000
-
-    - Added some new error codes to sc_iso7816_check_sw()
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@680 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 21a82c17b89d26c6f7e7dcffa7adb0dc3b4d1b6d
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Aug 21 10:02:55 2002 +0000
-
-    - Renamed read_tag to sc_asn1_read_tag and made it a
-      non-static function
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@679 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a14aaedef73c321d8eceb3d1ffeea0c6b18aaea9
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Aug 20 08:59:58 2002 +0000
-
-    - Merged GPK patches from Steve Henson (signing fixes)
-      and Joe Phillips (GPK16K ATR matching code).
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@678 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit fa04f5e4ad10d2bcdf348237830c386874089d2b
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Aug 20 08:39:11 2002 +0000
-
-    - Accessed file->type after freeing file (S. Henson)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@677 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 97119f75e8be74941eb12cd7864fe70a61855b03
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Aug 20 08:28:47 2002 +0000
-
-    - GPK16K: wildcard RSA exponent is 0 not -1
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@676 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1556f98ba579d283aa57cdfca43f190bfeb4ec62
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Aug 19 17:13:46 2002 +0000
-
-    - put the definition of USE_PKCS15_INIT into a place where it can actually work
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@675 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2fc23576393db6236afa9494ac7633b2332eb7d0
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Aug 8 20:53:40 2002 +0000
-
-    - Fixed functionality when pkcs15init is not compiled
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@674 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b18d893764f15f1dc6f5c06141304fd4bec3b82d
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Aug 6 13:51:08 2002 +0000
-
-    - certificate version is optional (v1)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@673 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e0aa31a913da20953058b7889dbbcc0565fa3883
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jul 28 18:22:37 2002 +0000
-
-    - Added ATR for GPK16000
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@672 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2c6e11fd51eb06a99f769fcb770a8369b9188031
-Author: fabled <fabled at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jul 10 06:28:52 2002 +0000
-
-    - PKCS#11 module definitions; not PKCS#11 application. Removes compiler and
-      linker warnings.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@671 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e2af6a1c8e1d9ba8c76eb9788caa26a5759ccc4c
-Author: fabled <fabled at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jun 20 13:16:22 2002 +0000
-
-    - Ported pkcs11 module to win32.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@670 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e4540f826a6670ca12a35dfaec3663aa00522580
-Author: fabled <fabled at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jun 20 12:14:18 2002 +0000
-
-    - Win32 build fixes. Should work now.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@669 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c656d839aee29d80fd53a2e4cb957ae873001e8d
-Author: fabled <fabled at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jun 20 12:08:05 2002 +0000
-
-    - Added missing getpass.c for win32 compatibility
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@668 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 638a5b307c47945902bd9e6f9787dee1134ccf58
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jun 18 18:18:21 2002 +0000
-
-    - implemented generic erase_card functionality
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@667 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3c44cb8710519b973ce30bd401ccef3e612fdb71
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jun 18 18:18:05 2002 +0000
-
-    - implemented erase_card
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@666 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit eeac475aa394f8b53486ae9d45d3a2b79a1b6b34
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jun 18 15:17:15 2002 +0000
-
-    - error message fixup
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@665 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0573ae7d3036d6dff432e5acc6516f75ce330cd5
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jun 18 12:20:26 2002 +0000
-
-    - fixed compute_signature for gpk8000
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@664 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4b79f4e68e87d8fcff404069ac8d62c396f42aff
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jun 17 15:26:36 2002 +0000
-
-    - fixed pkcs15init for GPK 8000
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@663 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d26637455ea34889e61ed8b50c73ddc34ef484bb
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jun 17 15:24:21 2002 +0000
-
-    - added cardctl SC_CARDCTL_GPK_VARIANT
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@662 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit fc8f55f318a389973e6e0de1db8af97e9cd2bf39
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jun 17 11:18:07 2002 +0000
-
-    - more tests
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@661 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 86a97c7e84578c11623777623bf4b361619aac8b
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jun 17 11:17:46 2002 +0000
-
-    - allow output of signature to stdout
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@660 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5b40de43eda340d7fd8c5cf94cddaf43364a58cd
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jun 17 10:58:04 2002 +0000
-
-    - various changes for on-board key generation
-    - key download and key generation for eToken works now
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@659 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit aad6a7fe1d77e49febf83afcfa10e9fab5e744d6
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jun 17 10:55:58 2002 +0000
-
-    - more eToken fixes
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@658 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 10c5a041bea08b36f0b5d74dfc97c8244865ec15
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jun 17 10:54:10 2002 +0000
-
-    - RSA padding header for sha1 was still broken
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@657 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5d70c9090a2ee1c5611991437832f663f04c66ad
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jun 16 21:19:37 2002 +0000
-
-    - Renamed sc_transceive_t0 to sc_transceive to avoid confusion =)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@656 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 32ec1978d4b700af03128c2e09177d69815463eb
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jun 16 21:18:05 2002 +0000
-
-    - sc_pkcs15_compute_signature() and sc_pkcs15_decipher() now select
-      the whole path specified in a private key object
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@655 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7635468ed975bc4417ff47f4ec0d4be279dfab9b
-Author: fabled <fabled at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jun 14 12:52:56 2002 +0000
-
-    - Initial support for win32
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@654 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 523b680f32dbda77b5ed1f6f79df9161392cd23f
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jun 14 12:29:19 2002 +0000
-
-    - Fix apdu->le in sc_compute_signature()
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@653 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0694da56e16ff40c89c4ee2d4b9f42c883ca888f
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jun 14 12:18:28 2002 +0000
-
-    - Reverted Olaf's patch in sc_compute_signature(). It breaks
-      government issued (e.g. FINEID) cards.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@652 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit fd7f340a08499e794f326ebbcc6fed9a4c6429b7
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jun 14 11:52:20 2002 +0000
-
-    - Added template for PC/SC 'apdu_fix'
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@651 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a94d1b26fbe943ede97eb29f117c7930a4a2bc8a
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jun 14 11:43:22 2002 +0000
-
-    - Fix for last commit. It now compiles, at least.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@650 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ed19095c71185cf8035d0d35c1b3ca227277afba
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jun 14 11:33:20 2002 +0000
-
-    - Preliminary fix for Case 4 APDU sending on Win32
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@649 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 657bfa74e08d43287fb0dd02833b9aabc55e140d
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jun 13 11:20:11 2002 +0000
-
-    - added comment/question
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@648 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 85aeed256f7ece4c6829635957c970769f4f43f4
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jun 13 11:18:31 2002 +0000
-
-    - changed APDU base from 3 to 4 on sign/decipher
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@647 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 041b46f52c8d050b1288f74a55807c679f2cd11d
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jun 11 18:17:16 2002 +0000
-
-    - corrected info output for Linear variable TLV EFs
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@646 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4f7b81ffc2014166ec85d21e40d2d4a37b411266
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jun 11 18:16:50 2002 +0000
-
-    - added switch to force software key generation
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@645 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 621ac8cbf8be7a233fe087c970470f3b3613a1b2
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jun 11 18:15:41 2002 +0000
-
-    - more code towards signing
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@644 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1a5c6d7faabe2068db4cd92877c1d8ead1076996
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jun 11 18:14:25 2002 +0000
-
-    - support for security environment create/restore/set
-    - support for signature computation (non functional yet)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@643 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6f611fdb9f097050188d86181045006febfa2ae3
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jun 11 18:13:48 2002 +0000
-
-    - added support for PUT_SECI
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@642 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e877f1e27e18db0646164ff7d02bc2441f33387c
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jun 11 18:13:23 2002 +0000
-
-    - experimental: support for cards such as eToken that store keys in "objects" below the DF
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@641 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 954cfb9f8e82f176c030bc6152c2e3f2b72a553d
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jun 7 20:29:07 2002 +0000
-
-    - first steps toward eToken key download
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@640 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 04499ddb48d57cad71f626ab75bc7a89a85745e8
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jun 7 20:28:11 2002 +0000
-
-    - properly identify supported algorithms
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@639 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c967dd808ead8176dbe9407afa56e70465d6099f
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Jun 7 20:21:11 2002 +0000
-
-    - do not try to check PIN if key isn't pin-protected at all
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@638 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7977f48aa336f36bbf012ded8d54b505a382692b
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jun 6 13:38:03 2002 +0000
-
-    - Protected OpenSSL includes with #ifdef HAVE_OPENSSL
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@637 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1b79b017e393a5ebd361c1df46596fd0f697535b
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jun 6 09:18:53 2002 +0000
-
-    - started to implement on-token key gen support
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@636 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8535127ba80ddf8f07c2b30117c1543232bc9d2c
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jun 6 09:17:52 2002 +0000
-
-    - started to implement eToken key generation
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@635 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit cdeff04e58afdb3c29525a64cc53b677b5d4842a
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jun 5 17:51:44 2002 +0000
-
-    - fix a few error messages
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@634 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f1f3d46e46292364ff84cf5179e67d2c781946e8
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jun 5 15:08:33 2002 +0000
-
-    - install etoken profile, too
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@633 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a2d21baed90e653ee5449f3588d67b1ab2379e82
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jun 5 15:02:59 2002 +0000
-
-    - implemented --erase for etoken through a recursive remove
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@632 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit cc92443702ff3c3084dc01e2cc09b7fc2472bdb0
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jun 5 15:02:29 2002 +0000
-
-    - set ERASE=$SOPIN for AODF
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@631 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7d0614f2b84b4a7748bf1fcece0e0ac31980b59c
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jun 5 12:53:30 2002 +0000
-
-    - implemented setting of user pins; minor pin code cleanup
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@630 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 47794dfff35a0c173bd95c19e3122d5dded22c4c
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jun 4 20:11:40 2002 +0000
-
-    - p15 PIN entries should now have a valid path
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@629 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d9932c62b7cd697e91e92bca0009158b00f7f648
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jun 4 20:07:33 2002 +0000
-
-    - whoops, forgot to check this in
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@628 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0a9fdb6cb74280b3ab48c4b7b32f2a29551308db
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jun 4 20:06:33 2002 +0000
-
-    - setting an SO pin works now
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@627 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f74e8bb71261b037104924176954729a6b3384cd
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jun 4 19:43:30 2002 +0000
-
-    - first stage of pkcs15 initialization sort of functional
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@626 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3eeaa8f0b831ee19cf25ccc1690f3ef5ae4b597d
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jun 4 19:42:50 2002 +0000
-
-    - fixed bad return value in do_init_app
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@625 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c6a5018a4febe5080f7f7da99f373643efa5ba0a
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jun 4 19:42:17 2002 +0000
-
-    - pin verification works now
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@624 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7828d8242c418ddf329cf3c3d23d1cb44579f313
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jun 4 09:38:37 2002 +0000
-
-    LDAP detection fix, require ldap.h.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@623 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0c07f24de084e432713a4c92531fa75c7408591b
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jun 4 08:51:03 2002 +0000
-
-    - added some eToken code (not functional yet)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@622 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 03559c47d0f79c82a9f9c637c9e969b32ecf92d4
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jun 4 08:50:39 2002 +0000
-
-    - added eToken specific cardctls
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@621 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f973a3d942302f8973bf96d43536bd21f34deaca
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jun 4 08:50:17 2002 +0000
-
-    - fixed some minor glitches (potential buffer overflow in read_dir;
-      missing SW check)
-    - added card_ctl for put_data_fci
-    - added some debug output
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@620 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5fba18d152a90318f1fe059b64c8ed607750b2f6
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jun 3 15:28:43 2002 +0000
-
-    Fix for previous commit
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@618 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2846d6ce3b7a04e8c777b8eb93599d7c4e4ead16
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jun 3 15:18:47 2002 +0000
-
-    Preliminary MacOS X build support, untested so far.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@617 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 28b4a1b9f85faaed0c4a76292375f8cc2bf10137
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jun 3 15:05:58 2002 +0000
-
-    - iso7816_set_security_env now has correct values for P1
-    - Improved detection of SetCOS cards
-    - Changed the default CLA byte in card-setcos.c to 0x80
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@616 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 82d7cf338cb1c220624836827b02c1b25f6d395f
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jun 2 21:43:16 2002 +0000
-
-    - Preparation for version 0.7.0
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@615 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f49e681c921e0069f3f70b4f392bed0122545b5b
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jun 2 21:39:07 2002 +0000
-
-    - do our own chunking in read/write binary
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@614 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f9d33b1aa80f6c59d1a96e0e773c8bbf7018d722
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jun 2 21:04:50 2002 +0000
-
-    Upgrade for the OpenSSH 3.2.x release
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@613 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ff1ce13862bec2388be54297db6579df777ade67
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jun 2 20:46:40 2002 +0000
-
-    Disable pkcs15-ldap until it's working.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@612 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 836b1ada2d9f06061690fc50884668a972904a08
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon May 27 10:03:51 2002 +0000
-
-    Minor build fixes
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@611 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2b433941dd23e388f98f80331fe823e45b7e9321
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon May 27 06:41:21 2002 +0000
-
-    Build fix for previous commit
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@610 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7c94d7d8d38d4030f1697b1ee2149c239f34a5bb
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun May 26 12:31:23 2002 +0000
-
-    - Several patches to fix behaviour on 64-bit architectures (by
-      Jochen Friedrich)
-    - Fixed one bug in sc_copy_asn1_entry(), one in
-      sc_pkcs15init_add_object() and one in pkcs15-crypt
-      (patches also by Jochen)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@609 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c181dabe3f221cf701d111f023b2f672b33450e8
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue May 21 19:41:09 2002 +0000
-
-    - Fixed parsing of AUT keys in pkcs15init (patch by Jochen
-      Friedrich <jochen at scram.de>)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@608 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 20da3e23d57f86b91f9d0b9e03e6c2bec96f9384
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue May 21 14:19:07 2002 +0000
-
-    scidi merge
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@607 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 25cf9756ede56b328e33cefd872ac86839a46de7
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon May 20 09:19:41 2002 +0000
-
-    Minor GCC warning fixes
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@606 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 798915ab36ddcd0dac04777f8d419425e83483bf
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun May 19 22:50:00 2002 +0000
-
-    AIX gcc fix
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@605 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e0993d24fdea5d43cc4e7003f6c4695a0dfe0119
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue May 14 19:20:44 2002 +0000
-
-    check readline.h fix
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@604 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 822e96a58e07f408abd205e05c919f190e794deb
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon May 13 12:23:28 2002 +0000
-
-    Add comments
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@603 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e681dc41654225607b85a990f834fab52529a45d
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon May 13 12:23:21 2002 +0000
-
-    Warning fixes
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@602 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d9a788350ddc30d620cb5647ccc58bca7ece951d
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu May 9 10:34:18 2002 +0000
-
-    - Applied a patch by Werner Koch that brings the TCOS driver
-      up-to-speed
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@601 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 03d58e7956030115e244d92cde5deca8d95b9a07
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu May 9 10:22:42 2002 +0000
-
-    - Applied a patch by Matthias Bruestle <m at mbsks.franken.de>:
-    - Changed the case of GET RESPONSE in card-default.c to 2 short
-    - Added ATRs to Flex, GPK and TCOS drivers
-    - Changed value of maximum Lc in card.c to be 255
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@600 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f5c2f1a5c862ae957177d24a0f1f6c9c2552e06a
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed May 8 08:15:44 2002 +0000
-
-    More cleanups
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@599 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f7ffdbd7940e5c4c4b0d8aab3f18ae82e7ad8324
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed May 8 07:04:13 2002 +0000
-
-    Add pkcs15-profile.5
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@598 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0820a4ccc435453d63f241837968f2d9e42416a2
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed May 8 06:50:45 2002 +0000
-
-    pkcs15-profile.5 $(pkgdatadir) fix
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@597 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 33b5cf69a515cd76d34055c6c4575aed0ee6c2a3
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue May 7 12:49:18 2002 +0000
-
-    Minor ${prefix} -> ${exec_prefix} changes
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@596 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit bbf3a8f730a207c8985a817c2a89917191483c60
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue May 7 09:35:55 2002 +0000
-
-    Removed opensc-ssh
-    Updated README
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@595 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3c63878fb363b42a33f665788c329dce7c028282
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon May 6 14:06:25 2002 +0000
-
-    Add comments for previous fix
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@594 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit de9cc2e67a671f0b1367158494428fddc238bb83
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon May 6 06:36:11 2002 +0000
-
-    Reworked scrandom ugliness, no longer builds a shared
-    library nor seeds OpenSSL internally, if available.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@593 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e1b6a03ccf130eb4a9cc90b860d694a498f0f350
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 30 13:35:15 2002 +0000
-
-    - another linux-gnu* => linux* fix
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@592 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit af83cde5c6386643260012728ec1290d49a6909c
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 30 11:55:56 2002 +0000
-
-    - make it compile on SuSE 8.0
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@591 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7b22339795c8b320ef4b41c2d56e657460cb8d7e
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 30 09:46:36 2002 +0000
-
-    - work around brain damage in automake 1.6.1
-      (shouldn't they change the name to autobreak?)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@590 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0bdac40f649df8925f238932b260f6f4409f927c
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 26 07:56:39 2002 +0000
-
-    Disable a sanity check that was needed at least with OpenLDAP 1.2.x,
-    it seems to block certificate CRL fetches with more recent versions
-    of OpenLDAP (2.x)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@589 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c85d42a523bff2f2bb2ff7b06d11831e48f9b019
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 26 06:35:57 2002 +0000
-
-    Fix SSL/TLS support for OpenLDAP
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@588 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit af8511ee3769f83db7fec6bf7028040d4931a729
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 23 09:17:24 2002 +0000
-
-    API upgrade
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@587 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5c7c2750b3d183a730c4486458207b0fd0d4453f
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 23 08:18:12 2002 +0000
-
-    - added two regression test scripts
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@586 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7f6453d715e77b9ef69d6da59c39b8aab93cf81b
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 23 08:17:06 2002 +0000
-
-    - sc_pkcs15_decipher now takes a flags argument, so we know when to
-      strip off any pkcs#1 padding.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@585 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f618b754a27fa1db77d98486e3c46bbe5deec83a
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Apr 22 23:01:57 2002 +0000
-
-    - Applied a patch to card-etoken.c that gives
-      ACL support; patch by Markus Frield
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@584 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 74b7e39263ebd8487fcf7b11cc0a340ca2243590
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Apr 22 18:37:57 2002 +0000
-
-    - allow setting the cert_info authority flag
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@583 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b9b0a1f2ef3b06aae3ecc660940843a0849dbce8
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Apr 22 18:03:50 2002 +0000
-
-    - fixed pkcs1 padding for rsa-md5 signatures
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@582 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c66dcb5f3317d576824257ba782fc008e4a31420
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Apr 22 08:00:52 2002 +0000
-
-    - changed do_select_parent per request from Juha. Hope this doesn't break
-      anything... :)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@581 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f7fcaee513186440014e2a5dfc7fc0c7ca673742
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Apr 21 18:54:10 2002 +0000
-
-    Extract certificate crlDistributionPoints and store it in sc_pkcs15_cert
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@580 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9c39ca7e617327b4b55fece879c82ce254051278
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 19 20:07:56 2002 +0000
-
-    - Added 'force_card_driver' option
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@579 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 79bf099f0d02b3c7943d52a9b1bba0c9df576d46
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 19 18:01:49 2002 +0000
-
-    - Small update to MioCOS pkcs15init driver
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@578 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 68e6292c446146f9d26af120cd377b1355216e70
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 19 17:24:28 2002 +0000
-
-    - Update TODO
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@577 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 728928401a718b225e73dcdf9de7ede701e60f09
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 19 17:02:49 2002 +0000
-
-    - Some fixes to the MioCOS driver
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@576 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9251d131aeead5d8eca46bd752d723e174dd5d99
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 19 17:02:15 2002 +0000
-
-    - Added support for extractable keys on the Cryptoflex
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@575 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3dccd639899fdce44b14b7f4fa0e555ccc0acd46
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 19 14:23:31 2002 +0000
-
-    - C++ support. Compiles with gcc/g++ for Linux, otherwise
-      completely untested.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@574 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6b08ebf2eb5bcb74ea6f96c6491dfe8b0a08714c
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 19 10:01:01 2002 +0000
-
-    - fixed DF handling
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@573 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 546f920fc145e5d24d30c1656401aead553effdc
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 19 09:22:44 2002 +0000
-
-    - PKCS #15 objects and DFs are now stored with linked lists
-      in struct sc_pkcs15_card; this way we can have 'floating'
-      objects that don't belong in any DF, for e.g. generating
-      public key objects from certificates
-    - Removed some unused function prototypes
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@572 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9a6b3452a2e8f1a904c8113e8026e0f706689ea7
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Apr 18 15:01:02 2002 +0000
-
-    - sc_pkcs15_find_prkey_by_id and sc_pkcs15_find_cert_by_id now
-      return all private keys and certificates instead of only RSA keys
-      and X.509 certificates
-    - Removed some obsolete PKCS #15 initialization code
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@571 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b4af9ab16eab0258b70ff6b62a774623c7bdb4ff
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Apr 18 14:59:12 2002 +0000
-
-    - Added a missing SC_ASN1_CTX flag to DSA key ASN.1 entries
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@570 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit aac9e6fdec603f8d08c5ddc4266be88e74b89bd7
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Apr 18 11:59:32 2002 +0000
-
-    Minor warning fixes
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@569 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f6c8cb4847a2756039334cee05c51008ba42c942
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Apr 18 11:00:08 2002 +0000
-
-    - DSA signature support
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@568 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7cd061c91aa1bc6af226db312035b9bc765e7308
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Apr 18 10:59:35 2002 +0000
-
-    - added a bunch of prototypes
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@567 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3cdde958481c14ab1164a34c45d3b3c5cd30f5fe
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Apr 18 10:59:13 2002 +0000
-
-    - sc_pkcs15_find_pubkey_by_id
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@566 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c9aba0d1cadaa36188565c2654d1fa7e9235278c
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Apr 18 10:58:48 2002 +0000
-
-    - fixed bug with DSA pubkey de/encoding
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@565 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 939efa48a016121b206bb4400ae3f511599223cd
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Apr 18 10:58:11 2002 +0000
-
-    - small fix for reading the private key file
-    - added sc_pkcs15_{erase,free}_prkey
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@564 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 842ac8d59749403112eab2c7e86f4f4ccbe130da
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Apr 18 09:13:18 2002 +0000
-
-    - don't print modulus length for DSA keys
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@563 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 176e825130eaeb61a4276e9f641d4ef6cd54baac
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Apr 18 09:12:54 2002 +0000
-
-    - fix for storing DSA public keys
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@562 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b08c5ef702b6e91d2608676fc48fe9bf9f07e80f
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Apr 18 09:12:26 2002 +0000
-
-    - bug in check_key_compatibility()
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@561 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 94cb1e0219106c136fbce2e67320a10fc950b313
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Apr 18 09:11:18 2002 +0000
-
-    - encryptedContent didn't have proper ASN.1
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@560 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6d8fe463a47f4d49ec8dc587158b021e1e274115
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Apr 18 09:10:54 2002 +0000
-
-    - properly encode/decode DSA public keys
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@559 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2b9ae3613b8d852ceb6a1bddcbb588bbf5dbcfd9
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Apr 18 09:10:33 2002 +0000
-
-    - fix algorithm_id decoding
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@558 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2a3e6e273d29523d4812aab14811cb2959d29607
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 17 20:47:18 2002 +0000
-
-    - starting to support extractable keys
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@557 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0877a5da7462aceb740488e2fbb6acc7e2be74b0
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 17 20:46:56 2002 +0000
-
-    - display non-RSA keys
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@556 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2b65c73cfb8068cf458dac33513e5b5f0f3f4502
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 17 20:45:15 2002 +0000
-
-    - missing prototypes for {de,en}code_prkey
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@555 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f23480d491f82ae047f9aaaac6e04e8cac6424eb
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 17 20:44:54 2002 +0000
-
-    - return objects when searching for a generic type (e.g. all PRKEY objects)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@554 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9c502889d41a99909f8358b6a0c8fa985f617f1f
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 17 20:44:25 2002 +0000
-
-    - correctly initialize PKCDF2 params
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@553 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 736d250c343a0d92870a040a46e8e9900b36f23c
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 17 20:44:06 2002 +0000
-
-    - fixes for PrKDF encoding/decoding for indirect-protected
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@552 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 79d0902155489c771d904306fcca0b4f19211a59
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 17 20:43:12 2002 +0000
-
-    - fix for decoding CHOICE
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@551 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b7a22e2df67e893a2b19449eb360634867ed4f1a
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 17 20:42:54 2002 +0000
-
-    - new error code SC_ERROR_INCOMPATIBLE_KEY
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@550 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9c5754e6efedbf78ae719fa3d70753415301aac8
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 17 18:34:32 2002 +0000
-
-    - handle non-RSA keys as well
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@549 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit fcbbb6c3e5579ed743927496105b803f6e4c9fa5
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 17 18:33:27 2002 +0000
-
-    - eliminated RSA specific code to support generic pubkeys instead
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@548 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 95a7fafe31c941111dadf61482660000e7777bae
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 17 18:32:06 2002 +0000
-
-    - use SC_ASN1_ALGORITHM_ID when decoding x509 certs
-    - handle certificates with non-RSA keys as well
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@547 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5d8b1000ca6e6d0e8142e7fa7698f8a84ea8a1b1
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 17 13:36:35 2002 +0000
-
-    - eToken patches from Markus Friedl
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@546 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f87bbcee4ce51f8b6ebb6e07817cb6dd187fe662
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 17 13:34:40 2002 +0000
-
-    - some fixes to the ASN.1 we generate
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@545 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0e24215b1f90c3383c4eb7b9e363924f5e2385a4
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 17 13:13:44 2002 +0000
-
-    Minor warning fixes
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@544 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5fb2db70fef948ddd861a8b94a6b409d03b22804
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 17 12:20:31 2002 +0000
-
-    - --read-public-key will work for non-rsa keys too
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@543 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a5dd0dbb9959d8e343bd5141ed538a4436456e30
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 17 12:19:57 2002 +0000
-
-    - support NULL tag for encoding/decoding
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@542 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 228b6645c83da4947b2cdb9febf707149f0ee564
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 17 12:19:43 2002 +0000
-
-    - correctly encode AlgorithmIdentifier w/o params as OID+NULL
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@541 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1424c838543da6039f194c8fb438a1f558ca84e1
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 17 10:33:26 2002 +0000
-
-    - minor bugfix
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@540 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b05cc1e5577dcfa4cd7e5ff81c32d4e6794d2139
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 17 09:06:55 2002 +0000
-
-    - error out for non-native keys
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@539 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 19132bea5959504ab3bdfdac8b9616a789a132de
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 17 09:06:42 2002 +0000
-
-    - new error code SC_ERROR_EXTRACTABLE_KEY
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@538 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8ef6b71bb605814d9c57e871c56bcf481d77e3f1
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 17 09:01:54 2002 +0000
-
-    - added new files
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@537 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 56191b8d20842fd7cc9ea31df914561a42b3d1b3
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 17 09:01:49 2002 +0000
-
-    - functions for file content protection
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@536 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0a458d66b910584d7da76b36bbe29c0834b1bb04
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 17 09:01:11 2002 +0000
-
-    - new file path type SC_PATH_TYPE_PATH_PROT
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@535 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit af262521e7909608986458160bdf2260eb295da7
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 17 09:00:52 2002 +0000
-
-    - new generic function sc_pkcs15_read_file
-    - structs and functions for data wrap/unwrap
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@534 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 29c7639bbdef745b6681380efdf1ad344298cde5
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 17 09:00:16 2002 +0000
-
-    - new generic function sc_pkcs15_read_file
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@533 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 996f5b7f2e841005021dc6a92787bcb628c4d14c
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 17 08:59:52 2002 +0000
-
-    - renamed sc_pkcs15_parse_pubkey_rsa -> sc_pkcs15_decode_pubkey_rsa
-    - added sc_pkcs15_decode_pubkey_dsa
-    - sc_pkcs15_read_pubkey now uses sc_pkcs15_read_file
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@532 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d248263d36ab65c71d48ca98fd565132be592985
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 17 08:58:57 2002 +0000
-
-    - initial support for non-native keys
-    - implemented generic functions sc_pkcs15_{encode,decode,read}_prkey
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@531 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b63cfcf70d468f1a69df79c5f38e16836d5a8076
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 17 08:57:29 2002 +0000
-
-    - renamed sc_pkcs15_parse_pubkey_rsa -> sc_pkcs15_decode_pubkey_rsa
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@530 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b4d224b5a1b034b0c20abfec376208c5b6e2cdf0
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 17 08:56:58 2002 +0000
-
-    - added SC_ALGORITHM_{MD5,SHA1,PBKDF2,PBES2} and corresponding
-      AlgorithmIdentifier parameter structs
-    - added params pointer to struct sc_algorithm_id
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@529 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5eb1921a641d3baf1efe63f7ab56e40db3bfc5de
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 17 08:55:39 2002 +0000
-
-    - new error code SC_ERROR_PASSPHRASE_REQUIRED
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@528 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 77a2db5f5e3356ed060286aa3a501f88a4e7631c
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 17 08:55:06 2002 +0000
-
-    - Moved ASN.1 handling of AlgorithmIdentifier to separate file
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@527 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f49cb6b0f1b8574558453f0fccaac4d6df49b54b
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 17 08:54:36 2002 +0000
-
-    - implemented encoding of OBJECT IDENTIFIER
-    - enhanced support for encoding/decoding of CHOICE
-    - moved encoding/decoding of AlgorithmIdentifier to separate file,
-      and added encoding/decoding of algorithm parameters
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@526 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 789d88fb1236e91e8d48891325959299d850aa98
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 16 10:33:28 2002 +0000
-
-    Minor Solaris fixes
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@525 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7c9e5d667ed495cf3fc7b995b4fda5f93735fa22
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Apr 15 18:03:45 2002 +0000
-
-    Add stdlib.h
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@524 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 596220e82116eccb4bbfb7065a369226223216f4
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Apr 15 13:42:10 2002 +0000
-
-    - pkcs15-init does not require openssl anymore
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@523 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1ec7a85e51349d87c45a074bb245e35e0ca37d6b
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Apr 14 13:52:58 2002 +0000
-
-    libsc -> opensc
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@522 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 43ecd78941adefb8e803eec8cfbc5eb5f00ce956
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Apr 14 12:43:47 2002 +0000
-
-    - Fixed ACL handling in MioCOS driver
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@521 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9f7fbf2b8ccbf3d49cfba21f0f8723b76e61ddc0
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Apr 13 19:00:37 2002 +0000
-
-    - C_CreateObject now understands X509 certs (untested)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@520 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f5dc78bf440b196f2035a22744d5e074000d96b1
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Apr 11 15:53:05 2002 +0000
-
-    - minor fix
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@519 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2b8b355992cfb4d42e38727920b92d050afd1747
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Apr 11 15:17:33 2002 +0000
-
-    - implemented C_CreateObject for public and private key objects
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@518 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 881de42ca0702a771d7e3936ccb2f856da9cbd4c
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Apr 11 15:14:40 2002 +0000
-
-    - changed to reflext pkcs15init_store_foobar update
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@517 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 55a14b0ebf78c811dcc2e1c70545bcd810a2e235
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Apr 11 15:14:12 2002 +0000
-
-    - all sc_pkcs15init_store_foobar functions now take an additional struct sc_pkcs15_object ** argument
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@516 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b6119fc92e4c565a122eaeaeaf1a7e979351ec4d
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Apr 11 15:13:09 2002 +0000
-
-    - avoid unchecked memcpy
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@515 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 34a3912fdfb8d29d9dbdd94cd47abcfa8f199052
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Apr 11 15:12:41 2002 +0000
-
-    - in set_security_env, select the PK file prior to read_record
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@514 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit cfe585e4792ae708e8cec55d814a9624bda53794
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Apr 11 14:31:32 2002 +0000
-
-    Remove openssh-3.0.2p1-patch.diff
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@513 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3ec97d981568ab3da153b9cb885284759628238c
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 10 23:10:47 2002 +0000
-
-    - Added a missing file from a previous commit
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@512 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 87e27b00a4a1c67de4dd01d44c1cc3e5998eb8a4
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 10 23:00:38 2002 +0000
-
-    - Changed an error code as per Andreas' suggestion
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@511 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 52c433a7ae523fb31ce945a957fe2d0675ed1c03
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 10 22:25:44 2002 +0000
-
-    - Added support for Aladdin eToken PRO; patch by
-      Andreas Jellinghaus <aj at dungeon.inka.de>
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@510 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0ab6d49be9cec20bc0e86f6d1c6e51c3e2341bc8
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 9 13:26:51 2002 +0000
-
-    Minor cleanups
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@509 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 321c81571a95166490c3ecec6d4bc138a829b53e
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 9 12:32:56 2002 +0000
-
-    - Update ChangeLog
-    - Update src/openssh/README
-    - Removed obsolete patch for openssh-3.0.2p1
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@508 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e09a184f7135dd161dca8d5bcc1511282e612106
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 9 12:20:07 2002 +0000
-
-    sc-ssh -> opensc-ssh
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@507 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 91609ed93c7fa796d83a517e21b0643003b7fdf0
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 9 11:34:00 2002 +0000
-
-    Free memory
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@506 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 644f4b0c7ef3dc17a15b6cc86eb9eeb4cec41867
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 9 11:24:33 2002 +0000
-
-    - Revert previous patch since it leads to a sigsegv if we
-      parse file multiple times. Damn it, so lex allocates a 16kB
-      buffer that it won't free any time. At least this could be
-      solved some other time by rewriting a separate line parser
-      without lex.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@505 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9b2a5fe7272f31bc0220bb465a659be319bf2894
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 9 11:01:04 2002 +0000
-
-    Free yy_current_buffer since lex doesn't do it
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@504 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 45e882f11fd0b73eac240444fcc0914c033646af
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 9 10:59:40 2002 +0000
-
-    - Added a missing include file
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@503 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 53a112eda223cb8f7f06269208238aac5bb3ab72
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Apr 8 15:51:19 2002 +0000
-
-    - implemented C_InitPIN (based on pkcs15init)
-    - C_Login now understands the SO PIN.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@502 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 72856a7c04b4109291a2fad57c0a8df6d7de804c
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Apr 8 15:50:11 2002 +0000
-
-    - cleanup
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@501 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ec35a9215a23f016ac4a9ada31cb50d1103c6bd3
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Apr 8 15:50:02 2002 +0000
-
-    - free some more memory in sc_profile_free
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@500 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 01d4f00dea49e4343d5fae28dd6f4b5208567a41
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Apr 8 15:49:39 2002 +0000
-
-    - SO PIN is now optionally: if you want to use it, pass a PIN to
-      sc_pkcs15init_add_app. If you don't, don't.
-    - sc_pkcs15init_erase_card checks whether the erase_card funcion ptr is NULL
-    - check SO pin len in sc_pkcs15init_add_app
-    - In sc_pkcs15init_store_pin, if the caller didn't specify the auth_id,
-      select one automatically
-    - added sc_pkcs15init_unbind
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@499 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3e11f90b22e97c8a38c7d03ecfca78245065f8ab
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Apr 8 15:46:44 2002 +0000
-
-    - added sc_pkcs15init_unbind
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@498 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 59cd95af2c31e5480eed2c3594fe83a442bc1d7b
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Apr 8 15:46:27 2002 +0000
-
-    - SO PIN path was not propagated to the caller
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@497 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2d47103692fb40df4a3060c7f187c73fae65b174
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Apr 8 15:45:28 2002 +0000
-
-    - implemented sc_pkcs15_find_so_pin
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@496 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 01e506e5edb0cb1a8c2f5664e0ead5ddebeaa9e0
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Apr 8 15:45:13 2002 +0000
-
-    - When the application selected the EF, then the container DF, all
-      PIN info would be lost.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@495 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b504fa07202f1c7ef3c3353953eb8bc30268bc38
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Apr 8 14:57:20 2002 +0000
-
-    Remove scam_framework_ops->atrs
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@494 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 13ab0f59937b8f2d64cf25fc67c294acfc5d4160
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Apr 8 09:29:37 2002 +0000
-
-    - store SO PIN entry in AODF
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@493 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1f8790e22ee8d5de0b0ec41ee87eaa24e3ef5b28
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Apr 8 09:29:15 2002 +0000
-
-    - textual pin flags; defer pin file lookup until sc_profile_finish
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@492 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 24a45e2aad27e6422c9c68ce75e13d4e6b5a59df
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Apr 8 09:28:26 2002 +0000
-
-    - implemented SO PIN handling
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@491 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c57272353ad0e2e1e1cb716a24b6517d2c921eb9
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Apr 8 09:28:02 2002 +0000
-
-    - enable SO PIN
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@490 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6e3a42fba0144c4ff3c57be64d7302382268b57f
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Apr 8 09:27:48 2002 +0000
-
-    - add pin descriptions
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@489 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 517395b2eb45483eb515b94e04650898f0da2d81
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Apr 8 09:23:17 2002 +0000
-
-    - pin flags were not encoded correctly
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@488 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit be9518e8a681fbf02cb1d48eb22ba5446adea019
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Apr 8 08:27:34 2002 +0000
-
-    - Upgrade all modules to store method specific internal
-      data to scam_context->method_data
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@487 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 23fa9aeed49c5336abadbf78c903ba10e948d528
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Apr 7 19:36:59 2002 +0000
-
-    Started to rewrite parts of scam:
-    - Combine lib{pam,sia}scam into libscam
-    - Get rid of the need for handles, printmsg
-      and logmsg in the scam_framework_ops
-      structure.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@486 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 60fc3811ebf782b2f0ed3622df03488ff591e1d0
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Apr 7 13:15:31 2002 +0000
-
-    - Added support for user-defined serial numbers in
-      pkcs15-init and PIN flags in profiles
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@485 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2936e46e129fdcb6f40dff530687fcc703655974
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Apr 7 10:21:00 2002 +0000
-
-    Warning fixes
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@484 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5259182d3efe18938b0fb3c67e8c17903d31547c
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Apr 6 15:04:14 2002 +0000
-
-    - Changed CLA byte to 0xA0 in miocos_delete_file()
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@483 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 74d0b3d729e69c5a27611ee04dd4731c2978dbb5
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Apr 6 14:52:50 2002 +0000
-
-    - Added user PIN finding to sc_pkcs15init_store_certificate()
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@482 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1b344d3ee4b52ba8a346777acb2c4270294bca12
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Apr 6 14:21:40 2002 +0000
-
-    - Added certificate templates
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@481 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3e9d1470ae67a753c757000ec1bbfbc7e1f5bcec
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Apr 6 12:14:11 2002 +0000
-
-    - Added PCKS #15 ASN.1 module
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@480 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6e0b7dea2c9a1b267be6acd8f29124d7910fa4e2
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Apr 6 12:02:28 2002 +0000
-
-    - Divided errors into different groups, added new ones
-      and renamed some
-    - Moved sc_strerror() to errors.c
-    - Added a 'sensitive' flag to struct sc_apdu
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@479 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f781a14ae43ca0fa0e759f3ed0bcfb525f497d26
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Apr 6 08:21:40 2002 +0000
-
-    Fix some typos
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@478 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6efa88796f15838606cd692e5cfac6e2989170b3
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Apr 6 08:02:58 2002 +0000
-
-    Add errors.h and types.h
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@477 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 26d2f25b76e471aca7d80556972177582b2ac421
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 5 18:49:03 2002 +0000
-
-    - include/opensc fix
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@476 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7e5af944550ecf9cf278a5289d9a6947061c100b
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 5 18:19:53 2002 +0000
-
-    - C_InitToken: after creating the application DF, switch to the
-      normal pkcs15 framework on the fly and mark all tokens as initialized.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@475 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 11c937991bbe4b3bff2af5ae57ab5fdf6bcd26a9
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 5 18:10:17 2002 +0000
-
-    Change calling convention for sc_module_close()
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@474 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ddb49064d649bcfcbd3edfeb17aef7b77a72ac41
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 5 15:51:34 2002 +0000
-
-    Minor warning fixes
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@473 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0875849c6115074348f174386bc5b531fe3b52e5
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 5 15:06:33 2002 +0000
-
-    - Started to split opensc.h into smaller parts
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@472 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 23ff14fb06fcb09de0d58071dbc6ae2b653a27fc
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 5 15:04:35 2002 +0000
-
-    - added erase command
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@471 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d4ee9df5ceb648f8447adfd89d61dd98bbbfe380
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 5 15:03:03 2002 +0000
-
-    - added new pkcs15init framework that implements C_InitToken
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@470 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 829e7f67126f8e4bb0664907db8dd4879212e76c
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 5 15:02:41 2002 +0000
-
-    - added initialize() function to card ops vector
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@469 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d28bb6082ac416db8cbfa0c6c313ae2ed9952355
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 5 15:02:18 2002 +0000
-
-    - Added C_Initialize
-    - Minor bugfix in C_Finalize
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@468 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 84943898b9048f62428d96a0fd8fcc187de78472
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 5 15:01:43 2002 +0000
-
-    - add CKF_TOKEN_INITIALIZED flag
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@467 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c1a8dc8c23b07bc491bfd85784c7fdf599d86d87
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 5 14:56:21 2002 +0000
-
-    - implemented sc_pkcs15init_get_{serial,amnufacturer}, fixed bug
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@466 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 65d82412cb44b3642424273fa5f7d86ad045da39
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 5 14:55:37 2002 +0000
-
-    - try to free all memory we allocated
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@465 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 93ee58e07eb64ac7d2bd0e4ff5968b53957e9a54
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 5 14:55:07 2002 +0000
-
-    - during add_app, just complain about SO PINs but don't error out
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@464 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 22636c2df9e57e71c19ccc8e8f1909de43b5117a
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 5 14:46:44 2002 +0000
-
-    - Added SC_ERROR_FILE_ALREADY_EXISTS
-    - Changed call convention for reader finish()
-    - CT-API driver now frees its resources correctly
-    - Added year 2002 to some of the copyright statements
-    - sc_pkcs15_decipher() and sc_pkcs15_compute_signature()
-      now select only the parent DF of the private key file
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@463 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a23faf7a8ae1dbf0793a9cc45041539a207f338b
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 5 14:23:07 2002 +0000
-
-    Symlink all necessary headers
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@462 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 41b184855b95b89f366c8f0ce72e016749b67c07
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 5 14:00:27 2002 +0000
-
-    - Fixed a bug in sc_pkcs15init_bind()
-    - Added PIN code padding in do_verify_pin()
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@461 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3938287c7136d2ebbca5be43d95faa15ebb35d18
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 5 13:49:52 2002 +0000
-
-    Add missing directory
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@460 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 076a26bbac49e7b3e0faa8e3f129ce6c48155569
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 5 13:48:00 2002 +0000
-
-    Rework the header structure
-    
-    Currently fails to compile, unless you symlink
-    all the necessary headers to src/include/opensc
-    by yourself.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@459 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d81d10ba9013aa7ed9a733c7abb45ea7e578ee5f
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 5 10:44:51 2002 +0000
-
-    Upgrade sources to use new headers, part #1
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@458 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 97faef3c6f60dd1dbcbafb8dde8845b2f9b6d7e7
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 5 10:37:29 2002 +0000
-
-    Obsolete.
-    
-    opensc-emv.h, opensc-pkcs15.h --> emv.h, pkcs15.h
-    sc-asn1.h, sc-internal.h, sc-log.h --> asn1.h, internal.h, log.h
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@457 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit fbf86e6728fc34d7a1cc7f0346b1c251946b4651
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 5 10:25:14 2002 +0000
-
-    Install headers to ${prefix}/include/opensc
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@456 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 10e95ba4b66df6101cc29105d4b05716367c30f0
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 5 10:06:10 2002 +0000
-
-    - don't include profile.h anymore
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@455 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1b113614b33d18685c82312f56b416a39efc31ca
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 5 10:05:50 2002 +0000
-
-    - miniscule API changes so that applications don't need to include profile.h anymore
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@454 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 33890a1545b3dcfdd42d60ebbb54a6f2591fba73
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Apr 5 08:45:14 2002 +0000
-
-    - file type is now also a struct map
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@453 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit dc444cde54b25b1f1b1ec74b0b4fa0ed173cbd02
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Apr 4 22:10:36 2002 +0000
-
-    - Cryptoflex now works with the new pkcs15init stuff
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@452 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit fb2532c0d18d5e3904bca159cc320170697fcdcd
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Apr 4 20:49:21 2002 +0000
-
-    - Small typos corrected
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@451 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e5496e9be9ebd42dbdba9948dd58c16705b3c7c8
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Apr 4 20:42:29 2002 +0000
-
-    - Partial support for PKCS #15 generation on MioCOS cards
-    - Some other small fixes to the pkcs15init code
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@450 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e172e6678d06fe28c3f092d9bee2849bafacac7b
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Apr 4 20:40:40 2002 +0000
-
-    - Cleaned up MioCOS driver and added PIN code creation
-    - Added an error message in case ODF parsing fails
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@449 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2b4912931199f71bf980fbb6d5c4bec7f9b63c9b
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Apr 4 20:38:09 2002 +0000
-
-    - DER decoder now treats 0xFF tags the same way as 0x00 tags
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@448 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1446fc11e1f309cd6d4c21b50047fa13eb3b8554
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Apr 4 20:37:27 2002 +0000
-
-    - Made clearer the error message resulting from an incorrect PIN code entry
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@447 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 059813818bf9b59680bb69a2ec8931bd835964af
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Apr 4 19:58:23 2002 +0000
-
-    - the previous fix broke do_verify_pin
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@446 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 984b5b2a2bf4c2ce4afd5f69e11a33997090b98c
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Apr 4 15:06:13 2002 +0000
-
-    Minor warning fix
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@445 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1ef47d245b94ffed9830d04253b5459ba69cbd27
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Apr 4 15:02:08 2002 +0000
-
-    Workaround for a compiler problem (Sun WorkShop 6 update 2 C 5.3 Patch 111679-05 2002/02/07)
-    
-    Still lots of bogus warnings, but at least everything compiles
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@444 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 218b784f0de498f87f8f1bbc325f67c3caafbf3e
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Apr 4 14:34:42 2002 +0000
-
-    - added internal-ef for juha
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@443 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9e31eb6f74540ca6ad2783902fefdbc53d13d9f6
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Apr 4 14:21:04 2002 +0000
-
-    Checkpoint commit for SIA support, doesn't work yet
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@442 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6f197a035d0826d52b70ba85daa458a02fcb4665
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Apr 4 12:44:57 2002 +0000
-
-    Fix minor compiler warnings
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@441 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7d055a17a3ef7287c6807a92cfb41d6df9fafefe
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Apr 4 11:14:07 2002 +0000
-
-    Update TODO and Changelog
-    'make dist' fixes
-    Add missing README for OpenSC-Signer
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@440 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9ba3237c35835605aa0d90a4d2f79ff6b7432717
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Apr 4 10:56:37 2002 +0000
-
-    OpenSC-Signer merge complete.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@439 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5c3c1638624aa3ba4fa8310eadc4b2e5565008ea
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Apr 4 10:40:24 2002 +0000
-
-    Merge opensc-signer to opensc/src/signer, part #1
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@438 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d232bf29dd81addd32f30413f7148a255819a96b
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Apr 4 09:20:44 2002 +0000
-
-    - ctapi_release() now calls CT_close(), as it should
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@437 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0fe85e656345fe93503996861519333c021d648a
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Apr 4 09:20:19 2002 +0000
-
-    - Added typedefs for the most common structs
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@436 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 28fc4bc0cdc939672616dd97e62c822d2d4b66bf
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 3 14:16:19 2002 +0000
-
-    - fixed a typo
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@435 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5cba842fdeeb744a7e249af40254470bee49a57c
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 3 14:15:03 2002 +0000
-
-    - shouldn't set key_reference
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@434 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit fef2ac364c1f2973649df4b85f0dfcf01cdc9010
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 3 12:59:53 2002 +0000
-
-    Minor warning fix
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@433 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b90104b1dee1f3d720f8830498565c0f3645f5e7
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 3 12:53:14 2002 +0000
-
-    - renamed PKCS15-DIR to DIR per juha's request
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@432 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 803124d55dbb4d41fb7346c5ad57d93e4605e370
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 3 12:46:26 2002 +0000
-
-    - moved gpk specific MF ACL to the gpk profile, where it belongs
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@431 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 966903811c64416a4e32055a89c3f755cd9aaf2e
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 3 11:57:58 2002 +0000
-
-    - updated TODO list
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@430 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5d687de06fd81149e94fdd08b334f2cd585fc3e2
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 3 11:56:59 2002 +0000
-
-    - fixed exit code
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@429 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ae8e3908c46726a941fd1c00facc1bfd73b68d28
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 3 11:55:21 2002 +0000
-
-    - rewrote config files to match new parser
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@428 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3b16e35af139484c183786fb6dd4f10e464dc9fe
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 3 11:52:30 2002 +0000
-
-    - rewrote parser to use Antti's scconf
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@427 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0683b3463f5f2976092f1296e85d37796e57dcdc
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Apr 3 11:51:07 2002 +0000
-
-    - added two new error codes for pkcs15init
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@426 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 369889ace566ffaf2ef9cd68b2601e903fdf2be8
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 2 21:26:42 2002 +0000
-
-    - fixed a small bug regarding prop_attr in the SetCOS driver
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@425 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit edfb4dd7f0f6583fba93341d80bdac8177d440b5
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 2 20:58:18 2002 +0000
-
-    Minor compiler warning fixes
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@424 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 776fa9030c0d4e60418aac5afbaf9340a47750c1
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 2 14:46:32 2002 +0000
-
-    - support for SO pin during app initialization
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@423 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f4ff4f461794f5e51c217fe355034e958e0f523b
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 2 14:45:55 2002 +0000
-
-    pkcs15-gpk.c
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@422 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit efa136e3cd3caeef8a1955c1b148e998698bfbf7
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 2 14:27:00 2002 +0000
-
-    - added sc_pkcs15init_present_pin for juha
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@421 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3e6525539af1e165fdfcbc652e3f09000a482bc0
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 2 13:43:37 2002 +0000
-
-    Add .cvsignore
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@420 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d5100f065c2f2ba3c5a134a2ba6af78fc7e67410
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 2 13:38:57 2002 +0000
-
-    Generate src/pkcs15init/Makefile
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@419 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 517f19ca17e18b664e7e2e099b77d104e7c38773
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 2 13:30:01 2002 +0000
-
-    - added new subdir pkcs15init
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@418 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c90dfd18e995e5cc82f8f7a71ccf03cfec44eda4
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 2 13:29:30 2002 +0000
-
-    - moved most of the pkcs15init stuff to libpkcs15init
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@417 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c1f2403d61ff4fc919a24f7b27da9af114dc7a7f
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 2 13:28:31 2002 +0000
-
-    - rewrote pkcs15-init; much of the init stuff moved to separate library
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@416 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b6bf368fd287d263d3331246c22a339fc66637ee
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 2 13:26:42 2002 +0000
-
-    - rewrite of the pkcs15-init stuff
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@415 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4c48335672878b1d52382d2c13896b12360f50ea
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 2 12:58:09 2002 +0000
-
-    - sc_pkcs15_get_objects() now lets you search for generic types
-      (e.g. SC_PKCS15_TYPE_PRKEY) too.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@414 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7a87a5c1567ac3f6d966cd9c16e3087cf9d5a0da
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 2 12:57:17 2002 +0000
-
-    - added SC_AC_SYMBOLIC for pkcs15init support
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@413 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 98c612fc25729c94ea1fa54ebb8eb18ef77de81f
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 2 11:41:00 2002 +0000
-
-    - indentation fix
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@412 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5a824f3fab7a498a52a863d633145f0916ade944
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Apr 2 09:38:06 2002 +0000
-
-    Add maintainer-clean patch by Andreas Jellinghaus <aj at dungeon.inka.de>
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@411 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b2a10c12e7164a198b278d839d0c0a2842ecf766
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Mar 31 19:15:04 2002 +0000
-
-    Remove flag SCCONF_OPTIONAL, add SCCONF_MANDATORY
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@410 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2fbf01e87d2dbf584ca3de1c942049068594b891
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Mar 31 16:32:07 2002 +0000
-
-    Remove #include "config.h", sc-internal.h already does that
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@409 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 70306822d260f69a5f02537968548930d62fdfbb
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Mar 31 16:00:29 2002 +0000
-
-    Include header stdio.h
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@408 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b308cabd5f8ea01555fe70bd74a96936c8e53f71
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Mar 31 15:26:25 2002 +0000
-
-    - Upgrade scldap to use scconf_parse_entries();
-    - Fix compiler warnings for ct-api driver, untested.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@407 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d9f44ecde33030f65e1ac4ef429d618d49f87916
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Mar 31 13:00:41 2002 +0000
-
-    Upgrade test-conf to use scconf_parse_entries();
-    
-    NOTE: Handles ldap/card blocks for scldap.conf
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@406 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit eb7b050a1d5e33fc964365efed1bc65b164a6a2b
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Mar 31 11:30:54 2002 +0000
-
-    Add functions scconf_list_add and scconf_parse_entries,
-    getting the values in user code is now pretty much the
-    same as it is in ASN.1 decoder.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@405 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7ddcb3d6922f870ac114e7169f739151e89a8143
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Mar 28 14:13:36 2002 +0000
-
-    - sec_attr and prop_attr are now dynamically allocated in
-      struct sc_file
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@404 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 88530c8dbacf4ff8a9fa7a10c032e0034e2959aa
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Mar 28 13:34:51 2002 +0000
-
-    - Added sanity check for sc_establish_context.
-      If no readers are found, fail and return
-      SC_ERROR_NO_READERS_FOUND.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@403 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e589a94aac45c4a720a16550bf3b2926d8b096df
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Mar 28 13:10:53 2002 +0000
-
-    Add missing @LIBDL@ to libopensc linking
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@402 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8f6ffee6a9e380169963d9899a13f0730038fcde
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 27 13:13:54 2002 +0000
-
-    - Minor cleanups to build process
-    - Add header check for dlfcn.h
-    - Add internal functions sc_module_{open,close,get_address}
-    - Use environ instead __environ for scldap_search, should be
-      more portable.
-    - Fix compiler warnings noticed by Tru64 / AIX cc
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@401 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 86a47efdec90e63f74fbe98e52b20abbb4917db9
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Mar 26 23:06:47 2002 +0000
-
-    Reduce the scidi specific code to bare minimum
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@400 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2d017e7f02e08e0329eab50a4fcd96a3ac23bf56
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Mar 26 20:59:15 2002 +0000
-
-    Add missing character
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@399 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 19f7f1073a7e5ab9b7c40a2704feafd649a0d593
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Mar 26 20:56:13 2002 +0000
-
-    Rename scconf_init to scconf_new
-    Rename scconf_deinit to scconf_free
-    Add initial comments to scldap.h
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@398 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4502555bcc887e7d5cc19bd5a5c2ae416601b8be
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Mar 26 20:05:28 2002 +0000
-
-    - fix signing of raw md5/sha1 hash w/o pkcs1 gunk prefix
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@397 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 59d4e9b7bee8de5fa321d86d2c3b65a4a7fdc75e
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Mar 26 11:38:40 2002 +0000
-
-    - Added support for CT-API
-    - Improved config file loading
-    - Implemented ATR parsing
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@396 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b2d2bc77aee5ba3aa379e5bbb36b5251511ea9fb
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Mar 25 22:39:22 2002 +0000
-
-    Rename scconf_find_value to scconf_find_list
-    Rename scconf_find_value_first to scconf_get_str
-    Add functions scconf_get_int and scconf_get_bool
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@395 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c69d1b59df32ec1588bea6bcb8c7407290a1c384
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Mar 25 21:23:32 2002 +0000
-
-    Always allocate scconf_list for block structure
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@394 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit aa5ec6bae1e578714e67faa3ec5ee0032ca95849
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Mar 25 20:10:44 2002 +0000
-
-    Add sanity checks and more comments
-    Add new parameter for scconf_find_blocks
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@393 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit fc170197d142387792895d4c419db3c7debb741a
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Mar 25 12:39:35 2002 +0000
-
-    Add support for config.h
-    Remove old, obsolete and dead code
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@392 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit bfe2df234179cb43277b7130c83820a02f2fe223
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Mar 25 11:54:10 2002 +0000
-
-    Still changes for libreadline checks output
-    Clear environment before calling ldap_init, as suggested by Olaf
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@391 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 262b1d79d9f30b78f591dff43406479466bcfe1a
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Mar 25 10:19:57 2002 +0000
-
-    - pick up -lresolv on systems with glibc 2.2.4 (needed by openldap 2.x)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@390 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0356c0363798cc47f6232c3aa009cd68594af570
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Mar 24 23:20:59 2002 +0000
-
-    - updated TODO
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@389 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c730a4dab7445f917ef495f9f6086edfa64c8bb8
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Mar 24 22:54:41 2002 +0000
-
-    - fixed some memory leaks in sc_establish_context
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@388 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit cd4e3650a4038f154a48c8da372f47516fa1d6df
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Mar 24 22:47:35 2002 +0000
-
-    - Moved functions from sc.c to ctx.c
-    - Card and reader drivers are now configurable
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@387 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ec6f8961b02f0afc28d4aefdb5987afedab4ef75
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Mar 24 21:56:13 2002 +0000
-
-    Don't hardcode initial debugging level and error/debug_file
-    pointers to the code, get the values from opensc.conf instead.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@386 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 441bbb5265fd0c72b46cd0ab567b45dfaeecae73
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Mar 24 20:30:53 2002 +0000
-
-    Add missing AC_MSG_RESULT texts to libreadline check
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@385 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2142557bb84d144df0089500c06ed8d4b8c23b5c
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Mar 24 20:04:45 2002 +0000
-
-    Allow user to specify input/output filenames
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@384 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8cc8ea1e6ea638eee98d179479609000a176baa0
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Mar 24 17:50:20 2002 +0000
-
-    Fix syntax errors
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@383 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7d27225e0ce2f11cdceb45dfe733b444b1b3464a
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Mar 24 17:09:47 2002 +0000
-
-    Oops, scconf_parse was called twice. Fixed.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@382 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 21aae9c4d0330d348ff1fff0cadc60687ba15974
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Mar 24 16:57:39 2002 +0000
-
-    - Fix a potential segfault for the new sc_establish_context
-    - Keep the variable names in opensc.conf the same as they
-      are in code structs.
-    
-    Always try to parse app default { } first, then upgrade
-    the settings with the application specific configuration block.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@381 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0cad904c8633793a6a5503e3d89469e97cd966b2
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Mar 24 15:41:33 2002 +0000
-
-    Move opensc/src/scldap/etc to opensc/etc
-    SCLDAP_CONFIG -> SCLDAP_CONF_PATH
-    Upgrade the rest of the programs to use new core API
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@380 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 22dd703c0b22cb0af6cd00bdcb766c6c0f321261
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Mar 24 14:15:11 2002 +0000
-
-    - second version of the default config file
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@379 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f21926af0073534835631640bbe77e52593f26ed
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Mar 24 14:12:38 2002 +0000
-
-    - Started to add configuration file support to
-      libopensc
-    - Added typedefs for some basic structs (e.g.
-      struct sc_card --> sc_card_t)
-    - Added a second argument to sc_establish_context()
-      to identify the calling application
-    - Renamed sc_destroy_context() to sc_release_context()
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@378 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ffe0282a93bccd4a955767333d3f1f0948e9cde4
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Mar 24 14:06:40 2002 +0000
-
-    - fixed a typo in one ATR string
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@377 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e9ee0ff146e49bf51923418f5b2522facab12a6b
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Mar 24 12:14:19 2002 +0000
-
-    - Fix compiler warnings for Solaris
-    - Use of PAM_MODULE_UNKNOWN broke pam_opensc for Sun based
-      PAM implementations, fixed.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@376 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7400bb9ee3f61c1926ebd7bc654cf91cd7fe5c07
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Mar 24 10:03:47 2002 +0000
-
-    Make sure everything compiles even if we don't have
-    an LDAP implementation and/or OpenSSL library.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@375 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 69393c9bbee18b760e7257d34e38fa9fa5e9ac5f
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Mar 23 19:37:40 2002 +0000
-
-    Restructuring and merges with scidi
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@374 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit fc4025e90d6949cddb21be2adc55c82c1d6b60e7
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Mar 23 16:28:16 2002 +0000
-
-    Strip off "opensc-" prefix from the p15 module names
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@373 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 77c94c2793ceda54e3ba29b4b210a4addbb8f960
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Mar 22 13:56:44 2002 +0000
-
-    'make dist' fixes
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@372 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a7c5e4e9e29bbbe8229438270420789fc3335d41
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Mar 22 09:50:04 2002 +0000
-
-    Test if Makefile exists before doing make distclean
-    Remove --gnu from autoreconf
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@371 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 94feddd9f5c57d9c771af6a30d9ca45431ef1b12
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Mar 22 01:14:20 2002 +0000
-
-    Disable a debugging message that got activated because of
-    log_messagex -> fprintf renames.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@370 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 50e266567aa5a81fc84f3d2b812a24cc0c637e07
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Mar 22 00:13:25 2002 +0000
-
-    Fix memory leaks
-    Indent lines
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@369 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6e3a09fa7b61571e45ed01b279e4619928ace2b9
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Mar 21 23:45:03 2002 +0000
-
-    Remove bogus "len = len;" statement from pkcs15-cert
-    Other minor cleanups
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@368 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6b4a2fd5995325446d0c107525f40248e97b1a21
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Mar 21 19:12:40 2002 +0000
-
-    Merge bits of information from pam_pkcs15's README for opensc-pkcs15-eid
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@367 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit dfb2e43cd560db89427166627b2f0c84331b902a
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Mar 21 18:37:27 2002 +0000
-
-    Fix a typo
-    Add missing conditional
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@366 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8628df17b55c89b8554a8cb01e20fb4b983cbf4c
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Mar 21 18:02:23 2002 +0000
-
-    Move get_login() to pam_support.c
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@365 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0cfbcb8fd6377a71534aa8812a4aee169699ae8e
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Mar 21 17:41:32 2002 +0000
-
-    Cleanups for PAM and SIA build process
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@364 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 504b0ae2b9d4b849385ef5283e8a97034047ed09
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Mar 21 14:05:24 2002 +0000
-
-    Merge configure.ac stuff from SCIDI, needs some cleanups
-    Add missing functions
-    Replace log_message{x}() calls with fprintf, for now
-    
-    Everything compiles with vanilla opensc tree, yet untested.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@363 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit dc50994696a10f057f43842ccfdf74ecdd41400e
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Mar 21 13:11:21 2002 +0000
-
-    Build fixes
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@362 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit beb361fcb9d12a02a867cfa432be729e8c2d19af
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Mar 21 11:56:01 2002 +0000
-
-    Add preliminary version of SIA module for Tru64
-    
-    Compiles, doesn't work yet. To be finished when
-    someone returns my development alpha. :)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@361 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 20121316a7814faa5187a388cabc6792af360c72
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Mar 21 11:35:06 2002 +0000
-
-    Oops, indent fixes
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@360 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b50a0c7bf773a9a87cca3cee209a4e948dea074f
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Mar 21 10:43:38 2002 +0000
-
-    Build fixes
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@359 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5006b0d15184f41533cf0dc12ffcd42df222926e
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Mar 21 09:36:38 2002 +0000
-
-    - added some #include string.h statements for RH 7.2
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@357 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0f95c1c6de9b4079882aa3fe4ddd698da41dfa8e
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 20 23:21:22 2002 +0000
-
-    Start merging various sources from project SCIDI - smart card
-    identification infrastructure by Helsinki University of Technology.
-    
-    Breaks current PAM build, lot's of stuff from configure.ac
-    missing, some references to unknown sources and functions.
-    
-    Time to get some sleep, i'll continue merging tomorrow.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@356 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ea57d9af7477e2be2c756331e16abab4c4686715
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 20 19:37:07 2002 +0000
-
-    - Bumped up version number to 0.6.1
-    - Wrote a NEWS entry
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@354 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 34af339510991596e74a3c50f7c073d31a7dc532
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 20 19:33:52 2002 +0000
-
-    #include cleanups to get rid of compiler warnings
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@351 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7b6371dae1ffe88d15c7e2721d0da9a10702100c
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 20 19:31:56 2002 +0000
-
-    - Added Olaf's ASN.1 wrapping magic
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@350 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ac3c33d26c8fea93820302c74875d22c92339b42
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 20 17:17:48 2002 +0000
-
-    - Fixed debug output in pkcs15_create_slot()
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@349 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7952f81721278ffdf36e8789af8da5d8a797eab9
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 20 15:04:14 2002 +0000
-
-    - implemented C_ChangePIN
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@348 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 853d414fc34512143470b7de5cf6db9207d047e9
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 20 13:08:51 2002 +0000
-
-    - implemented CKA_SUBJECT
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@347 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8f07d6706dfe09beeba531bf2c44b4a2400004ed
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 20 13:08:09 2002 +0000
-
-    - now extracting issuer from certificate
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@346 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3fa7a056f15cf86511b25644dbedadfaea7f3b10
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Mar 19 10:04:11 2002 +0000
-
-    - Fixed a couple of memory leaks
-    - Fixed a bug in decoding EF(TokenInfo)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@344 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e630a05dd5e5c3dabb0baa86c2aa47607a38fd01
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Mar 18 13:24:06 2002 +0000
-
-    - make it compile with readline versions that declare readline(char *);
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@343 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 21911ebf4cf00a9ec9c531fdf4ec5185463fe56a
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Mar 18 12:49:46 2002 +0000
-
-    - by default, the token is marked write_protected
-    - fixed debug output when creating a slot with no PIN
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@342 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f82c470cb545082c8958fafc7175827a6fea0000
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Mar 18 12:49:08 2002 +0000
-
-    - do not enable the RSA flag n netscape
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@341 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 51ccfe79f43e51fa677f7faf234d4d188ef54de0
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Mar 18 11:05:21 2002 +0000
-
-    - made email decryption work in netscape
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@340 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6953286d016504abfae3dcb41f096422a5746512
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Mar 15 15:22:41 2002 +0000
-
-    - first stab at C_Unwrap
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@339 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7d6cf8fa81c59924632aec7f3d5e299f82839a60
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Mar 15 15:19:34 2002 +0000
-
-    - extract certificate issuer and store it in sc_pkcs15_cert
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@338 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a3b521a70478b8e9a9703a7eb5dd8a5ac632a63b
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Mar 15 12:48:06 2002 +0000
-
-    - started adding support for DSA private keys
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@337 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 563515dc46db23074e0f0a5bfb7a05b84a4bb278
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Mar 15 12:37:31 2002 +0000
-
-    - email signing now works from navigator
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@336 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6d4988f12a31cc52287815667b7efdda65d6325f
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Mar 15 11:41:16 2002 +0000
-
-    - set debug log file and libopensc debug level via environment vars
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@334 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c5e53429cde15ade3296a54e7d3f0c274db9b578
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Mar 15 10:40:35 2002 +0000
-
-    *** empty log message ***
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@333 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 67ffdfa2137b322c866265dfe17f1d7704c7d6a5
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Mar 15 10:10:33 2002 +0000
-
-    - Added support for big serial numbers in certificates
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@332 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3838af2bd76196f97a58465ae665d48e2d6a65a7
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Mar 15 10:05:20 2002 +0000
-
-    - now uses sc_pkcs15_free_pubkey
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@331 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 41cd4c4d2cca78a2537880d2aa0c1ca0df61db37
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Mar 15 10:01:25 2002 +0000
-
-    - implemented sc_pkcs15_free_pubkey
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@330 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7ec8498962bb9d6b9f28d4b5198909fd9cf01d80
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Mar 15 09:43:31 2002 +0000
-
-    - removed SC_CARDCTL_GET_PK_ALGORITHMS card_ctl
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@329 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ccb6bb1b1c3dd0f65ad803ecf7f466ed5148dca9
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Mar 15 09:43:10 2002 +0000
-
-    - implemented decipher() operation
-    - removed SC_CARDCTL_GET_PK_ALGORITHMS card_ctl
-    - minor signing fixes
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@328 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6ca0cb108c7ebfa15238c8c9bdbc5bda3933df00
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Mar 15 09:42:07 2002 +0000
-
-    - moved sc_decipher implementation to iso7816.c
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@326 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c6a9091f67e73429f621be28cb76cdf6534070ab
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Mar 15 09:01:11 2002 +0000
-
-    - fixed PEM public key header
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@325 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 879690f6f470454fbedc3491874cad46cf4ada62
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Mar 14 17:02:08 2002 +0000
-
-    - add option --md5
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@324 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a42a47ea33916c255bee1ff93716bea13f49ba60
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Mar 14 16:57:20 2002 +0000
-
-    - list and extract public keys
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@323 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3161964a4b78f1daa75b6d8d5b8ce79b5c260681
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Mar 14 11:50:48 2002 +0000
-
-    Add missing static for parse_tokeninfo();
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@322 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit bf5f0f6fe12b7ff0dfb809ea74b632c07aa986c0
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Mar 14 11:50:09 2002 +0000
-
-    - fixed a typo that caused bad auth_id's
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@321 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 04e929da00e4d5babcf2cc09c6e160c031c69ea4
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 13 23:11:25 2002 +0000
-
-    Fix minor compiler warnings
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@320 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f3b7c99e1a42ced1feef221642df8deb84a12fd1
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 13 20:25:37 2002 +0000
-
-    - if the offset shift is 2 in update binary et al, make sure the
-      application provided offset is a multiple of 4.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@319 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ca2f725f053f1be784bd54bf634a5a678e118018
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 13 20:24:31 2002 +0000
-
-    - make sure SC_APDU_CHOP_SIZE is a multiple of 4 (otherwise, update binary
-      et al of large files will fail on the GPK)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@318 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 55dd227587b2af9020bc54f3daf5dd9ee73bafd7
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 13 20:23:18 2002 +0000
-
-    - fixed certificate download
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@317 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b1a3e6cfb33f6b81b1bd54895ca55c59c7db0a44
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 13 15:18:43 2002 +0000
-
-    Add missing files
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@316 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c17b3eb940f225114f8f1aa90e76a9f664a8f573
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 13 13:21:15 2002 +0000
-
-    - added docs/Makefile to AC_OUTPUT
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@314 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 308bffc583c21b492ad5770c396ba3cc4be44a7b
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 13 13:17:13 2002 +0000
-
-    - removed README.Cryptoflex from EXTRA_DIST
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@313 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8448298519d7c1b823d4f0aa0148a29649888be3
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 13 13:09:51 2002 +0000
-
-    - added docs subdirectory so that manpages get installed
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@312 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 213586280284d63a549725290dfd62c2771dd902
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 13 13:09:31 2002 +0000
-
-    - added Makefile.am for manpages
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@311 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 47b1df15afa429e0f92822ee04c716aea2f7e143
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 13 13:09:15 2002 +0000
-
-    - added a bunch of manpages
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@310 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c418eb91afda3a494c6e89bab8cf7151d0d3c18e
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 13 12:42:11 2002 +0000
-
-    - Ahem, decrease the version number a bit
-    - assuan_transact is now API compatible with the latest
-      version of Assuan (newpg/assuan)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@309 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b3e7235e30ebf56870946da15ea3d4692e51bee7
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 13 11:36:19 2002 +0000
-
-    - fixed a small core-dumping bug
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@308 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 19e2a4787fe118b93181e7886ffbd408a37a179f
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 13 10:51:31 2002 +0000
-
-    - Preparation for release 0.6.0
-    - Removed obsolete README.Cryptoflex
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@307 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8efe36617cbd284113350da7f8f0a7e1fe2da5b9
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 13 10:48:07 2002 +0000
-
-    *** empty log message ***
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@306 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e280d2f44480d2d907002c71dab004bbe2d1ab1e
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 13 10:34:05 2002 +0000
-
-    - some autodetection magic in pkcs15_prkey_sign()
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@305 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 31e78a3acb83fae7795f670e6133c962b0ac8bce
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 13 09:51:49 2002 +0000
-
-    - reverted a change in pkcs15_prkey_sign
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@304 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ef4c142c477f7c9d285b7d447ffcebb0a9e376c0
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 13 08:54:44 2002 +0000
-
-    - Fixed signature generation
-    - Assuan API is now compatible with newer versions
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@303 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 83686af7462537588d5a9535797da1705f81a2fb
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Mar 12 16:27:21 2002 +0000
-
-    - added pkcs12 support
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@302 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b635539aa8cc36957d114ce918337dfb64bc35c8
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Mar 12 16:27:04 2002 +0000
-
-    - Make the default size for DF files 128 bytes (FIXME: we need to be
-      able to set this on a per card basis in $cardname.profile
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@301 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 252323e0db3d6a691d8ff4e23fe3f61360ea82ca
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Mar 12 14:36:40 2002 +0000
-
-    - add support for PuKDF objects.
-    - lock the card in C_Login, and unlock it in C_Logout.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@300 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 66b00e06bb2e4b03b650d456da8827aa8c21260f
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Mar 12 14:36:07 2002 +0000
-
-    - keep track of number of sessions
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@299 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5df7c9b8e9dbc06714cb8632e47979c47910de0e
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Mar 12 14:35:50 2002 +0000
-
-    - keep track of the number of sessions per slot, and do a C_Logout
-      when the last session is closed.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@298 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c287088275344e950ddef87d5432f09652b81292
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Mar 12 13:41:58 2002 +0000
-
-    - Make sure profiles get installed in $(pkgdatadir), and propagate this
-      directory name to profile.c (icky automake stuff)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@297 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 23e956cf9b869997c13a859a50388ab812256fb6
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Mar 12 13:00:57 2002 +0000
-
-    - Fixed PKCS #15 structure generation on Cryptoflex cards
-      and implemented a default profile
-    - Cryptoflex now reports its supported PK algorithms
-      correctly
-    - Various pkcs15-init fixes
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@295 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2c7a0ac27b79266dec9d61e93eecac86ac3907dd
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Mar 12 10:08:18 2002 +0000
-
-    - Implemented download of public keys and X509 certificates
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@294 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f7ce196a66633d5e4da38f76c90fab0415e98613
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Mar 11 14:13:11 2002 +0000
-
-    - now creating EF(DIR)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@293 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit cf795aa7b8debf7355e890ab6f5324dc26ccc5c6
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Mar 11 14:12:46 2002 +0000
-
-    - exporting sc_update_dir to applications
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@292 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f84f5e58259bb32af266c92e740535978a71e454
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Mar 11 12:41:18 2002 +0000
-
-    - we cache just the DF portion of the currently selected file path,
-      excluding the EF's FID
-    - when sending the hash to the card (as part of compute_signature),
-      revert the sequence of hashed bytes
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@291 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b5bc6d74fd2340714f38147df558efbde42b5174
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Mar 11 11:52:04 2002 +0000
-
-    - When storing a private key, always store the public portion as well
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@290 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 52dac164babf0912fcaa01b2da1efec98b4fd3dd
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Mar 11 11:40:30 2002 +0000
-
-    *** empty log message ***
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@289 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4fb78b7bdca92e782f0a7757d7e8ae8999839cf5
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Mar 11 10:18:59 2002 +0000
-
-    - forgot to add DFs to the profile's file list
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@288 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3dd0c64f6ac1d61b59108124928c4541d41e5e29
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Mar 11 09:14:10 2002 +0000
-
-    - Implemented Parent/FileID stuff according to Juha's proposal
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@287 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ae306cf06f8948bab831e5cdd7fcdba875eb9734
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Mar 10 11:48:57 2002 +0000
-
-    - GPK now reports it's PK abilities correctly
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@286 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2a4afb8319a595f553ae4c8ba8a5d1ab7a435b76
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Mar 9 17:54:16 2002 +0000
-
-    Include stdlib.h where needed
-    Warning fixes for various OS's
-    mcheck.h is not portable, so remove it
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@285 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f0d4252ea0f42596f8364323424ff87890e0fba5
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Mar 9 17:27:04 2002 +0000
-
-    Standardize the first header comment a bit
-    between various profiles
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@284 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 427801c755cc8b469998f56af47bb521232efbc7
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Mar 9 17:21:10 2002 +0000
-
-    Add flex.profile to EXTRA_DIST
-    Rename miocos-rw.profile to miocos.profile
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@283 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7d2171c1d25d6f19e3ce737076b28c9f168ac6d1
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Mar 9 15:11:46 2002 +0000
-
-    - Improved support for MioCOS cards
-    - Removed PKCS #15 creation from cryptoflex-tool
-    - Added PIN pad character option to profile.c
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@282 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c94fb9a1d562a1dcf1b6895fa20ef6d18fdad9c6
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Mar 8 19:47:26 2002 +0000
-
-    - added sc_pkcs15_read_pubkey to retrieve public key from a public key file
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@281 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4fcf38e98efaccc41b7aa31834ac92a51b9c2272
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Mar 8 19:46:33 2002 +0000
-
-    - specify sc_algorithm_info
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@280 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6264f03148f6cc3c95a14e2b607f4853e3623eee
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Mar 8 16:06:10 2002 +0000
-
-    'make dist' fixes
-    Minor cleanups
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@279 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7803649f256163f816c11371bbd92d96ed2b9016
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Mar 8 15:18:48 2002 +0000
-
-    SC_PKCS15_HASH_SHA1 -> SC_ALGORITHM_RSA_HASH_SHA1
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@278 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 346be7d7a1498fd48286ea93cdfb10cb5e8bc799
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Mar 8 14:47:34 2002 +0000
-
-    Fixed opensc-ssh to work with recent p15 API changes
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@277 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3416461c4bcf29dc9f32688bad8f7f46e7a93424
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Mar 8 05:59:57 2002 +0000
-
-    - Added X.509 algorithm id decoding and encoding to asn1.c
-    - Implemented a generic ATR matching helper function
-    - Made signing much smarter (should even work now)
-    - Added info about supported crypto algorithms to struct sc_card
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@276 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7477cb3c01c7f97bafee7e852d9dd0ca0de6295e
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Mar 7 13:06:54 2002 +0000
-
-    - fixed attributes etc of PuKDF entry
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@275 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit cdd735e36d215e8f6e8bdfcd1a1af8dc8a895b1e
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Mar 7 13:03:23 2002 +0000
-
-    - moved object printing stuff to separate file
-    - dump public key info if present
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@274 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6cd852ba45e711cdcccbe28dbb92e9f3e744bc31
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Mar 7 13:03:00 2002 +0000
-
-    - moved object printing stuff to separate file
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@273 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 30a5233d3bea786f28dc8059d6fced7ba609a884
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Mar 7 13:02:30 2002 +0000
-
-    - fixed pintest to work with p15 API changes
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@272 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 364328212b5633a45f86f8050521a54e4864d3b4
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Mar 7 12:33:42 2002 +0000
-
-    - sc_pkcs15_parse_df now understands PuKDFs
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@271 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6827556f5d09f48f9b8965e847dd3fee0337d9ab
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Mar 7 12:26:17 2002 +0000
-
-    - fixed error code handling
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@270 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 23678d069523e6ea3b1aadada9aad7c91a39ae57
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Mar 7 12:25:54 2002 +0000
-
-    - fixed memory corruption problem
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@269 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9419b353f6b4610a4660c11b58e78cb58bb5caf3
-Author: fabled <fabled at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Mar 7 11:57:49 2002 +0000
-
-    - Patch from Olaf Kirch to implement of RSA exponent
-      and modulus retrievel in pkcs11 code
-    
-    - Fixed the checking of PIN length in pkcs11 login
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@268 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2fda14ebf51f701f90c7ea3aad8f8ce156ec5193
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 6 17:49:47 2002 +0000
-
-    - Rewrote large parts of pkcs15-init for greater flexibility, and with
-      an eye towards separating some of the stuff into a library that can
-      be used by pkcs11.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@267 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4f0ce4228a3b53e45099b16c6101cbf880a4c320
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 6 13:22:08 2002 +0000
-
-    - in sc_select_file, remember the file path in the returned struct sc_file
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@266 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 17316de130ee964ccf98c79446e2f8bcda3ec058
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 6 13:21:22 2002 +0000
-
-    - another buffer overflow
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@265 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8c478132279eb6b6befaa8d724a9d3eb761af7e8
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 6 12:33:33 2002 +0000
-
-    - Added {read,write,update}_binary handlers that shift the offset
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@264 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f39f2244bb5f4e9e7d2bc780917c87a827db040d
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Mar 6 12:32:42 2002 +0000
-
-    - SECURITY: Fixed buffer overflow
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@263 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 88553f6bfcd1cdc8ff81c2dea3954267d883b625
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Mar 5 16:52:39 2002 +0000
-
-    - now works with the new API
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@262 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit fd9e7ef7cabf707426212b484956c85fad4b8d76
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Mar 5 13:26:00 2002 +0000
-
-    - make sure HAVE_OPENSSL is defined even when reading openssldir from config.cache
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@261 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9fec8c46716a65167f7aa5424030bc9b5450d58c
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Mar 5 13:16:54 2002 +0000
-
-    - make sure HAVE_LIBPCSCLITE is defined when using --with-pcsclite
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@260 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9f43b3b0f3e0dcabb690cb01b7835f1189a70592
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Mar 5 09:30:01 2002 +0000
-
-    - small typo
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@259 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ffe5629e8932e3720074cf26c1520614e942e48d
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Mar 4 10:33:35 2002 +0000
-
-    - started to work on PuKDF stuff
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@258 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 25f15f0ba14959a725e833220ea03934f9837f92
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Mar 4 09:33:46 2002 +0000
-
-    - Added support for Juha's latest API changes
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@257 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 12e6874f03efa663696d22214b47e520b2a3b55e
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Mar 4 09:32:56 2002 +0000
-
-    - Fixes for Juha's rewrite of sc_pkcs15_object and friends
-    - changes some names
-    - allow profile to set private key access flags
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@256 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit cbd72756ad87341d0ebbca1bab833c659067248d
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Mar 4 09:31:53 2002 +0000
-
-    - Added default access_flags for private key objects
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@255 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 86df1c55ff19a963a675c0f045026bc54a85b6de
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Mar 4 08:35:48 2002 +0000
-
-    - adapted to juha's latest changes
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@254 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 34bcc5c8332405ceff5302dbc04c17066a47d714
-Author: fabled <fabled at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Mar 4 06:58:12 2002 +0000
-
-    - Fixed buffer overflow in C_FindObjectsInit
-      (patch from Olaf Kirch <okir at caldera.de>)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@253 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 51c572ac1d72c4013ac177b83dbf5e89d4e81f70
-Author: fabled <fabled at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Mar 3 17:36:23 2002 +0000
-
-    - Fixed PKCS #11 module to use the new PKCS #15 API
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@252 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6b07ff64f6082ae44df9544129962a40a46fd548
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Mar 3 00:32:28 2002 +0000
-
-    - Reworked PKCS #15 structure a bit (MANY THINGS
-      WILL BREAK)
-    - Added support for public key DFs (not tested yet)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@251 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e256d97f652055b9703c3fc117cb5a07fc40d75b
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Mar 2 14:03:41 2002 +0000
-
-    - if required, read pin from stdin (fixed key download)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@250 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4ac49d6e88af07b7b7b5f83226270b74e3a43930
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Mar 1 11:52:55 2002 +0000
-
-    - intermediary checkin
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@249 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 44fbfd7c1a3a8d0b379eb22c10dd5b9e7a06acf7
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Feb 27 22:15:48 2002 +0000
-
-    - Implemented GET_PK_ALGORITHMS card_ctl
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@248 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 321e993d9a23f951a8f5ca7a45111b6482b6d5f0
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Feb 27 22:15:12 2002 +0000
-
-    - Fixed typo on _CTL_PREFIX
-    - Added SC_CARDCTL_GET_PK_ALGORITHMS
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@247 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 78d9c2060b5c47d421e9e4b09718bae6570ac80e
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Feb 26 21:15:18 2002 +0000
-
-    - some platforms need -ltermcap to go with -lreadline
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@246 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f0cba186a9d29aa953a9da23da8d28e00588870a
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Feb 26 21:11:11 2002 +0000
-
-    - we may have readline.h but may still not be able to link the lib
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@245 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c58b72fc545bc33ca1151291f074f01bd0df8656
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Feb 26 16:34:29 2002 +0000
-
-    - implemented change/unblock pin
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@244 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4fa7283ae2559ca037c6799db2141fcf5c449671
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Feb 26 11:27:49 2002 +0000
-
-    - added some missing files
-    - renamed card-setec.c to card-setcos.c
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@243 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 04dfc47d92ebfbccce826c4fcee970ea7f69c466
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Feb 26 11:23:25 2002 +0000
-
-    - added a driver for MioCOS cards by Miotec
-    - implemented EF(DIR) updating
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@242 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 570af2be562e0500b496ed2efe22dffbc06c3482
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Feb 25 22:42:28 2002 +0000
-
-    - fixed sc_card_driver initalization
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@241 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d08c34cad65d54dd011c85ebf9202ed3823bdd9e
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Feb 25 18:58:59 2002 +0000
-
-    - test commit
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@240 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ede029e1d7bc103db09594fa7833c640517df4b8
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Feb 25 18:50:29 2002 +0000
-
-    - cleanup and misc minor fixes
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@239 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4a448f43cf37137fee0012ee72766cdab3259452
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Feb 25 18:48:34 2002 +0000
-
-    - first stab at signatures
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@238 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 680b9928c5c52428e4dc8e9489e0eb3105ccc7ab
-Author: okir <okir at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Feb 25 18:47:42 2002 +0000
-
-    - avoid integer underflow for outlen < 11
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@237 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 97a7957e35d983a1b55d84c14d088cc1d6de047c
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Feb 25 18:43:16 2002 +0000
-
-    Minor fixes to libreadline checking
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@236 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4aa18a9ff956777fb6238666b2ffadcec13ac688
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Feb 25 16:30:38 2002 +0000
-
-    Added support for checking libreadline and use it
-    for opensc-explorer if one is found.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@235 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d8de0c6da78433cf51125b625bbd67a3081fcb1b
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Feb 25 15:40:43 2002 +0000
-
-    Minor fix for HAVE_PCSCLITE conditional
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@234 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 325cd8006d7be4d01ee55ce4f681727d87472eb1
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Feb 25 14:13:18 2002 +0000
-
-    - small bug fixed in encode_bit_string; patch by Olaf Kirch
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@233 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9879318a6a1a3b2a41c949186b5b7319587ef617
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Feb 25 13:51:11 2002 +0000
-
-    Add missing help text for --passphrase
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@232 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c2cbf21baad1aa079149287ebe981795a9e0e674
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Feb 25 12:37:14 2002 +0000
-
-    Obsolete
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@231 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b098c097a12332e35a721ab8419de82030a0c953
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Feb 25 12:04:39 2002 +0000
-
-    Upgrade to current OpenSC API
-    Compiles, so far untested
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@229 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9c594003ee6e343957b5a8c7c6859e771c79274c
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Feb 25 11:50:32 2002 +0000
-
-    Add pkcs15-init
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@228 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8d222efb57937889c9b4e2ef07c1117fbb634d05
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Feb 25 11:13:50 2002 +0000
-
-    HAVE_SSL cleanups
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@227 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 69b1e1bdece4cb6c019ca28a4642f84ba6c64bec
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Feb 25 11:06:03 2002 +0000
-
-    Get rid of PC/SC specific flags (thank god)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@226 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 24c6f4176ec707a1399aebfce413f4476161e1bd
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Feb 25 11:05:25 2002 +0000
-
-    winscard.h / CFLAGS_PCSC cleanups
-    Merge OpenSSL configure changes with SCIDI
-    Build process changes for future CT-API support
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@225 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e605e6fa8bb4cd3bd7ef384a6f40c606140c57a6
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Feb 24 21:14:17 2002 +0000
-
-    Fix segfault for pcsc_finish
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@224 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 412292eab118135aed0c68032f98bf8dc3fd98b0
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Feb 24 20:16:07 2002 +0000
-
-    Add missing SC_STATUS_TIMEOUT that was removed from sc-internal.h
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@223 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3fa1b27736355eb65c6df227678929980f77e16b
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Feb 24 19:32:14 2002 +0000
-
-    - implemented reader abstraction layer; now it's easier to
-      add support for e.g. CT-API
-    - renamed ops_data field to drv_data in struct sc_card
-    - copied coding style document from Linux kernel
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@221 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1f4e5c4b6d52e5fcb929230211215cdd6176aa51
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Feb 24 16:50:29 2002 +0000
-
-    Minor changes to get rid of compiler warnings for various OS's
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@220 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2adde8d501e6d7b5b3c34deed47b93624fec6479
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Feb 23 13:38:01 2002 +0000
-
-    - implemented RSA and DSA key downloading to GPK cards
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@219 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f605dc631c506644fe4b0a4a14f7fcb2f3d47f60
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Feb 22 20:46:43 2002 +0000
-
-    - a small fix
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@218 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b5736099a2980162c98e115a913363ad0bb9691e
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Feb 22 07:18:43 2002 +0000
-
-    - added some missing files from last commits, whoops
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@217 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d2a36c88fd2d02fe20037b736bdc9bfe78dbefb3
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Feb 21 19:23:21 2002 +0000
-
-    - added sc_update_binary(), sc_append_binary() and
-      sc_write_binary() with their corresponding ISO 7816-4
-      reference functions
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@216 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e78dc964403cc301bc19ccf0607beff6ffff4f26
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Feb 21 18:53:23 2002 +0000
-
-    - added ATR for RSA SecurID 3100
-    - exported pkcs15_encode_* functions
-    - minor modification to sc_file_add_acl_entry()
-    - boosted up opensc-explorer
-    - added error(), warn() and fatal()
-    - implemented a generic PKCS #15 structure generation tool
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@215 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3adef373bfaac9f3a160c8a2047c0e0050eb8487
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Feb 20 18:42:16 2002 +0000
-
-    Fix memory leak for sc_establish_context
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@214 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 61fc1f93270daca5f10699d3a2037383ae83a6e6
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Feb 20 09:56:47 2002 +0000
-
-    - all instances struct sc_file should now be
-      dynamically allocated with sc_file_new() and released
-      with sc_file_free()
-    - improved ACL's
-    - moved struct sc_card_error to opensc.h
-    - moved EF(DIR) parsing and encoding to dir.c
-      (encoding is not working yet)
-    - removed hst-test.c and filetest.c
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@213 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 092e87969d1670bbbc468bfd8ad19733976bd903
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Feb 17 21:55:57 2002 +0000
-
-    Bugfix for sc_destroy_context, pcsc_ctx was never released
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@212 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 262e5c20837601e3134dba0fedc9eff5807ad08e
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Feb 15 23:17:58 2002 +0000
-
-    - added error reporting for several new SWs
-    - added check_sw function to sc_card_operations
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@211 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 709727d469954f09f96492a219ecb60b334a62a2
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Feb 11 15:55:34 2002 +0000
-
-    - added partial support for TCOS 2.0 cards
-    - default card driver now tries to do a GET RESPONSE
-      instead of SELECT FILE to detect the correct
-      CLA byte
-    - moved security attribute parsing from iso7816.c to card-setec.c
-    - added some more sanity checking to sc_check_apdu
-    - added 'debug' command line option to opensc-explorer
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@210 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6db645e46c231ab0e1a03f18acc9ad07c1b564cd
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Feb 11 11:01:27 2002 +0000
-
-    AIX cc fixes
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@209 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d8c9a43566fab761e655522194085c4407c42d05
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Feb 11 10:49:36 2002 +0000
-
-    Portability fixes
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@208 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b26554a957415b09b1095c81bec24e05cd2359c5
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Feb 10 18:09:20 2002 +0000
-
-    - added a license notice to card-gpk.c
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@207 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b4063302bf694f579aec1e83f6bcb7d13189e842
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Feb 10 18:04:03 2002 +0000
-
-    - added partial support for GPK 4000
-    - made line parsing in opensc-explorer saner
-    - moved change_reference_data and reset_retry_counter to
-      iso7816.c, where they belong
-    - added partial libreadline support to opensc-explorer
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@206 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit bfc15fa7fd3375d98148ccfb11c9385cdfa24055
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Feb 7 13:10:53 2002 +0000
-
-    small #define HAVE_OPENSSL fixes
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@205 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ca4d5e5ba7dfdd2941c2e3cb2447ed1c69dc2218
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Feb 6 12:32:22 2002 +0000
-
-    Add install-exec-local and remove opensc-pkcs11.{la,a},
-    like we do with opensc-signer
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@204 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e798ffb59c2510bc7b1641cfd60139bdbef3a684
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Feb 6 10:36:58 2002 +0000
-
-    Tru64: Fix for PTHREAD_CREATE_JOINABLE $ok
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@203 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 888b3788de428e6ac0f5d8101ba8cf56be9951df
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jan 29 14:38:40 2002 +0000
-
-    Add install-exec-local and remove opensc-signer.{la,a},
-    any better way to do this?
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@202 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1fb23e7623f28f1edc242f0850974b43fe89a8fb
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jan 28 21:04:53 2002 +0000
-
-    - added support for T=1 protocol
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@201 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1e909781d70fc4cfe320015a81e79b8ee940a6ff
-Author: fabled <fabled at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jan 28 19:29:35 2002 +0000
-
-    Testing version. Use if you dare.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@200 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 14ae4fc895c574216777fa7c3e34710be96555f7
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jan 28 12:16:26 2002 +0000
-
-    Change OpenSC web site url to http://www.opensc.org/
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@199 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a2d2403684774dde74675eeb79416643811d4fe9
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Jan 26 21:16:56 2002 +0000
-
-    Add opensc-config
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@197 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 55641e59612af5a9daa60c7b8fc984956c3c22cf
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Jan 26 16:03:13 2002 +0000
-
-    - added opensc-config script
-    - added ATR string for Cryptoflex 8k
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@196 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d36e9ba93c19ee7307c95d42330662bb494c63ae
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Jan 26 12:16:13 2002 +0000
-
-    Fix compiler warnings
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@195 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 17332ea10ee0ae6fcfd9e05eee9d91adfe35faa5
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jan 24 18:37:12 2002 +0000
-
-    - last minute changes before the new release
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@194 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e6ccf518dab2d53b7eda2dab1a2e1481ff544815
-Author: fabled <fabled at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jan 24 16:27:09 2002 +0000
-
-    - many bug fixes in pkcs #11 module
-    - pkcs #11 module now creates public key objects too
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@193 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit fd9c25eeed3e1a657c55978f9e8a16ead0888ace
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jan 24 16:24:24 2002 +0000
-
-    - added README.Cryptoflex
-    - modified ChangeLog
-    - _really_ bumped up the version number this time
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@192 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c1cac5f311a0f282e7db0989675dbd39dbae654e
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jan 24 16:02:54 2002 +0000
-
-    - bumped up version number in preparation of the new release
-    - unified PKCS #15 DF decoding
-    - added PKCS #15 file caching
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@191 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ec83c728ad7159b4ebde0bae4c3ab20226845a1e
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jan 24 12:56:08 2002 +0000
-
-    Silence debug messages by default for upcoming release
-    README update
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@190 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9180ae86628584b0c001ce1769798c7ac3642f6f
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jan 22 17:41:46 2002 +0000
-
-    Fix pthread.h checking for recent releases of Tru64
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@189 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit cfa366d7e6c6fd8eb4bc0b3e480345f83ff81407
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jan 22 16:43:38 2002 +0000
-
-    - fixed a few typos
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@188 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c8313fb07ca73a05fdf9a90409d28028a3115f43
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jan 22 16:26:19 2002 +0000
-
-    Fix compiler warnings, for digital cc this time
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@187 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b9c165125be54428509a5b4ebfd856ef90711c11
-Author: fabled <fabled at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jan 22 14:54:01 2002 +0000
-
-    * many bugfixes in pkcs11 module
-    * memory corruption fix in pkcs15 framework
-    * pool node deletion fixed in misc.c
-    * now detects smartcards in C_GetSlotInfo too
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@186 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 82a2d72e6a3ba658b67586e51c189f8006a8b7f2
-Author: fabled <fabled at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jan 22 14:44:56 2002 +0000
-
-    Many bugfixes including segfault in card detection and C_GetSlotInfo
-    now detects the cards too.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@185 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 623e5ad1b409bfa6f389bca9de93ab19383ab610
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jan 21 15:37:01 2002 +0000
-
-    - changed PIN1 path in PKCS #15 structure
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@184 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit fee632833ac830521e772ebc372f71a3de44f177
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jan 21 15:11:35 2002 +0000
-
-    - added KEY verification to Cryptoflex driver
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@183 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a016a592592f99b305155b44349721c48e69221b
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jan 21 12:49:00 2002 +0000
-
-    - added PKCS #15 structure generation to cryptoflex-tool
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@182 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 552d4b260bd9f642634d8c79656783d49cc3eede
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jan 21 11:22:23 2002 +0000
-
-    Add *.u
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@181 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6d533a1c3d107b34c3964567cbe59b7891a56161
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jan 21 10:56:30 2002 +0000
-
-    Compiler warning fixups for various compilers
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@180 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 45a37df2f6cefda5a6c150a9cfc4cfee5f7fe248
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jan 21 10:56:03 2002 +0000
-
-    Add *.u and cryptoflex-tool to .cvsignore
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@179 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f1582007f6925e9edf25bd5e5ff67c49e7246379
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jan 21 09:05:22 2002 +0000
-
-    - improved file selection on Cryptoflex cards
-    - fixed an incompatability in PKCS #11 module
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@178 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d9792242cc5c7bdf24d14d0084ef26251f423f8d
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jan 20 21:20:09 2002 +0000
-
-    - fixed a bug with file permissions in flex_create_file()
-    - added RSA signature generation with Cryptoflex cards
-    - improved security environment handling
-    - implemented cryptoflex-tool
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@177 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5c8759a2161b89e746a9fa7ffb7ee1606c990dc8
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jan 20 18:24:53 2002 +0000
-
-    README updates after not so recent filename changes
-    sc-log.h cleanup for hst-test
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@176 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e7c65bf66905990d10cbd1ef09e7ed712827b057
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jan 17 23:47:03 2002 +0000
-
-    - PKCS #15 generation is now in a semi-working state
-    - started coding crypto support for Cryptoflexes
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@175 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a55a073636f37abb7e1a9980d35c3dfcfcfb68c3
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jan 17 12:05:44 2002 +0000
-
-    README cleanups
-    Fix compiler warnings
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@174 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7fbc97efb5f184ee572cef8a8b1d729a8ea4c8c4
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jan 17 12:04:43 2002 +0000
-
-    Remove gcc-specific options
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@173 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a8a31771f4c96ab70d07e9a76b783a53b732ca56
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jan 17 12:04:14 2002 +0000
-
-    int error -> int sc_error, since it conflicts with error() and
-    results to compiler error with various compilers.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@172 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e95f8aee84e7a446eea1b96bf5d46f85568b1a68
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jan 17 11:50:49 2002 +0000
-
-    - small bugfix
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@171 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 54e5d23e9300517b809d55125077573df7e4fb76
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jan 17 11:44:27 2002 +0000
-
-    - improved PKCS #15 generation
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@170 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ee55164f075e2512b3106f12be7c1805bf066142
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jan 17 09:37:58 2002 +0000
-
-    Add missing .cvsignore
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@169 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ffdc3c9a5821449407aef0bd0ee861d94bbf70b1
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jan 17 00:25:10 2002 +0000
-
-    - fixed a goof in last commit
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@168 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 20adb4b39c17a9b344e1555eca776a87dd7ec1e2
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jan 16 23:59:18 2002 +0000
-
-    - continued to improve PKCS #15 generation
-    - fixed a few problems in sc_set_security_env
-    - started to implement Better (tm) object handling for
-      PKCS #15 objects
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@167 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2d95b18b27ec23264b7d39dc073cb15b4f542dc8
-Author: fabled <fabled at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jan 16 22:52:39 2002 +0000
-
-    Changed pkcs11 header directory to rsaref.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@166 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3cd20d774f436132b0187a5bb3f31995b5297461
-Author: fabled <fabled at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jan 16 22:50:46 2002 +0000
-
-    RSA header files.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@165 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6e6d7177f0ad882931d603f6570fd160b3da9d15
-Author: fabled <fabled at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jan 16 22:49:03 2002 +0000
-
-    Rewritten implementation of pkcs#11 module. Semiworking.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@164 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7a7d7ee3d944eea0aa946fd4fe25f7abe3d0e2a9
-Author: fabled <fabled at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jan 16 22:43:22 2002 +0000
-
-    Preparing to commit new implementation of pkcs#11 module.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@163 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4e2192b0f4540acc5ea01c28cade00191b882a66
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jan 16 20:20:40 2002 +0000
-
-    - better ISO 7816-8 compatibility with various cards
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@162 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit fec21385232bbfe9750a1aaf28587abbf77b3618
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jan 15 18:54:53 2002 +0000
-
-    Fix compiler warnings
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@161 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 452b9d4193edebc867f84bead59db08e895fe1e3
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jan 13 23:56:13 2002 +0000
-
-    - pretty much finished the DER encoder
-    - added delete and create file support for 'flex cards
-    - PKCS #15 DF's are now stored more flexibly; this makes
-      adding new types of DF's (such as PuKDF's) easier
-    - added 'get' and 'put' commands to opensc-explorer
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@160 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 921bbce7f58a6e4e5165f86141e7dc370177a928
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jan 10 23:14:12 2002 +0000
-
-    - added doxygen.conf
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@159 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5c993e1136efbf78f14510ea13475c0fe61c8870
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jan 10 23:02:48 2002 +0000
-
-    - added PIN verification, file creation and file deletion to
-      opensc-explorer
-    - documented the core API a bit using doxygen
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@158 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b75b88a8b89bb74a35a4b6bfbe45d5c9d4e0a735
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jan 10 13:49:54 2002 +0000
-
-    Fix compiler warnings
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@157 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9dc705491907727b554cf11eb4124b55ecdb9ea4
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jan 10 12:33:56 2002 +0000
-
-    - added preliminary ASN.1 encoding support
-    - modified ASN.1 decoding to make it easier to
-      port decoder structures to the encoder
-    - fixed a recently introduced bug in card driver handling
-    - opensc-explorer will now allow only DF's to be cd'd into
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@156 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 26906e784398e95b7c3a53642103d2e3afce4c69
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jan 9 22:15:26 2002 +0000
-
-    Oops, fixed --with-pcsclite multiple directory probing to actually work.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@155 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c718344ddca5a8148eb96294b062b82f9f72392d
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jan 9 18:28:02 2002 +0000
-
-    libsc -> opensc
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@154 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e71e4492f35ee2c859cc7ba0878cae025a699a85
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jan 9 13:50:46 2002 +0000
-
-    Add opensc-explorer
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@153 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 269df3a6daaa13051383704a3c020b0bd29935d2
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jan 9 01:03:10 2002 +0000
-
-    - created opensc-explorer tool
-    - increased support for CryptoFlex cards
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@152 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6778d0b929399a0687d638b9e78a8aa5b07729ef
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jan 8 20:03:57 2002 +0000
-
-    Add missing executables to .cvsignore
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@151 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 7ff4c4544c7f5333f640eb01cb81d790ab83f91b
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jan 8 13:56:50 2002 +0000
-
-    - added preliminary CryptoFlex 16k support
-    - added short names to card drivers
-    - moved various ISO 7816-9 functions to their correct places
-    - added write binary support
-    - renamed opensc-crypt to pkcs15-crypt
-    - split a part opensc-tool to pkcs15-tool
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@150 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1a3e530f01d91d6dea14c277c74687092cccf68b
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jan 7 18:32:13 2002 +0000
-
-    - finished removing sc- prefix from the .c files
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@149 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9197babe53408cae5d3ffa1da843ce30f628b30a
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jan 7 18:23:34 2002 +0000
-
-    - renamed sc_asn1_parse to sc_asn1_decode
-    - added capabilities and flags fields to struct sc_card
-    - added a mutex to sc_context for future use
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@148 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4d2599a923f9874f54d61f501caf4de4dce8b4db
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jan 7 16:24:45 2002 +0000
-
-    Oops, accidently removed all pc/sc related stuff while
-    merging changes to opensc-signer/configure.ac, fixed.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@147 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d35a8b3b7e3ad52b33877763589dd67002b89564
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Jan 7 12:41:41 2002 +0000
-
-    Add npinclude to SUBDIRS
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@146 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9ca5849ab6552d83920387c116b243cc7f98b1c2
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jan 6 23:41:06 2002 +0000
-
-    Fix another compiler warning
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@145 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 68482721ccfe7955670008a9bcd3943412ae624a
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jan 6 22:17:31 2002 +0000
-
-    #include fixup
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@144 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f92775fabe323198dd62ae06b9773ec31e3f6c04
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jan 6 21:26:07 2002 +0000
-
-    Fix few compiler warnings on Tru64
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@143 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 859511f46c73b91fb7190d8e1ae1d6c61443b3ee
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jan 6 20:35:47 2002 +0000
-
-    Sync with opensc-signer's configure.ac
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@142 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 59a76542d29ae5a90068121e9461f46ad6f23cde
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jan 6 20:06:00 2002 +0000
-
-    Add CFLAGS_PCSC, CFLAGS_OPENSC, LIBOPENSC
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@141 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 259efb3b11a3edf514bc73405f3b658f7c205a86
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jan 6 19:40:24 2002 +0000
-
-    Add CFLAGS_PCSC, CFLAGS_OPENSC, CFLAGS_ASSUAN, LIBOPENSC
-    Add PIN_ENTRY instead of hardcoding it to "/usr/local/bin/gpinentry"
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@140 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b9da2154289f43321eedbc11c6cfb6f6fe225bd5
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Jan 6 19:40:12 2002 +0000
-
-    Add CFLAGS_PCSC, CFLAGS_OPENSC and LIBOPENSC, use them
-    instead of hardcoding paths into ../libopensc.la,
-    -I../libopensc, etc.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@139 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 39c503ed7bd167b22e21d90d326e3fe3e1ba61d0
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Jan 5 22:24:14 2002 +0000
-
-    Syncing with OpenSC's source tree
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@138 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6dbf1ae5e43e3e4b37865c3452c4cab551fcf04a
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Jan 5 21:46:15 2002 +0000
-
-    Add .cvsignore
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@137 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3bcb086df45e7d3f72233ead2e9dcefb51b9d1a0
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Jan 5 19:05:29 2002 +0000
-
-    Fix typo
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@136 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a3272093195434b876aafbc42b4ebf37688f5e7f
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Jan 5 19:01:55 2002 +0000
-
-    SCardGetStatusChange/rgReaderStates changes for compatibility
-    with older and/or modified pcsc-lite releases.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@135 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0a77426aa056723baa1760e308f0b3c630a720fc
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Jan 5 14:56:52 2002 +0000
-
-    - added new versions of PKCS #11 header files
-    - fixed a typo in generic.c
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@134 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5898cc7abceb75b5998bd1f528d9dc59d5f45c69
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Jan 5 14:47:44 2002 +0000
-
-    - blank padding added to some string values
-    - changed a few hardcoded values
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@133 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ee712b8b25e99097d2f64c78c0c4b87284b65e3c
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jan 3 08:47:45 2002 +0000
-
-    Warning fixes
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@132 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 891c3dbf88a76a9b2a8ae996533249bdea27d5a0
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jan 3 07:33:28 2002 +0000
-
-    AIX cc fix
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@131 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0c2086857aed0c5000f02ac0b3160f136c3332b6
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Jan 3 07:32:36 2002 +0000
-
-    Slight fixes for getopt_long hack, so it will
-    work for systems without getopt.h at all.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@130 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9bd6c8f9bb0982e5a01d3cf69fe797e26fd7a176
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Jan 2 22:15:31 2002 +0000
-
-    Add getopt/getopt_long sources from GNU C Library.
-    
-    Use them only if platform lacks support for getopt_long,
-    like most commercial operating systems do.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@129 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit fb4321ce0ff1908c132d6611124db0ae1b85f993
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jan 1 19:56:07 2002 +0000
-
-    More size_t fixes
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@128 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a95ed6fc7521437277ba7f8ed0757a9839ec60df
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jan 1 19:54:22 2002 +0000
-
-    Use \33 instead of \e.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@127 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 68928ae52001486494e013cb4907a1fce8f760c1
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jan 1 18:25:11 2002 +0000
-
-    - changed \\e back to \e in sc_log.c
-    - changed function prototypes in sc-asn1.c (int --> size_t)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@126 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5cdd262385a275736eeed0f3190b48ace3208c0c
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Jan 1 17:25:10 2002 +0000
-
-    - some fixes to the PKCS #11 module
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@125 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a769be2ae42d33fa8ddb88dcb96c18bdad28ff9b
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Dec 31 14:47:18 2001 +0000
-
-    Use -avoid-version, as we do with pam module.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@124 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 6adf61a7957f7b957e392b039130d9ed3cf420f9
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Dec 31 14:39:49 2001 +0000
-
-    Remove unneeded install-exec-local
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@123 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 74f568b87e45aecd2dd6e217be071ad8f1a63b3b
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Dec 31 13:30:57 2001 +0000
-
-    - a small bugfix
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@122 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8368c13f5292bd3a1dd8c795036646fa4e76bec6
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Dec 30 21:30:39 2001 +0000
-
-    sc- -> opensc-
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@121 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 607271df531a390e0c7104636fac0ad2edfbc497
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Dec 30 21:17:34 2001 +0000
-
-    Merges with SCIDI to help integrating build process with it
-    Remove some gcc specific flags from Makefile.am
-    Rename some header defines
-    size_t vs. int fixups
-    opensc.h: Define inline as null for other compilers than gcc, for now
-    Port pam_pkcs15 to compile for Solaris and HP-UX, untested
-    Fix compiler warnings
-    
-    OpenSC now compiles cleanly for Tru64, AIX and HP-UX.
-    
-    The only problem is the tools using getopt_long() (GNU extension),
-    to be fixed later..
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@120 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3e96a893ec8be3a7e8196204af4ce8bc595658f6
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Dec 29 19:03:46 2001 +0000
-
-    - ported certificate reading to new ASN.1 code
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@119 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit da88fb7d62149770314fdb07faf7cda30d4f347a
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Dec 29 18:14:08 2001 +0000
-
-    - renamed LIBPCSCLITE to LIBPCSC
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@117 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5201a83b21a60a45dd8084ebff268d5896150986
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Dec 29 12:44:11 2001 +0000
-
-    - another portability fix
-    - renamed sc-emv.c to sc-card-emv.c
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@116 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 13b1325aefcd8f7b6a78b900fb6777c01e077572
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Dec 29 12:39:41 2001 +0000
-
-    - fixed a portability problem
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@115 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4f5a311552ff87ea932bee4663d12f99d57bf9f9
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Dec 29 12:26:21 2001 +0000
-
-    Use -Werror if compiling with gcc
-    Add check for getopt.h
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@114 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f09933657a4caec6d35b6d318a4d7402ff94a252
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Dec 29 12:03:18 2001 +0000
-
-    - added missing files
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@113 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit daf877fadda58f400d55a8ae23b60538489f0d27
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Dec 29 11:57:34 2001 +0000
-
-    - fixed resplen values in sc_decipher and sc_compute_signature
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@112 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ad2e34cb6c7694b62838ec1f3c76571da41cb84d
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Dec 29 02:07:32 2001 +0000
-
-    - added preliminary support for EMV cards
-    - changed a few function prototypes
-    - implemented access control lists to files
-    - added sc_read_record() function
-    - updated the NEWS file
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@111 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4586a88efc21677a1a50ced689591aad0ccf75f5
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Dec 28 14:24:28 2001 +0000
-
-    Move hex_dump() to generic.c
-    Convert all C++-style comments to C-style
-    Fix compiler warnings for various platforms
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@110 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c37418d3b07fcd9dbb2dccdb51fb3930021e09c8
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Dec 28 14:23:17 2001 +0000
-
-    - sc_pkcs15_change_pin() prototype changed
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@109 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit db0740d1ca7cbe3203a2032aab044207ac3b3ce2
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Dec 28 14:19:41 2001 +0000
-
-    - fixed some compile warnings
-    - updated TODO
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@108 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 695ad01b282ab0c2bf4a97cced64a5443657a443
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Dec 27 17:25:10 2001 +0000
-
-    - added preliminary EMV support
-    - made a few bug fixes relating to select_file operation
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@107 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2b99f2df144e240cb8a4369e25c50dd11809198c
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Dec 25 20:45:48 2001 +0000
-
-    - added default driver for unidentified cards
-    - added select_file operation in Multiflex driver
-    - added 'list-drivers' command to opensc-tool
-    - moved stuff from opensc.h to sc-internal.h
-    - improved locking behaviour
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@106 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1d220ccdcab56174daeb118d141c51839770ca33
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Dec 25 20:38:23 2001 +0000
-
-    - added plugin description strings
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@105 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5d5738f1854a64d56c18668118350ec5c7b927e8
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Dec 24 15:48:07 2001 +0000
-
-    - added "-avoid-version" to LDFLAGS
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@104 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 21960bd1002dc56d4cd75e2a9ffb3f710f92240a
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Dec 23 15:48:02 2001 +0000
-
-    - updated to support latest version of OpenSC
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@103 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9cab4ae46127d317919caf298416af784a0b8350
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Dec 23 14:33:49 2001 +0000
-
-    - updated NEWS and README
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@102 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b6d0249add75cd96ad8d7baa53bf2107d665a9cf
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Dec 23 14:17:07 2001 +0000
-
-    Add HAVE_SSL_AND_SSL conditional because automake isn't flexible enough
-    Minor fixes for libpcsclite probe
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@101 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9905a8dd8edbcbf1406450cbe37e0a78a17548e6
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Dec 22 23:51:12 2001 +0000
-
-    - changed call convention of sc_select_file()
-    - begun to add support for Multiflex cards
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@100 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8e5c50ff5141217e94224ca9786c660d72920a3a
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Dec 22 23:14:16 2001 +0000
-
-    'make dist' fixes
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@99 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 8ea4c8926ed3111e41dd91871cc4d055570bc8a8
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Dec 22 23:13:59 2001 +0000
-
-    Disable --force for automake
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@98 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 25da9e085b0d52f79818b1c74977564a463289a2
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Dec 22 23:07:40 2001 +0000
-
-    - added some filenames to .cvsignore
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@97 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e9682deeceebf057164ffa6b9569b215a6cd0c48
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Dec 22 23:06:31 2001 +0000
-
-    - added authors Anssi Tapaninen and Timo Ter�s
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@96 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 468a7e3daf469c108785d0742d34e1e6b3ca52f9
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Dec 22 22:55:40 2001 +0000
-
-    Fix LIBPCSCLITE
-    Rename COMPILE_PAM conditional to HAVE_PAM
-    Remove lex check from configure.ac
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@95 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3775b18c817ed447e782cc4baa3381dbf91e5fd1
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Dec 22 22:27:20 2001 +0000
-
-    Autotools update. Add bunch of stuff to configure.in to
-    make building of libopensc more portable to various
-    operating systems.
-    
-    Requires autoconf 2.52 and automake 1.5.
-    
-    Add all necessary files except Makefile.in, so you still
-    need to run ./bootstrap though. There's not much point
-    adding config.guess and friends without them, maybe later.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@94 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9fffd5c70e7baae6983e76ecf1276bcb181b4050
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Dec 22 22:20:59 2001 +0000
-
-    Add directory aclocal for m4 macros.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@93 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit baeae167544ac985308376054abec8819564723f
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Dec 22 22:20:28 2001 +0000
-
-    Add opensc-ssh, pam_pkcs15-test, bas64, hst-test, lottery, p15dump,
-    pintest, prngtest, opensc-crypt and opensc-tool binary to .cvsignore.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@92 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4fdbb11a3206751c7f9a2b40e302c39cfbe77e2a
-Author: aet <aet at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Dec 22 22:11:43 2001 +0000
-
-    Add .cvsignore skeleton
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@91 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 36965ca6ebf6998c7cba98ace5a3e5d780f06d55
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Dec 22 20:52:57 2001 +0000
-
-    - updated to work with latest library version
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@90 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c344e28a9269353884cb7082a4f9830ea6a74bed
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Dec 22 20:43:09 2001 +0000
-
-    - added card abstraction layer support
-    - pretty much finished migrating to new ASN.1 code
-    - changed call semantics for sc_select_file()
-    - moved functions around
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@89 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0bba170d91878b8e176c13a1794d259255933d79
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Dec 22 13:38:25 2001 +0000
-
-    - LINT fixes
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@88 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c17ff3ebdf8f0fcabd7c08b47dbfdd7b6c5a119b
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Dec 21 23:34:47 2001 +0000
-
-    - continued improving ASN.1 decoding
-    - improved debug levels
-    - added some PC/SC Lite workarounds
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@87 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 41416437e5fdeb2417748f1846ed3b3868494c59
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Dec 20 13:57:58 2001 +0000
-
-    - paving way for dynamic card modules
-    - fixed a few memory leaks
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@86 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ff560ba23927beda87e9e926aa69f960bd18fe24
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Dec 20 12:22:18 2001 +0000
-
-    - added basic logging to sc-pkcs15-sec.c
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@85 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 503cbd478221a0d0a2025dc79bdf85f238367b53
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Dec 20 12:16:05 2001 +0000
-
-    - added base64 conversion tool
-    - updated to work with latest version of OpenSC library
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@84 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9989c11a6d88961484435cec75cbce49cd87389d
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Dec 19 21:58:04 2001 +0000
-
-    - remembered ChangeLog
-    - moved some functions from sc.c to sc-iso7816-4.c
-    - added fancy colors to log output =)
-    - removed global sc_debug variable, moved it to sc_context
-    - fixed new ASN.1 code (possibly still unstable)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@83 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ef3defb2977ebc25d67d0aafdd0ba482db96caf6
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Dec 17 21:36:41 2001 +0000
-
-    - applied a patch by Antti Tapaninen that fixes a memory leak
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@82 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 83dd7bee00fed10e5bd864fe78e1c71cf47a2e6a
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Dec 16 20:30:42 2001 +0000
-
-    - added a small fix. Swedish Posten eID cards are now supported.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@81 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5e00917fcc85a0aea0eeebf36ae84108333d3576
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Dec 16 18:46:32 2001 +0000
-
-    - bumped version number up to 0.4.0
-    - improved ASN.1 decoding _lots_
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@80 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9423884172980146e62d98cd40a331f02ad50a81
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Dec 15 01:48:47 2001 +0000
-
-    - latest breaking news
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@79 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5930ce80069359e21e3508c7c671ef5d1a5ca138
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Dec 15 01:44:46 2001 +0000
-
-    - updated OpenSSH support
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@78 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0191d6c07d8e6d00abe9033028bc5db42fb79a2f
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Dec 15 01:29:51 2001 +0000
-
-    - paving way for version 0.3.5
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@77 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 166b369ffe0bb61be169457edda4c38c952ce0af
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Dec 15 01:27:51 2001 +0000
-
-    - meddled with command abbreviations
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@76 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b1a85aace07610dd79b765ff80774dc8de3b54c8
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Dec 15 01:10:53 2001 +0000
-
-    - fixed distribution tarball generation
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@75 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 89c1f182caec769cc9fbfbdb48bde2f520b6c7a1
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Dec 15 01:08:24 2001 +0000
-
-    - moved npunix.c
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@74 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d52bd93544d182d84d4378147f570f7edfab6073
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Dec 15 00:57:33 2001 +0000
-
-    - fixed changed "include" to "npinclude"
-    - added a note about assuan to README
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@73 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ac3b36e8a5f0d81185b6f0dac6bb1af984a01752
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Dec 15 00:46:40 2001 +0000
-
-    - removed unnecessary assuan cruft
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@72 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 96be2f8d399b33bbd13a229d78d0b79fb454d68f
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Dec 15 00:39:45 2001 +0000
-
-    - added include files from Netscape plugin SDK
-    - removed hardcoded PIN
-    - added PIN dialog through assuan
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@71 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit bd9396d87f974b4d2bc2b48195397e293da9ca96
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Dec 14 16:37:45 2001 +0000
-
-    - updated tools to support latest version of the library
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@70 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c46ac85a0764886051fbb48a90cc728cc28e4992
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Dec 13 21:19:11 2001 +0000
-
-    - improved logging facilities
-    - removed a few compiler warnings
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@69 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9fccf2c6464a2249275abd919b1f82ff51bbdbc3
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Dec 11 14:53:22 2001 +0000
-
-    - added "learn-card" command to opensc-tool
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@68 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 86bef9c75e60464e9fa50b7ae64905bcbe4027ee
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Dec 11 14:52:17 2001 +0000
-
-    - improved certificate caching
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@67 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e5a0f35f5ee48a5c9fc60db43287c0f7b416e059
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Dec 8 15:35:30 2001 +0000
-
-    - added depcomp to AUX_DIST
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@66 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 683f561800bacbb7da1e232d671c8dd0d2915dfb
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Dec 8 15:27:40 2001 +0000
-
-    - removed config directory
-    - fixed compiling with C++
-    - added error SC_ERROR_CARD_RESET
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@65 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 684623a2ec903af073251d749b0149e373772d6b
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Dec 8 14:19:47 2001 +0000
-
-    - begun to implement PIN dialog
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@64 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0fbe06b8eb4f327f4f16e63e59fca8d18dfe0a1d
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Dec 7 00:57:16 2001 +0000
-
-    - first working version of signer plugin
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@63 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 06fc4565ba2dceb2adc62305e5fac6e263f8623b
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Dec 2 19:21:46 2001 +0000
-
-    - fixed sc_pkcs15_change_pin()
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@62 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit bc946d6bfe24bd5ee6f00d354c883129fe7b54d9
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Dec 2 19:17:11 2001 +0000
-
-    - added support for Base64 decoding
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@61 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 61ca346203eb993316839778cf283b537282ca2c
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Nov 30 11:57:21 2001 +0000
-
-    - added PIN changing support
-    - started to work on nsplugin
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@60 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 02178156652463b4fecb75f4772b2d9c44e83b7d
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Nov 27 23:37:30 2001 +0000
-
-    - small changes in README
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@59 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5be3bd3b7e26078663f18898ad560f12f516632b
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Nov 27 21:25:15 2001 +0000
-
-    - a few fixes for libopensc 0.3.2 support
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@58 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit d277cf5d5c01560aed40991dfb2112f253e47fb9
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Nov 27 21:11:32 2001 +0000
-
-    - fixed a few bugs in Autotools support
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@57 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e5d40ca03c4fb3074e98e56834bf645a907098f4
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Nov 26 20:14:48 2001 +0000
-
-    - started to migrate to GNU Autotools
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@56 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a1349a68c41d2c42519eee7746695a055298dedc
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Nov 26 16:14:22 2001 +0000
-
-    - added defaults for FINEID S4-2 (organization) cards
-    - fixed a few typos
-    - renamed _sc_sw_to_errorcode() to sc_sw_to_errorcode()
-    - PAM module now uses RSA_sign instead of RSA_public_encrypt
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@55 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5c4c94779daf64302869bc61e2a0d01c51f15846
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Nov 24 15:12:32 2001 +0000
-
-    - changed "sc.h" to "opensc.h"
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@54 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c75812bcf80051e38f0bcddfa59339530741021a
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Nov 24 13:34:48 2001 +0000
-
-    - changed project name to OpenSC
-    - removed obsolete rsa_libsc.c
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@53 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 939146ffed58af7b472ee448859cdedab93be7c3
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Nov 24 13:32:52 2001 +0000
-
-    - changed project name to OpenSC
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@52 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 674cbb19795b6747b7b7bf0c065e6b1a4b66ee59
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Nov 22 15:40:51 2001 +0000
-
-    - added sc-crypt program
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@51 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a96d31344a442b579aa912c5eb23e64b70cfc7bd
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Nov 21 23:28:03 2001 +0000
-
-    - converted C_Sign() to use the new API
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@50 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e0d6e061158d6cb25415cac99d70be2bb1320573
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Nov 21 22:40:27 2001 +0000
-
-    - small fix in sc-tool.c
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@49 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2ac6b811a542680153b820fc1a59d3ffd0561ea9
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Nov 21 21:19:58 2001 +0000
-
-    - added install target to libsc Makefile
-    - added a few functions
-    - added a patch against OpenSSH 3.0.1p1 to enable libsc support
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@48 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ea594e3e50037e10eaabe864016233ce3c4554c5
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Nov 20 22:21:58 2001 +0000
-
-    - added very partial SSH support
-    - rearranged some functions
-    - added several new functions
-    - fixed handling of SW's
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@47 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e5cf39b2eb33d940334a0c29e94074add4373f55
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Nov 18 20:36:15 2001 +0000
-
-    - small bug fixed
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@46 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f2f3a30792c00ef61d3d44d055f15cc265056cc9
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Nov 18 01:52:32 2001 +0000
-
-    - added sc-tool
-    - removed certtest.c
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@45 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e53cfa459560eda0e1b5711d185fa85d4692dd4b
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Nov 17 15:48:10 2001 +0000
-
-    - added README for PAM module
-    - added a few error messages
-    - fixed certificate caching (which is still kludgy)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@44 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 1194017d5a6a9f7656a8e5ace6fd2d6419ceb079
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Nov 17 14:55:41 2001 +0000
-
-    - added defaults; full PKCS#15 parsing is no-longer required at startup
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@43 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 584f5e5cb8a9d1fc4a1d2d60c4281b2df8ab52af
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Nov 17 00:11:29 2001 +0000
-
-    - PAM module is semi-working now
-    - added sc_asn1_put_tag() and sc_restore_security_env() functions
-    - preliminary support for CREATE FILE and DELETE FILE commands
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@42 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit eb4d366453349e7caff55d95c003733278268025
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Nov 15 14:44:36 2001 +0000
-
-    - added a PAM module playground directory
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@41 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e883b6f9891829c6a0078b50b8c34bebadfe9830
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Nov 14 13:43:39 2001 +0000
-
-    - committed a patch from Antti Tapaninen <aet at cc.hut.fi>
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@40 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 187d8a0b29471e90feff26bf2edffdd3c42f61cd
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Nov 7 14:36:57 2001 +0000
-
-    - moved sc_list_files() to sc.c
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@39 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit fac50be0764ce7b3499ed951a0ec78bfbbe33df4
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Nov 7 13:45:41 2001 +0000
-
-    - fixed sc_get_random()
-    - added ATR to struct sc_card
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@38 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 725a7177b2cc67ba6952a1f305cdab954722659e
-Author: fabled <fabled at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Nov 6 18:43:36 2001 +0000
-
-    Updated license to LGPL.
-    Added short description.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@37 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 18bab373b8cddc4ec80d5e6ee67d6dc8e2affe3e
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Nov 6 18:34:19 2001 +0000
-
-    - changed license to LGPL
-    - moved ASN.1 function definitions from sc.h to sc-asn1.h
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@36 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 27cc0a0189f0e09a519af51cc2b5a72c43724650
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Nov 5 19:39:18 2001 +0000
-
-    - fixed base64 encoding function
-    - added file listing test to hst-test.c
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@35 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 16c6db4b2a67be2dfbc7cc0d24b0ce4fdb87e288
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Nov 4 14:08:38 2001 +0000
-
-    assorted small fixes
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@34 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 58fd72f22fafbcc4995aaf1b6dae3d9fb7a53103
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Nov 4 13:57:04 2001 +0000
-
-    - added support for base64 encoding
-    - added certtest tool
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@33 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3f727ca8b7c29ce8e4ea6f98d1e5e1b47f4a005b
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Nov 1 15:44:19 2001 +0000
-
-    - added a 'return 0' statement
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@32 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit c57e2e266d89c1fb96f216813e3122862d980c92
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Nov 1 15:43:20 2001 +0000
-
-    - moved libsc to its own directory
-    - added non-working MIME plugin for "text/x-text-to-sign"
-    - added pseudo-random number generator support
-    - split hst-test.c into smaller files
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@31 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit aea833a5e8e336cd66a88289957b96dae107950f
-Author: fabled <fabled at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Tue Oct 30 16:16:18 2001 +0000
-
-    Added copyright notes.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@30 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2ffefc3f839068725b21b36c71a9d7777e6fef8a
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Oct 29 15:52:56 2001 +0000
-
-    - updated README.decrypt
-    - fixed a few compiler warnings
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@29 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f43f23050cd6d290b67db45020805c3e46a90721
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Thu Oct 25 11:56:26 2001 +0000
-
-    added:
-    - certificate parsing
-    - support for reading RSA public key modulus on the fly
-    - support for ASN.1 object id decoding and printing
-    - fixed a lot of u8 * --> const u8 *
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@28 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2a981ac02ce0605e741a0fd8688d1bd5292de560
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Oct 24 14:48:25 2001 +0000
-
-    removed hard-coded PIN code... =)
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@27 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit e52d097f2370b19e2a2403f7d8b6b3ad645353e1
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Oct 24 14:02:47 2001 +0000
-
-    latest version
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@26 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 32d6315d54f75018806c06ec6234367ecc99d2f0
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Wed Oct 24 09:31:36 2001 +0000
-
-    added COPYING file
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@25 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2f086f5261d945f95e3d5dfafe90fbab9ad54bd2
-Author: fabled <fabled at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Oct 22 21:09:17 2001 +0000
-
-    Implementid basic signing functionality.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@24 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a1af1550181e442ac87f932c8e5e36c7053cb8eb
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Oct 22 21:05:07 2001 +0000
-
-    dirty fix
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@23 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0ba739b3d41a101c43d18bcc7b49c5b57cc1177f
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Oct 22 20:43:26 2001 +0000
-
-    - quick and dirty fix applied
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@22 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5df5aa7ca9ea98f3b7ba812b946c596b8219755c
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Oct 22 20:07:59 2001 +0000
-
-    - added ability to compute digital signatures
-    - split functions to different files
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@21 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4d8a79ca42d5a3946690f565ea8d90b56affd23a
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Mon Oct 22 14:51:15 2001 +0000
-
-    - implemented decrypt support
-    - split PIN related functions to a separate file
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@20 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit bff3bf85609dc5359919534ab24b4244b8f6f3d5
-Author: fabled <fabled at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Oct 21 22:25:11 2001 +0000
-
-    Updates.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@19 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 68eedb40d2ec26f423025e5bec590ca5c17a1f73
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Oct 21 21:26:22 2001 +0000
-
-    small bug-fix in sc_enum_certificates()
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@18 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 5414ed9bb095e7418c5535b9897e87ad0336e005
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Oct 21 21:22:16 2001 +0000
-
-    - added struct sc_path
-    - implemented private key enumeration
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@17 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9ea1e4be9e61b62202c6367d7c32316a714ab188
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Oct 21 19:42:32 2001 +0000
-
-    fixed PIN info reading
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@16 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 08fba4d225482a29f41c64c200b56bcc066b07fd
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Oct 21 19:06:48 2001 +0000
-
-    sc_pkcs15_read_certificate now dynamically allocates output buffer
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@15 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 731312443bcfdbea57548f4eb58537ea0b8d0e6a
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Oct 21 18:55:59 2001 +0000
-
-    - implemented certificate reading
-    - started to implement private key enumeration
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@14 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 202c8e5227ee85e3567183b82f423559098ef1a0
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Oct 21 18:12:48 2001 +0000
-
-    - given ASN.1 decoding routines a facelift
-    - implemented certificate enumeration
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@13 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3088f6547b65b11e4d33a812cf142eca4e9c8ea8
-Author: fabled <fabled at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Oct 21 16:26:46 2001 +0000
-
-    Minor bug fixes.
-    Implemented the object finding properly.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@12 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 0af1a516a660c534b903daf093f28ac91fc1200d
-Author: fabled <fabled at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Oct 21 16:01:07 2001 +0000
-
-    Basic skeleton for object manipulation.
-    Some testing stuff.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@11 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 07671adadd3c22ac9d32265eaf11457ac279933d
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sun Oct 21 15:42:56 2001 +0000
-
-    fixed tokenInfo parsing
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@10 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 86bbeffc40e6528b615282cf7e4ee15f2350bd8f
-Author: fabled <fabled at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Oct 20 23:51:58 2001 +0000
-
-    Added basic session management.
-    Implemented login, logout and change pin functions.
-    Improved card management.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@9 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 4636ef651664c68053550b5041bdc43cd9f9d0a9
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Oct 20 20:33:10 2001 +0000
-
-    fixed a weird escaping bug in sc_read_binary(). this could affect other
-    functions too. needs more research.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@8 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 9476addfa07d4a35fdfca7fb538279961e490d4f
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Oct 20 16:54:54 2001 +0000
-
-    lots and lots of changes.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@7 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit b5d584e5a7febd8f613209115d4ce7b987a031bf
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Sat Oct 20 16:53:51 2001 +0000
-
-    modified to use latest SC API
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@6 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit ce82fc73164488ce64878e5214acfccb6c828ffc
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Oct 19 23:23:16 2001 +0000
-
-    Major additions and fixes to core API
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit f3bf3dc0b8702a4473271e9b763e70d7ef009c89
-Author: fabled <fabled at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Oct 19 19:52:00 2001 +0000
-
-    Implemented dummy functions for PKCS#15 module with
-    functionality to read card reader names.
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit a6a988ec68b84930881af5fd8e5bf0a9ef6fcaa4
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Oct 19 17:30:59 2001 +0000
-
-    some structural changes; might not even compile
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 2656921bbea2827031cae790b228467e8bc1c95c
-Author: jey <jey at c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Oct 19 17:26:04 2001 +0000
-
-    initial commit
-    
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2 c6295689-39f2-0310-b995-f0e70906c6a9
-
-commit 3d1958a68fdc240d1201343b985111729111163f
-Author: (no author) <(no author)@c6295689-39f2-0310-b995-f0e70906c6a9>
-Date:   Fri Oct 19 17:26:04 2001 +0000
-
-    New repository initialized by cvs2svn.
-    
-    git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1 c6295689-39f2-0310-b995-f0e70906c6a9
diff --git a/MacOSX/10.5/resources/InstallationCheck.strings b/MacOSX/10.5/resources/InstallationCheck.strings
deleted file mode 100644
index edd18a1..0000000
Binary files a/MacOSX/10.5/resources/InstallationCheck.strings and /dev/null differ
diff --git a/MacOSX/10.5/resources/ReadMe.html b/MacOSX/10.5/resources/ReadMe.html
deleted file mode 100644
index 8cf5fd5..0000000
--- a/MacOSX/10.5/resources/ReadMe.html
+++ /dev/null
@@ -1,26 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-	<style type="text/css">
-		body { font: 12px Helvetica; }
-		h1 { font-size: 16px; }
-		h2 { font-size: 13px; padding-bottom: 5px; padding-top: 5px; }
-		p { padding: 10px; }
-	</style>
-	<meta http-equiv="content-type" content="text/html; charset=utf-8" />
-</head>
-<body>
-
-
-<h1>OpenSC, version 0.13.0</h1>
-<p>for Mac OS X 10.5 (Leopard), universal (32-bit i386 and ppc)</p>
-
-<p>OpenSC provides a set of libraries and utilities to work with smart cards. Its main focus is on cards that support cryptographic operations, and facilitate their use in security applications such as authentication, mail encryption and digital signatures.</p>
-
-<p>OpenSC implements the <a  href="http://www.rsa.com/rsalabs/node.asp?id=2133">PKCS#11 API</a> so applications supporting this API (such as Mozilla Firefox and Thunderbird) can use it. On the card OpenSC implements the <a href="http://www.rsa.com/rsalabs/node.asp?id=2141">PKCS#15</a> standard and aims to be compatible with every software/card that does so, too.</p>
-
-<h2>Documentation:</h2>
-<p>The OpenSC Wiki is available at: <a href="http://www.opensc-project.org/opensc">http://www.opensc-project.org/opensc</a> and should be consulted for further documentation and support.</p>
-
-</body>
-</html>
diff --git a/MacOSX/10.5/scripts/InstallationCheck b/MacOSX/10.5/scripts/InstallationCheck
deleted file mode 100755
index c65c8c9..0000000
--- a/MacOSX/10.5/scripts/InstallationCheck
+++ /dev/null
@@ -1,116 +0,0 @@
-#!/usr/bin/perl
-
-my $SYSTEM_VERS = "/System/Library/CoreServices/SystemVersion.plist";
-my $EXIT_VALUE = 0;
-
-if ( $ENV{OS_INSTALL} == 1) {
-	exit (0);
-}
-
-DO_CHECKS: {
-	# 10.5.8 or higher system must be active
-	if(CheckVersion("$SYSTEM_VERS", "10.5.8", "ProductVersion", "<")) {
-		$EXIT_VALUE = ((1 << 6) | ( 1 << 5 ) | 17 );
-		last;
-	}
-	# 10.5 system must be active
-	if(CheckVersion("$SYSTEM_VERS", "10.6", "ProductVersion", ">")) {
-		$EXIT_VALUE = ((1 << 6) | ( 1 << 5 ) | 18 );
-		last;
-	}
-}
-exit($EXIT_VALUE);
-
-###
-
-sub CheckVersion
-{
-    my $path            = $_[0];
-    my $version         = $_[1];
-    my $keyName         = $_[2];
-    my $operator        = $_[3];
-
-    if (! -e $path) {
-        return 0;
-    }
-
-    if (!$operator) {
-        $operator = "==";
-    }
-
-    my $oldSeperator = $/;
-    $/ = \0;
-
-    open( PLIST, "$path") || do {
-        return 0;
-    };
-
-    $plistData = <PLIST>;
-    $plistData =~ /<dict>(.*?)<\/dict>/gis;
-
-    @items = split(/<key>/, $plistData);
-
-    shift @items;
-    foreach $item (@items) {
-        $item =~ /(.*?)<\/key>.*?<string>(.*?)<\/string>/gis;
-        $versiondata{ $1 } = $2;
-    }
-
-    close(PLIST);
-
-    $/ = $oldSeperator;
-
-    @theVersionArray = split(/\./, $versiondata{$keyName});
-    for ($i = 0; $i < 3; $i++) {
-        if(!$theVersionArray[$i]) {
-            $theVersionArray[$i] = '0';
-        }
-    }
-
-    @versionArray = split(/\./, $version);
-    
-    my $actualVersion;
-
-    for ($i = 0; $i < 3; $i++) {
-        if (($theVersionArray[$i] != $versionArray[$i]) or ($i == 2)) {
-
-            $actualVersion = $theVersionArray[$i];
-            $version = $versionArray[$i];
-
-            last;
-        }
-    }
-
-    my $expression = '$actualVersion ' . $operator . ' $version';
-    if( eval ($expression) )
-    {
-        return 1;
-    }
-    else
-    {
-        return 0;
-    }
-
-}
-
-sub CheckIOReg
-{
-        $RESULT = 0;
-
-        open(IOREGOUT, "/usr/sbin/ioreg |");
-
-        foreach $LINE (<IOREGOUT>) {
-                $BUF .= $LINE;
-        }
-        close(IOREGOUT);
-
-        foreach $ITEM (@_) {
-                if($BUF =~ /$ITEM/g) {
-                        $RESULT = 1;
-                        last;
-                }
-        }
-
-        return($RESULT);
-}
-
diff --git a/MacOSX/10.5/scripts/postflight b/MacOSX/10.5/scripts/postflight
deleted file mode 100755
index 443a782..0000000
--- a/MacOSX/10.5/scripts/postflight
+++ /dev/null
@@ -1,25 +0,0 @@
-#!/bin/bash
-
-if !([ -e "/usr/lib/opensc-pkcs11.so" ])
-then
-	ln -s /Library/OpenSC/lib/opensc-pkcs11.so /usr/lib/opensc-pkcs11.so
-fi
-if [ -e "/Library/OpenSC/etc/opensc.conf.md5" ]
-then
-	read cs_fromfile file < "/Library/OpenSC/etc/opensc.conf.md5"
-	cs_calculated=$( md5 -q "/Library/OpenSC/etc/opensc.conf")
-	if [ "$cs_fromfile" = "$cs_calculated" ]
-	then
-		mv /Library/OpenSC/etc/opensc.conf.orig /Library/OpenSC/etc/opensc.conf
-		md5 -r /Library/OpenSC/etc/opensc.conf  > /Library/OpenSC/etc/opensc.conf.md5
-	fi
-else
-	mv /Library/OpenSC/etc/opensc.conf.orig /Library/OpenSC/etc/opensc.conf
-	md5 -r /Library/OpenSC/etc/opensc.conf  > /Library/OpenSC/etc/opensc.conf.md5
-fi
-for f in /Library/OpenSC/bin/*
-do
-	ln -sf $f /usr/local/bin
-done
-
-exit 0
diff --git a/MacOSX/10.6/resources/InstallationCheck.strings b/MacOSX/10.6/resources/InstallationCheck.strings
deleted file mode 100644
index 6b40a02..0000000
Binary files a/MacOSX/10.6/resources/InstallationCheck.strings and /dev/null differ
diff --git a/MacOSX/10.6/resources/License.html b/MacOSX/10.6/resources/License.html
deleted file mode 100644
index b47b5f8..0000000
--- a/MacOSX/10.6/resources/License.html
+++ /dev/null
@@ -1,170 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-	<title>EST Install OpenSC</title>
-	<style type="text/css">
-		body { font: 12px Helvetica; }
-		h1 { font-size: 16px; }
-		h2 { font-size: 13px; padding-bottom: 5px; padding-top: 5px; }
-		p { padding: 10px; }
-	</style>
-	<meta http-equiv="content-type" content="text/html; charset=utf-8" />
-</head>
-<body>
-
-<h1 style="text-align: center;">GNU LESSER GENERAL PUBLIC LICENSE</h1>
-<p style="text-align: center;">Version 2.1, February 1999</p>
-
-<blockquote>
-<p>Copyright (C) 1991, 1999 Free Software Foundation, Inc.
-59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-Everyone is permitted to copy and distribute verbatim copies
-of this license document, but changing it is not allowed.</p>
-
-<p>[This is the first released version of the Lesser GPL.  It also counts
- as the successor of the GNU Library Public License, version 2, hence
- the version number 2.1.]</p></blockquote>
-
-<h3>Preamble</h3>
-
-<p> The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. </p>
-
- <p>This license, the Lesser General Public License, applies to some specially designated software packages--typically libraries--of the Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better strategy to use in any particular case, based on the explanations below.
-</p>
-<p> When we speak of free software, we are referring to freedom of use, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish); that you receive source code or can get it if you want it; that you can change the software and use pieces of it in new free programs; and that you are informed that you can do these things.</p>
-
- <p>To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library or if you modify it.
-</p>
-<p> For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling it. And you must show them these terms so they know their rights. </p>
-
- <p>We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library. </p>
-
- <p>To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others. </p>
-<p>
- Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license. </p>
-
- <p>Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs. </p>
-
- <p>When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library. </p>
-
- <p>We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances. </p>
-
- <p>For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License.
-</p>
- <p>In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system. </p>
-
-<p> Although the Lesser General Public License is Less protective of the users' freedom, it does ensure that the user of a program that is linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library.
-</p>
- <p>The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must be combined with the library in order to run. </p>
-
-<h3>TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION</h3>
-
-<p><strong>0.</strong> This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License"). Each licensee is addressed as "you".</p>
-
-<p> A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. </p>
-
-<p> The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) </p>
-
-<p> "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library.</p>
-
- <p>Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does. </p>
-
-<p><strong>1.</strong> You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library.
-</p>
-<p> You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. </p>
-
-<p><strong>2.</strong> You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions:
-</p>
-
-<blockquote>
-<p>a) The modified work must itself be a software library. </p>
-<p>b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change.</p>
-<p>c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. </p>
-<p>d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful. </p>
-
-
-<p> (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.) 
-</p>
-<p> These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, who [...]
-</p>
- <p>Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library.
-</p>
-<p> In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License.
-</p></blockquote>
-<p><strong>3.</strong> You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any ot [...]
-
- <p>Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy.
-</p>
-<p> This option is useful when you wish to copy part of the code of the Library into a program that is not a library.
-</p>
-<p><strong>4.</strong> You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange.
-</p>
-
- <p>If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code.</p>
-
-<p><strong>5.</strong> A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. </p>
-
-<p> However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. </p>
-
-<p> When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. </p>
-
-<p> If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) </p>
-
-<p>Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. </p>
-
-<p><strong>6.</strong> As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. </p>
-<p>
- You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: </p>
-
-<blockquote><p>a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified [...]
-
-<p>b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if the user installs one, as long as the modified version is interface-compatible with the version that the work was made with. </p>
-<p>
-c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. </p>
-
-<p>d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. </p>
-
-<p>e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy.</p>
-</blockquote>
-
- <p>For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. </p>
-
-<p> It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. </p>
-
-<p><strong>7.</strong> You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things: </p>
-
-<blockquote>
-<p>a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above. </p>
-
-<p>b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work.</p></blockquote>
-
-<p><strong>8.</strong> You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. </p>
-<p>
-<strong>9.</strong> You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Li [...]
-<p>
-<strong>10.</strong> Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties with this License. </p>
-
-<p><strong>11.</strong> If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequ [...]
-<p>
-If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. </p>
-
-<p>It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/do [...]
-
-<p>This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. </p>
-<p>
-<strong>12.</strong> If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. </p>
-<p>
-<strong>13.</strong> The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.</p>
-
-<p>Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation. </p>
-<p>
-<strong>14.</strong> If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reu [...]
-<p>
-NO WARRANTY </p>
-<p>
-<strong>15. </strong>BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBR [...]
-<p>
-<strong>16.</strong> IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE O [...]
-
-</body>
-</html>
\ No newline at end of file
diff --git a/MacOSX/10.6/resources/ReadMe.html b/MacOSX/10.6/resources/ReadMe.html
deleted file mode 100644
index 521067a..0000000
--- a/MacOSX/10.6/resources/ReadMe.html
+++ /dev/null
@@ -1,26 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-	<style type="text/css">
-		body { font: 12px Helvetica; }
-		h1 { font-size: 16px; }
-		h2 { font-size: 13px; padding-bottom: 5px; padding-top: 5px; }
-		p { padding: 10px; }
-	</style>
-	<meta http-equiv="content-type" content="text/html; charset=utf-8" />
-</head>
-<body>
-
-
-<h1>OpenSC, version 0.13.0</h1>
-<p>for Mac OS X 10.6 (Snow Leopard) and 10.7 (Lion), universal (32-bit and 64-bit)</p>
-
-<p>OpenSC provides a set of libraries and utilities to work with smart cards. Its main focus is on cards that support cryptographic operations, and facilitate their use in security applications such as authentication, mail encryption and digital signatures.</p>
-
-<p>OpenSC implements the <a  href="http://www.rsa.com/rsalabs/node.asp?id=2133">PKCS#11 API</a> so applications supporting this API (such as Mozilla Firefox and Thunderbird) can use it. On the card OpenSC implements the <a href="http://www.rsa.com/rsalabs/node.asp?id=2141">PKCS#15</a> standard and aims to be compatible with every software/card that does so, too.</p>
-
-<h2>Documentation:</h2>
-<p>The OpenSC Wiki is available at: <a href="http://www.opensc-project.org/opensc">http://www.opensc-project.org/opensc</a> and should be consulted for further documentation and support.</p>
-
-</body>
-</html>
diff --git a/MacOSX/10.6/resources/ReadMe.html.in b/MacOSX/10.6/resources/ReadMe.html.in
deleted file mode 100644
index 6ea3e5b..0000000
--- a/MacOSX/10.6/resources/ReadMe.html.in
+++ /dev/null
@@ -1,26 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-	<style type="text/css">
-		body { font: 12px Helvetica; }
-		h1 { font-size: 16px; }
-		h2 { font-size: 13px; padding-bottom: 5px; padding-top: 5px; }
-		p { padding: 10px; }
-	</style>
-	<meta http-equiv="content-type" content="text/html; charset=utf-8" />
-</head>
-<body>
-
-
-<h1>OpenSC, version @PACKAGE_VERSION@</h1>
-<p>for Mac OS X 10.6 (Snow Leopard) and 10.7 (Lion), universal (32-bit and 64-bit)</p>
-
-<p>OpenSC provides a set of libraries and utilities to work with smart cards. Its main focus is on cards that support cryptographic operations, and facilitate their use in security applications such as authentication, mail encryption and digital signatures.</p>
-
-<p>OpenSC implements the <a  href="http://www.rsa.com/rsalabs/node.asp?id=2133">PKCS#11 API</a> so applications supporting this API (such as Mozilla Firefox and Thunderbird) can use it. On the card OpenSC implements the <a href="http://www.rsa.com/rsalabs/node.asp?id=2141">PKCS#15</a> standard and aims to be compatible with every software/card that does so, too.</p>
-
-<h2>Documentation:</h2>
-<p>The OpenSC Wiki is available at: <a href="http://www.opensc-project.org/opensc">http://www.opensc-project.org/opensc</a> and should be consulted for further documentation and support.</p>
-
-</body>
-</html>
\ No newline at end of file
diff --git a/MacOSX/10.6/resources/background.jpg b/MacOSX/10.6/resources/background.jpg
deleted file mode 100644
index ee5ac84..0000000
Binary files a/MacOSX/10.6/resources/background.jpg and /dev/null differ
diff --git a/MacOSX/10.6/scripts/InstallationCheck b/MacOSX/10.6/scripts/InstallationCheck
deleted file mode 100755
index de1a4f5..0000000
--- a/MacOSX/10.6/scripts/InstallationCheck
+++ /dev/null
@@ -1,116 +0,0 @@
-#!/usr/bin/perl
-
-my $SYSTEM_VERS = "/System/Library/CoreServices/SystemVersion.plist";
-my $EXIT_VALUE = 0;
-
-if ( $ENV{OS_INSTALL} == 1) {
-	exit (0);
-}
-
-DO_CHECKS: {
-	# 10.6.8 or higher system must be active
-	if(CheckVersion("$SYSTEM_VERS", "10.6.8", "ProductVersion", "<")) {
-		$EXIT_VALUE = ((1 << 6) | ( 1 << 5 ) | 17 );
-		last;
-	}
-	# 10.6 or 10.7 system must be active
-	if(CheckVersion("$SYSTEM_VERS", "10.8", "ProductVersion", ">")) {
-		$EXIT_VALUE = ((1 << 6) | ( 1 << 5 ) | 18 );
-		last;
-	}
-}
-exit($EXIT_VALUE);
-
-###
-
-sub CheckVersion
-{
-    my $path            = $_[0];
-    my $version         = $_[1];
-    my $keyName         = $_[2];
-    my $operator        = $_[3];
-
-    if (! -e $path) {
-        return 0;
-    }
-
-    if (!$operator) {
-        $operator = "==";
-    }
-
-    my $oldSeperator = $/;
-    $/ = \0;
-
-    open( PLIST, "$path") || do {
-        return 0;
-    };
-
-    $plistData = <PLIST>;
-    $plistData =~ /<dict>(.*?)<\/dict>/gis;
-
-    @items = split(/<key>/, $plistData);
-
-    shift @items;
-    foreach $item (@items) {
-        $item =~ /(.*?)<\/key>.*?<string>(.*?)<\/string>/gis;
-        $versiondata{ $1 } = $2;
-    }
-
-    close(PLIST);
-
-    $/ = $oldSeperator;
-
-    @theVersionArray = split(/\./, $versiondata{$keyName});
-    for ($i = 0; $i < 3; $i++) {
-        if(!$theVersionArray[$i]) {
-            $theVersionArray[$i] = '0';
-        }
-    }
-
-    @versionArray = split(/\./, $version);
-    
-    my $actualVersion;
-
-    for ($i = 0; $i < 3; $i++) {
-        if (($theVersionArray[$i] != $versionArray[$i]) or ($i == 2)) {
-
-            $actualVersion = $theVersionArray[$i];
-            $version = $versionArray[$i];
-
-            last;
-        }
-    }
-
-    my $expression = '$actualVersion ' . $operator . ' $version';
-    if( eval ($expression) )
-    {
-        return 1;
-    }
-    else
-    {
-        return 0;
-    }
-
-}
-
-sub CheckIOReg
-{
-        $RESULT = 0;
-
-        open(IOREGOUT, "/usr/sbin/ioreg |");
-
-        foreach $LINE (<IOREGOUT>) {
-                $BUF .= $LINE;
-        }
-        close(IOREGOUT);
-
-        foreach $ITEM (@_) {
-                if($BUF =~ /$ITEM/g) {
-                        $RESULT = 1;
-                        last;
-                }
-        }
-
-        return($RESULT);
-}
-
diff --git a/MacOSX/Distribution.xml.in b/MacOSX/Distribution.xml.in
new file mode 100644
index 0000000..5d5a140
--- /dev/null
+++ b/MacOSX/Distribution.xml.in
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<installer-gui-script minSpecVersion="2">
+    <allowed-os-versions>
+      <os-version min="10.9"/>
+    </allowed-os-versions>
+    <background file="background.jpg" mime-type="image/jpeg" scaling="tofit"/>
+    <readme file="Readme.html" mime-type="text/html"/>
+    <license file="License.html" mime-type="text/html"/>
+    <welcome file="Welcome.html" mime-type="text/html"/>
+    <title>OpenSC @PACKAGE_VERSION@ for OS X 10.9+</title>
+
+    <pkg-ref id="com.apple.tokend.opensc"/>
+    <options customize="never" require-scripts="false"/>
+    <choices-outline>
+        <line choice="default">
+            <line choice="com.apple.tokend.opensc"/>
+        </line>
+    </choices-outline>
+    <choice id="default"/>
+    <choice id="com.apple.tokend.opensc" visible="true">
+        <pkg-ref id="com.apple.tokend.opensc"/>
+    </choice>
+    <pkg-ref id="com.apple.tokend.opensc" onConclusion="none">OpenSC.pkg</pkg-ref>
+</installer-gui-script>
\ No newline at end of file
diff --git a/MacOSX/Makefile.am b/MacOSX/Makefile.am
index 67b1636..4af8d83 100644
--- a/MacOSX/Makefile.am
+++ b/MacOSX/Makefile.am
@@ -1,18 +1,11 @@
 MAINTAINERCLEANFILES = $(srcdir)/Makefile.in
-EXTRA_DIST = build build-package.in libtool-bundle opensc-uninstall \
-	10.5/resources \
-	10.5/resources/background.jpg \
-	10.5/resources/InstallationCheck.strings \
-	10.5/resources/License.html \
-	10.5/resources/ReadMe.html.in \
-	10.5/scripts \
-	10.5/scripts/InstallationCheck \
-	10.5/scripts/postflight \
-	10.6/resources \
-	10.6/resources/background.jpg \
-	10.6/resources/InstallationCheck.strings \
-	10.6/resources/License.html \
-	10.6/resources/ReadMe.html.in \
-	10.6/scripts \
-	10.6/scripts/InstallationCheck \
-	10.6/scripts/postflight
+EXTRA_DIST = build build-package.in Distribution.xml.in libtool-bundle opensc-uninstall \
+	resources \
+	resources/background.jpg \
+	resources/License.html \
+	resources/ReadMe.html.in \
+	resources/Welcome.html.in \
+	scripts \
+	scripts/postinstall \
+	uninstaller-scripts \
+	uninstaller-scripts/postinstall
diff --git a/MacOSX/Makefile.in b/MacOSX/Makefile.in
deleted file mode 100644
index 6df05a1..0000000
--- a/MacOSX/Makefile.in
+++ /dev/null
@@ -1,426 +0,0 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
- at SET_MAKE@
-VPATH = @srcdir@
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-subdir = MacOSX
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
-	$(srcdir)/build-package.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_pthread.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES = build-package
-CONFIG_CLEAN_VPATH_FILES =
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo "  GEN   " $@;
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
-am__v_at_0 = @
-SOURCES =
-DIST_SOURCES =
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AR = @AR@
-AS = @AS@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEBUG_FILE = @DEBUG_FILE@
-DEFAULT_PCSC_PROVIDER = @DEFAULT_PCSC_PROVIDER@
-DEFAULT_SM_MODULE = @DEFAULT_SM_MODULE@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DLLTOOL = @DLLTOOL@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-FGREP = @FGREP@
-GIT = @GIT@
-GREP = @GREP@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBOBJS = @LIBOBJS@
-LIBRARY_BITNESS = @LIBRARY_BITNESS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-NM = @NM@
-NMEDIT = @NMEDIT@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OPENCT_CFLAGS = @OPENCT_CFLAGS@
-OPENCT_LIBS = @OPENCT_LIBS@
-OPENSC_LT_AGE = @OPENSC_LT_AGE@
-OPENSC_LT_CURRENT = @OPENSC_LT_CURRENT@
-OPENSC_LT_OLDEST = @OPENSC_LT_OLDEST@
-OPENSC_LT_REVISION = @OPENSC_LT_REVISION@
-OPENSC_VERSION_FIX = @OPENSC_VERSION_FIX@
-OPENSC_VERSION_MAJOR = @OPENSC_VERSION_MAJOR@
-OPENSC_VERSION_MINOR = @OPENSC_VERSION_MINOR@
-OPENSSL_CFLAGS = @OPENSSL_CFLAGS@
-OPENSSL_LIBS = @OPENSSL_LIBS@
-OPTIONAL_OPENCT_CFLAGS = @OPTIONAL_OPENCT_CFLAGS@
-OPTIONAL_OPENCT_LIBS = @OPTIONAL_OPENCT_LIBS@
-OPTIONAL_OPENSSL_CFLAGS = @OPTIONAL_OPENSSL_CFLAGS@
-OPTIONAL_OPENSSL_LIBS = @OPTIONAL_OPENSSL_LIBS@
-OPTIONAL_PCSC_CFLAGS = @OPTIONAL_PCSC_CFLAGS@
-OPTIONAL_READLINE_CFLAGS = @OPTIONAL_READLINE_CFLAGS@
-OPTIONAL_READLINE_LIBS = @OPTIONAL_READLINE_LIBS@
-OPTIONAL_ZLIB_CFLAGS = @OPTIONAL_ZLIB_CFLAGS@
-OPTIONAL_ZLIB_LIBS = @OPTIONAL_ZLIB_LIBS@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PCSC_CFLAGS = @PCSC_CFLAGS@
-PCSC_LIBS = @PCSC_LIBS@
-PKG_CONFIG = @PKG_CONFIG@
-PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
-PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
-PTHREAD_CC = @PTHREAD_CC@
-PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
-PTHREAD_LIBS = @PTHREAD_LIBS@
-RANLIB = @RANLIB@
-RC = @RC@
-READLINE_CFLAGS = @READLINE_CFLAGS@
-READLINE_LIBS = @READLINE_LIBS@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-WIN_LIBPREFIX = @WIN_LIBPREFIX@
-XSLTPROC = @XSLTPROC@
-ZLIB_CFLAGS = @ZLIB_CFLAGS@
-ZLIB_LIBS = @ZLIB_LIBS@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-ax_pthread_config = @ax_pthread_config@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-git = @git@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-pkcs11dir = @pkcs11dir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-xslstylesheetsdir = @xslstylesheetsdir@
-MAINTAINERCLEANFILES = $(srcdir)/Makefile.in
-EXTRA_DIST = build build-package.in libtool-bundle opensc-uninstall \
-	10.5/resources \
-	10.5/resources/background.jpg \
-	10.5/resources/InstallationCheck.strings \
-	10.5/resources/License.html \
-	10.5/resources/ReadMe.html.in \
-	10.5/scripts \
-	10.5/scripts/InstallationCheck \
-	10.5/scripts/postflight \
-	10.6/resources \
-	10.6/resources/background.jpg \
-	10.6/resources/InstallationCheck.strings \
-	10.6/resources/License.html \
-	10.6/resources/ReadMe.html.in \
-	10.6/scripts \
-	10.6/scripts/InstallationCheck \
-	10.6/scripts/postflight
-
-all: all-am
-
-.SUFFIXES:
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
-	@for dep in $?; do \
-	  case '$(am__configure_deps)' in \
-	    *$$dep*) \
-	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
-	        && { if test -f $@; then exit 0; else break; fi; }; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign MacOSX/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --foreign MacOSX/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-	@case '$?' in \
-	  *config.status*) \
-	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-	esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure:  $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-build-package: $(top_builddir)/config.status $(srcdir)/build-package.in
-	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-tags: TAGS
-TAGS:
-
-ctags: CTAGS
-CTAGS:
-
-
-distdir: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d "$(distdir)/$$file"; then \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-	  else \
-	    test -f "$(distdir)/$$file" \
-	    || cp -p $$d/$$file "$(distdir)/$$file" \
-	    || exit 1; \
-	  fi; \
-	done
-check-am: all-am
-check: check-am
-all-am: Makefile
-installdirs:
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
-	@echo "This command is intended for maintainers to use"
-	@echo "it deletes files that may require special tools to rebuild."
-	-test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
-clean: clean-am
-
-clean-am: clean-generic clean-libtool mostlyclean-am
-
-distclean: distclean-am
-	-rm -f Makefile
-distclean-am: clean-am distclean-generic
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am:
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am:
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
-	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-generic mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am:
-
-.MAKE: install-am install-strip
-
-.PHONY: all all-am check check-am clean clean-generic clean-libtool \
-	distclean distclean-generic distclean-libtool distdir dvi \
-	dvi-am html html-am info info-am install install-am \
-	install-data install-data-am install-dvi install-dvi-am \
-	install-exec install-exec-am install-html install-html-am \
-	install-info install-info-am install-man install-pdf \
-	install-pdf-am install-ps install-ps-am install-strip \
-	installcheck installcheck-am installdirs maintainer-clean \
-	maintainer-clean-generic mostlyclean mostlyclean-generic \
-	mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am
-
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/MacOSX/build-package.in b/MacOSX/build-package.in
index ec263a9..1a0a8bc 100755
--- a/MacOSX/build-package.in
+++ b/MacOSX/build-package.in
@@ -1,52 +1,50 @@
 #!/bin/bash
+# Building the installer is only tested and supported on 10.9 with Xcode 5.0.1
+# Command line tools for Xcode required, install with "xcode-select --install"
+# Built package targets 10.9+
+# Building should also work on older versions with older revisions or slight changes, YMMV
+
 set -ex
-OSX_RELEASE=${1:-10.6}
-INTEL_ONLY=${INTEL_ONLY:-no}
 test -x ./configure || ./bootstrap
 BUILDPATH=${PWD}
-case ${OSX_RELEASE} in
-	"10.5")
-		if test ${INTEL_ONLY} = "yes"; then
-			export CFLAGS="-isysroot /Developer/SDKs/MacOSX10.5.sdk -arch i386 -mmacosx-version-min=10.5 -g"
-		else
-			export CFLAGS="-isysroot /Developer/SDKs/MacOSX10.5.sdk -arch i386 -arch ppc7400 -mmacosx-version-min=10.5 -g"
-		fi
+
+# Use new locations for SDK on 10.8+
+OSX_RELEASE=`sw_vers -productVersion`
+case ${OSX_RELEASE:0:4} in
+	"10.8")
+		SYSROOT="/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk"
+		export CFLAGS="-isysroot $SYSROOT -arch i386 -arch x86_64 -mmacosx-version-min=10.8"
 	;;
-	"10.6")
-		export CFLAGS="-isysroot /Developer/SDKs/MacOSX10.6.sdk -arch i386 -arch x86_64 -mmacosx-version-min=10.6 -g"
+	"10.9")
+		SYSROOT="/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk"
+		export CFLAGS="-isysroot $SYSROOT -arch i386 -arch x86_64 -mmacosx-version-min=10.9"
 	;;
 	*)
-		echo "OSX ${OSX_RELEASE} is not supported!"
-		exit 1
+		SYSROOT="/Developer/SDKs/MacOSX10.6.sdk"
+		export CFLAGS="-isysroot $SYSROOT -arch i386 -arch x86_64 -mmacosx-version-min=10.6"
 	;;
 esac
 
+# OpenSSL is deprecated on OSX since 10.7 and that generates lots of
+# "false positive" warnings and there is no alternative option.
+# Just ignore these warning for now by silencing them.
+CFLAGS="$CFLAGS -Wno-deprecated-declarations"
+
 export SED=/usr/bin/sed
 PREFIX=/Library/OpenSC
 export PKG_CONFIG_PATH=/usr/lib/pkgconfig
 
-# In case of OSX 10.5, link against static libltdl to work around
-# missing libltdl.3.dylib in 10.5 PPC version
-test ${OSX_RELEASE} = "10.5" && export LTLIB_LIBS="/Developer/SDKs/MacOSX10.5.sdk/usr/lib/libltdl.a"
-
 ./configure --prefix=$PREFIX \
 --sysconfdir=$PREFIX/etc \
 --disable-dependency-tracking \
 --enable-shared \
 --disable-static \
 --enable-strict \
---disable-assert
-
-
-# check if make install is required
-case "${OSX_RELEASE}" in
-	"10.5") if test ${INTEL_ONLY} = "yes"; then required_arch="i386"; else required_arch="ppc7400"; fi ;;
-	"10.6") required_arch="x86_64" ;;
-esac
+--disable-assert \
+--enable-sm # TODO: remove this (must be sensible default in master)
 
-if !(test -e src/libopensc/.libs/libopensc.dylib && (file src/libopensc/.libs/libopensc.dylib | grep $required_arch)); then
-	make clean
-fi
+# always make clean
+make clean
 
 # compile
 make -j 2
@@ -61,81 +59,44 @@ rm -f target/Library/OpenSC/lib/*.la
 # generate .bundle (required by Adobe Acrobat)
 ./MacOSX/libtool-bundle target/Library/OpenSC/lib/opensc-pkcs11.so target/Library/OpenSC/lib
 
-if test ${OSX_RELEASE} = "10.6"; then
-	# Build libp11+engine_pkcs11. Attention! Uses modified branches from github!
-	test -d libp11 || git clone http://github.com/martinpaljak/libp11.git -b martin
-	(cd libp11
-	test -x confiure || ./bootstrap
-	./configure --enable-static --disable-shared --disable-dependency-tracking --prefix=${BUILDPATH}/build && make && make install
-	cd ..)
-	test -d engine_pkcs11 || git clone http://github.com/martinpaljak/engine_pkcs11.git -b martin
-	(cd engine_pkcs11
-	git checkout origin/martin
-	test -x configure || ./bootstrap
-	PKG_CONFIG_PATH=${BUILDPATH}/build/lib/pkgconfig:${PKG_CONFIG_PATH} ./configure --disable-dependency-tracking --prefix=/Library/OpenSC && make
-	make install DESTDIR=${BUILDPATH}/target)
-fi
-
+# Build engine_pkcs11 + libp11
+test -d libp11 || git clone http://github.com/OpenSC/libp11.git
+(cd libp11
+test -x configure || ./bootstrap
+./configure --enable-static --disable-shared --disable-dependency-tracking --prefix=${BUILDPATH}/build && make && make install)
+test -d engine_pkcs11 || git clone http://github.com/OpenSC/engine_pkcs11.git
+(cd engine_pkcs11
+test -x configure || ./bootstrap
+PKG_CONFIG_PATH=${BUILDPATH}/build/lib/pkgconfig:${PKG_CONFIG_PATH} ./configure --disable-dependency-tracking --prefix=/Library/OpenSC && make install DESTDIR=${BUILDPATH}/target)
+
+# Check out OpenSC.tokend, if not already fetched.
 if ! test -e OpenSC.tokend; then
-	git clone http://github.com/martinpaljak/OpenSC.tokend.git
-fi
-
-# refresh remote branches, in case the script has changed the active branch and existing buildslave checkout is used.
-git --git-dir OpenSC.tokend/.git --work-tree OpenSC.tokend fetch --all
-
-case "${OSX_RELEASE}" in
-	"10.5") git --git-dir OpenSC.tokend/.git --work-tree OpenSC.tokend checkout --force origin/10.5-0.12.2; rm -rf OpenSC.tokend/build
-		if test ${INTEL_ONLY} = "yes"; then
-			sed -e 's/ ppc7400//g' OpenSC.tokend/Tokend.xcodeproj/project.pbxproj > project.tmp
-			mv project.tmp OpenSC.tokend/Tokend.xcodeproj/project.pbxproj
-		fi
-	;;
-	"10.6") git --git-dir OpenSC.tokend/.git --work-tree OpenSC.tokend checkout --force origin/10.6-0.12.2; rm -rf OpenSC.tokend/build ;;
-esac
-
-if ! test -e build-${OSX_RELEASE}.tar.gz; then
-	case ${OSX_RELEASE} in
-	"10.5")
-		curl http://martinpaljak.net/download/build-10.5.tar.gz -o build-${OSX_RELEASE}.tar.gz
-	;;
-	"10.6")
-		curl http://martinpaljak.net/download/build-10.6.tar.gz -o build-${OSX_RELEASE}.tar.gz
-	;;
-	esac
-fi
-
-# Unpack the binary building components
-if ! test -e OpenSC.tokend/build; then
-	tar -C OpenSC.tokend -xzvf build-${OSX_RELEASE}.tar.gz
+	git clone http://github.com/OpenSC/OpenSC.tokend.git
 fi
 
 # Create the symlink to OpenSC sources
 test -L OpenSC.tokend/build/opensc-src || ln -sf ${BUILDPATH}/src OpenSC.tokend/build/opensc-src
 
-# build and copy OpenSC.tokend
+# Build and copy OpenSC.tokend
 xcodebuild -configuration Deployment -project OpenSC.tokend/Tokend.xcodeproj
+
+# Prepare target root
+# Copy Tokend
 mkdir -p target/System/Library/Security/tokend
 mv OpenSC.tokend/build/OpenSC.tokend target/System/Library/Security/tokend
-
 # The "UnInstaller"
 mkdir -p target/usr/local/bin
 cp MacOSX/opensc-uninstall target/usr/local/bin
 
-# Build installer package
-/Developer/Applications/Utilities/PackageMaker.app/Contents/MacOS/PackageMaker \
--r target \
--o OpenSC- at PACKAGE_VERSION@-${OSX_RELEASE}.pkg \
--t "OpenSC @PACKAGE_VERSION@ for Mac OS X ${OSX_RELEASE}" \
--i org.opensc-project.mac \
--n @PACKAGE_VERSION@ \
--g 10.4 \
--b \
--v \
---no-relocate \
--e MacOSX/${OSX_RELEASE}/resources \
--s MacOSX/${OSX_RELEASE}/scripts
+# Build package
+pkgbuild --root target --scripts MacOSX/scripts --identifier org.opensc-project.mac --version @PACKAGE_VERSION@ --install-location / OpenSC.pkg
+# Build product
+productbuild --distribution MacOSX/Distribution.xml --package-path . --resources MacOSX/resources OpenSC- at PACKAGE_VERSION@.pkg
+
+# Build "uninstaller"
+pkgbuild --nopayload --identifier org.opensc-project.mac.uninstall --scripts MacOSX/uninstaller-scripts Uninstall_OpenSC.pkg
 
 # Create .dmg
-rm -f OpenSC- at PACKAGE_VERSION@-${OSX_RELEASE}.dmg
+rm -f OpenSC- at PACKAGE_VERSION@.dmg
 TIMESTAMP=$(date +%Y.%m.%d)
-hdiutil create -srcfolder OpenSC- at PACKAGE_VERSION@-${OSX_RELEASE}.pkg -volname "OpenSC @PACKAGE_VERSION@ for Mac OS X ${OSX_RELEASE} (${TIMESTAMP})" OpenSC- at PACKAGE_VERSION@-${OSX_RELEASE}.dmg
+hdiutil create -srcfolder Uninstall_OpenSC.pkg -srcfolder OpenSC- at PACKAGE_VERSION@.pkg -volname "OpenSC @PACKAGE_VERSION@ for Mac OS X 10.9+ (${TIMESTAMP})" OpenSC- at PACKAGE_VERSION@.dmg
diff --git a/MacOSX/opensc-uninstall b/MacOSX/opensc-uninstall
index b40e915..bd87839 100755
--- a/MacOSX/opensc-uninstall
+++ b/MacOSX/opensc-uninstall
@@ -6,20 +6,23 @@ if [ "$(id -u)" != "0" ]; then
    exit 1
 fi
 
+# Remove symlinks to commands
+for file in /Library/OpenSC/bin/*; do
+	test -L "/usr/local/bin/$(basename $file)" && rm -f "/usr/local/bin/$(basename $file)"
+done
+
+# Remove symlink for pkcs11
+test -L /usr/lib/opensc-pkcs11.so && rm -f /usr/lib/opensc-pkcs11.so
+
+# Remove installed files
 rm -rf /Library/OpenSC
 rm -rf /System/Library/Security/tokend/OpenSC.tokend
 
-for file in /usr/lib/opensc-pkcs11.so /usr/local/bin/cardos-tool /usr/local/bin/cryptoflex-tool /usr/local/bin/eidenv /usr/local/bin/netkey-tool /usr/local/bin/opensc-explorer /usr/local/bin/opensc-tool /usr/local/bin/piv-tool /usr/local/bin/pkcs11-tool /usr/local/bin/pkcs15-crypt /usr/local/bin/pkcs15-init /usr/local/bin/pkcs15-tool /usr/local/bin/rutoken-tool /usr/local/bin/westcos-tool; do
-	test -L $file && rm -f $file
-done
-rm -f /usr/local/bin/opensc-uninstall
-
-# delete receipts on 10.6
+# delete receipts on 10.6+
 for file in /var/db/receipts/org.opensc-project.mac.bom /var/db/receipts/org.opensc-project.mac.plist; do
 	test -f $file && rm -f $file
 done
 
-# delete receipts on 10.5
-test -d /Library/Receipts/OpenSC-10.5.pkg && rm -rf /Library/Receipts/OpenSC-10.5.pkg
-
+# remove this script
+rm -f /usr/local/bin/opensc-uninstall
 echo "OpenSC has been removed from your system. See you again!"
diff --git a/MacOSX/10.5/resources/License.html b/MacOSX/resources/License.html
similarity index 100%
rename from MacOSX/10.5/resources/License.html
rename to MacOSX/resources/License.html
diff --git a/MacOSX/10.5/resources/ReadMe.html.in b/MacOSX/resources/ReadMe.html.in
similarity index 94%
rename from MacOSX/10.5/resources/ReadMe.html.in
rename to MacOSX/resources/ReadMe.html.in
index 8e78c40..5a09837 100644
--- a/MacOSX/10.5/resources/ReadMe.html.in
+++ b/MacOSX/resources/ReadMe.html.in
@@ -13,7 +13,7 @@
 
 
 <h1>OpenSC, version @PACKAGE_VERSION@</h1>
-<p>for Mac OS X 10.5 (Leopard), universal (32-bit i386 and ppc)</p>
+<p>for Mac OS X 10.9+</p>
 
 <p>OpenSC provides a set of libraries and utilities to work with smart cards. Its main focus is on cards that support cryptographic operations, and facilitate their use in security applications such as authentication, mail encryption and digital signatures.</p>
 
diff --git a/MacOSX/resources/Welcome.html.in b/MacOSX/resources/Welcome.html.in
new file mode 100644
index 0000000..4255371
--- /dev/null
+++ b/MacOSX/resources/Welcome.html.in
@@ -0,0 +1,17 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title>Welcome to OpenSC</title>
+	<style type="text/css">
+		body { font: 12px Helvetica; }
+		h1 { font-size: 16px; }
+		h2 { font-size: 13px; padding-bottom: 5px; padding-top: 5px; }
+		p { padding: 10px; }
+	</style>
+	<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+</head>
+<body>
+<h1>Welcome to OpenSC!</h1>
+<p>OpenSC stands for Open Source Smart Cards. Follow the force!</p>
+</body>
+</html>
\ No newline at end of file
diff --git a/MacOSX/10.5/resources/background.jpg b/MacOSX/resources/background.jpg
similarity index 100%
rename from MacOSX/10.5/resources/background.jpg
rename to MacOSX/resources/background.jpg
diff --git a/MacOSX/10.6/scripts/postflight b/MacOSX/scripts/postinstall
similarity index 100%
rename from MacOSX/10.6/scripts/postflight
rename to MacOSX/scripts/postinstall
diff --git a/MacOSX/uninstaller-scripts/postinstall b/MacOSX/uninstaller-scripts/postinstall
new file mode 100755
index 0000000..63ea517
--- /dev/null
+++ b/MacOSX/uninstaller-scripts/postinstall
@@ -0,0 +1,2 @@
+#!/bin/sh
+exec /usr/local/bin/opensc-uninstall
diff --git a/Makefile.am b/Makefile.am
index 4ffe6bf..3ffc465 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -11,14 +11,21 @@ MAINTAINERCLEANFILES = \
 	$(srcdir)/m4/ltversion.m4 $(srcdir)/m4/lt~obsolete.m4 \
 	$(srcdir)/m4/ltoptions.m4 \
 	$(srcdir)/packaged
-EXTRA_DIST = Makefile.mak svnignore
+EXTRA_DIST = Makefile.mak
 
 SUBDIRS = etc src win32 doc MacOSX
 
-dist_noinst_SCRIPTS = bootstrap
+dist_noinst_SCRIPTS = bootstrap bootstrap.ci
 dist_noinst_DATA = README \
 	solaris/Makefile solaris/README solaris/checkinstall.in \
-	solaris/opensc.conf-dist solaris/pkginfo.in solaris/proto
+	solaris/opensc.conf-dist solaris/pkginfo.in solaris/proto \
+	packaging/debian.templates/changelog \
+	packaging/debian.templates/compat \
+	packaging/debian.templates/control \
+	packaging/debian.templates/copyright \
+	packaging/debian.templates/docs \
+	packaging/debian.templates/opensc.install \
+	packaging/debian.templates/rules
 dist_doc_DATA = NEWS
 
 Generate-ChangeLog:
diff --git a/Makefile.in b/Makefile.in
deleted file mode 100644
index 2c8be49..0000000
--- a/Makefile.in
+++ /dev/null
@@ -1,862 +0,0 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
- at SET_MAKE@
-
-
-VPATH = @srcdir@
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-subdir = .
-DIST_COMMON = README $(am__configure_deps) $(dist_doc_DATA) \
-	$(dist_noinst_DATA) $(dist_noinst_SCRIPTS) \
-	$(srcdir)/Makefile.am $(srcdir)/Makefile.in \
-	$(srcdir)/config.h.in \
-	$(top_srcdir)/MacOSX/10.5/resources/ReadMe.html.in \
-	$(top_srcdir)/MacOSX/10.6/resources/ReadMe.html.in \
-	$(top_srcdir)/configure COPYING ChangeLog NEWS config.guess \
-	config.sub depcomp install-sh ltmain.sh missing
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_pthread.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
- configure.lineno config.status.lineno
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = config.h
-CONFIG_CLEAN_FILES = MacOSX/10.5/resources/ReadMe.html \
-	MacOSX/10.6/resources/ReadMe.html
-CONFIG_CLEAN_VPATH_FILES =
-SCRIPTS = $(dist_noinst_SCRIPTS)
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo "  GEN   " $@;
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
-am__v_at_0 = @
-SOURCES =
-DIST_SOURCES =
-RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
-	html-recursive info-recursive install-data-recursive \
-	install-dvi-recursive install-exec-recursive \
-	install-html-recursive install-info-recursive \
-	install-pdf-recursive install-ps-recursive install-recursive \
-	installcheck-recursive installdirs-recursive pdf-recursive \
-	ps-recursive uninstall-recursive
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
-  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
-  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
-  for p in $$list; do echo "$$p $$p"; done | \
-  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
-  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
-    if (++n[$$2] == $(am__install_max)) \
-      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
-    END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
-  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
-  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__installdirs = "$(DESTDIR)$(docdir)"
-DATA = $(dist_doc_DATA) $(dist_noinst_DATA)
-RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
-  distclean-recursive maintainer-clean-recursive
-AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
-	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
-	distdir dist dist-all distcheck
-ETAGS = etags
-CTAGS = ctags
-DIST_SUBDIRS = $(SUBDIRS)
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-distdir = $(PACKAGE)-$(VERSION)
-top_distdir = $(distdir)
-am__remove_distdir = \
-  { test ! -d "$(distdir)" \
-    || { find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
-         && rm -fr "$(distdir)"; }; }
-am__relativize = \
-  dir0=`pwd`; \
-  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
-  sed_rest='s,^[^/]*/*,,'; \
-  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
-  sed_butlast='s,/*[^/]*$$,,'; \
-  while test -n "$$dir1"; do \
-    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
-    if test "$$first" != "."; then \
-      if test "$$first" = ".."; then \
-        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
-        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
-      else \
-        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
-        if test "$$first2" = "$$first"; then \
-          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
-        else \
-          dir2="../$$dir2"; \
-        fi; \
-        dir0="$$dir0"/"$$first"; \
-      fi; \
-    fi; \
-    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
-  done; \
-  reldir="$$dir2"
-DIST_ARCHIVES = $(distdir).tar.gz
-GZIP_ENV = --best
-distuninstallcheck_listfiles = find . -type f -print
-distcleancheck_listfiles = find . -type f -print
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AR = @AR@
-AS = @AS@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEBUG_FILE = @DEBUG_FILE@
-DEFAULT_PCSC_PROVIDER = @DEFAULT_PCSC_PROVIDER@
-DEFAULT_SM_MODULE = @DEFAULT_SM_MODULE@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DLLTOOL = @DLLTOOL@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-FGREP = @FGREP@
-GIT = @GIT@
-GREP = @GREP@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBOBJS = @LIBOBJS@
-LIBRARY_BITNESS = @LIBRARY_BITNESS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-NM = @NM@
-NMEDIT = @NMEDIT@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OPENCT_CFLAGS = @OPENCT_CFLAGS@
-OPENCT_LIBS = @OPENCT_LIBS@
-OPENSC_LT_AGE = @OPENSC_LT_AGE@
-OPENSC_LT_CURRENT = @OPENSC_LT_CURRENT@
-OPENSC_LT_OLDEST = @OPENSC_LT_OLDEST@
-OPENSC_LT_REVISION = @OPENSC_LT_REVISION@
-OPENSC_VERSION_FIX = @OPENSC_VERSION_FIX@
-OPENSC_VERSION_MAJOR = @OPENSC_VERSION_MAJOR@
-OPENSC_VERSION_MINOR = @OPENSC_VERSION_MINOR@
-OPENSSL_CFLAGS = @OPENSSL_CFLAGS@
-OPENSSL_LIBS = @OPENSSL_LIBS@
-OPTIONAL_OPENCT_CFLAGS = @OPTIONAL_OPENCT_CFLAGS@
-OPTIONAL_OPENCT_LIBS = @OPTIONAL_OPENCT_LIBS@
-OPTIONAL_OPENSSL_CFLAGS = @OPTIONAL_OPENSSL_CFLAGS@
-OPTIONAL_OPENSSL_LIBS = @OPTIONAL_OPENSSL_LIBS@
-OPTIONAL_PCSC_CFLAGS = @OPTIONAL_PCSC_CFLAGS@
-OPTIONAL_READLINE_CFLAGS = @OPTIONAL_READLINE_CFLAGS@
-OPTIONAL_READLINE_LIBS = @OPTIONAL_READLINE_LIBS@
-OPTIONAL_ZLIB_CFLAGS = @OPTIONAL_ZLIB_CFLAGS@
-OPTIONAL_ZLIB_LIBS = @OPTIONAL_ZLIB_LIBS@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PCSC_CFLAGS = @PCSC_CFLAGS@
-PCSC_LIBS = @PCSC_LIBS@
-PKG_CONFIG = @PKG_CONFIG@
-PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
-PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
-PTHREAD_CC = @PTHREAD_CC@
-PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
-PTHREAD_LIBS = @PTHREAD_LIBS@
-RANLIB = @RANLIB@
-RC = @RC@
-READLINE_CFLAGS = @READLINE_CFLAGS@
-READLINE_LIBS = @READLINE_LIBS@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-WIN_LIBPREFIX = @WIN_LIBPREFIX@
-XSLTPROC = @XSLTPROC@
-ZLIB_CFLAGS = @ZLIB_CFLAGS@
-ZLIB_LIBS = @ZLIB_LIBS@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-ax_pthread_config = @ax_pthread_config@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-git = @git@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-pkcs11dir = @pkcs11dir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-xslstylesheetsdir = @xslstylesheetsdir@
-ACLOCAL_AMFLAGS = -I m4
-MAINTAINERCLEANFILES = \
-	config.log config.status \
-	$(srcdir)/Makefile.in \
-	$(srcdir)/config.h.in $(srcdir)/config.h.in~ $(srcdir)/configure \
-	$(srcdir)/install-sh $(srcdir)/ltmain.sh $(srcdir)/missing \
-	$(srcdir)/depcomp $(srcdir)/aclocal.m4 \
-	$(srcdir)/config.guess $(srcdir)/config.sub \
-	$(srcdir)/m4/ltsugar.m4 $(srcdir)/m4/libtool.m4 \
-	$(srcdir)/m4/ltversion.m4 $(srcdir)/m4/lt~obsolete.m4 \
-	$(srcdir)/m4/ltoptions.m4 \
-	$(srcdir)/packaged
-
-EXTRA_DIST = Makefile.mak svnignore
-SUBDIRS = etc src win32 doc MacOSX
-dist_noinst_SCRIPTS = bootstrap
-dist_noinst_DATA = README \
-	solaris/Makefile solaris/README solaris/checkinstall.in \
-	solaris/opensc.conf-dist solaris/pkginfo.in solaris/proto
-
-dist_doc_DATA = NEWS
-all: config.h
-	$(MAKE) $(AM_MAKEFLAGS) all-recursive
-
-.SUFFIXES:
-am--refresh:
-	@:
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
-	@for dep in $?; do \
-	  case '$(am__configure_deps)' in \
-	    *$$dep*) \
-	      echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \
-	      $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \
-		&& exit 0; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --foreign Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-	@case '$?' in \
-	  *config.status*) \
-	    echo ' $(SHELL) ./config.status'; \
-	    $(SHELL) ./config.status;; \
-	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
-	esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-	$(SHELL) ./config.status --recheck
-
-$(top_srcdir)/configure:  $(am__configure_deps)
-	$(am__cd) $(srcdir) && $(AUTOCONF)
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
-	$(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
-$(am__aclocal_m4_deps):
-
-config.h: stamp-h1
-	@if test ! -f $@; then \
-	  rm -f stamp-h1; \
-	  $(MAKE) $(AM_MAKEFLAGS) stamp-h1; \
-	else :; fi
-
-stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
-	@rm -f stamp-h1
-	cd $(top_builddir) && $(SHELL) ./config.status config.h
-$(srcdir)/config.h.in:  $(am__configure_deps) 
-	($(am__cd) $(top_srcdir) && $(AUTOHEADER))
-	rm -f stamp-h1
-	touch $@
-
-distclean-hdr:
-	-rm -f config.h stamp-h1
-MacOSX/10.5/resources/ReadMe.html: $(top_builddir)/config.status $(top_srcdir)/MacOSX/10.5/resources/ReadMe.html.in
-	cd $(top_builddir) && $(SHELL) ./config.status $@
-MacOSX/10.6/resources/ReadMe.html: $(top_builddir)/config.status $(top_srcdir)/MacOSX/10.6/resources/ReadMe.html.in
-	cd $(top_builddir) && $(SHELL) ./config.status $@
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-
-distclean-libtool:
-	-rm -f libtool config.lt
-install-dist_docDATA: $(dist_doc_DATA)
-	@$(NORMAL_INSTALL)
-	test -z "$(docdir)" || $(MKDIR_P) "$(DESTDIR)$(docdir)"
-	@list='$(dist_doc_DATA)'; test -n "$(docdir)" || list=; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(docdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(docdir)" || exit $$?; \
-	done
-
-uninstall-dist_docDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_doc_DATA)'; test -n "$(docdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	test -n "$$files" || exit 0; \
-	echo " ( cd '$(DESTDIR)$(docdir)' && rm -f" $$files ")"; \
-	cd "$(DESTDIR)$(docdir)" && rm -f $$files
-
-# This directory's subdirectories are mostly independent; you can cd
-# into them and run `make' without going through this Makefile.
-# To change the values of `make' variables: instead of editing Makefiles,
-# (1) if the variable is set in `config.status', edit `config.status'
-#     (which will cause the Makefiles to be regenerated when you run `make');
-# (2) otherwise, pass the desired values on the `make' command line.
-$(RECURSIVE_TARGETS):
-	@fail= failcom='exit 1'; \
-	for f in x $$MAKEFLAGS; do \
-	  case $$f in \
-	    *=* | --[!k]*);; \
-	    *k*) failcom='fail=yes';; \
-	  esac; \
-	done; \
-	dot_seen=no; \
-	target=`echo $@ | sed s/-recursive//`; \
-	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  echo "Making $$target in $$subdir"; \
-	  if test "$$subdir" = "."; then \
-	    dot_seen=yes; \
-	    local_target="$$target-am"; \
-	  else \
-	    local_target="$$target"; \
-	  fi; \
-	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
-	  || eval $$failcom; \
-	done; \
-	if test "$$dot_seen" = "no"; then \
-	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
-	fi; test -z "$$fail"
-
-$(RECURSIVE_CLEAN_TARGETS):
-	@fail= failcom='exit 1'; \
-	for f in x $$MAKEFLAGS; do \
-	  case $$f in \
-	    *=* | --[!k]*);; \
-	    *k*) failcom='fail=yes';; \
-	  esac; \
-	done; \
-	dot_seen=no; \
-	case "$@" in \
-	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
-	  *) list='$(SUBDIRS)' ;; \
-	esac; \
-	rev=''; for subdir in $$list; do \
-	  if test "$$subdir" = "."; then :; else \
-	    rev="$$subdir $$rev"; \
-	  fi; \
-	done; \
-	rev="$$rev ."; \
-	target=`echo $@ | sed s/-recursive//`; \
-	for subdir in $$rev; do \
-	  echo "Making $$target in $$subdir"; \
-	  if test "$$subdir" = "."; then \
-	    local_target="$$target-am"; \
-	  else \
-	    local_target="$$target"; \
-	  fi; \
-	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
-	  || eval $$failcom; \
-	done && test -z "$$fail"
-tags-recursive:
-	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
-	done
-ctags-recursive:
-	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
-	done
-
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	set x; \
-	here=`pwd`; \
-	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
-	  include_option=--etags-include; \
-	  empty_fix=.; \
-	else \
-	  include_option=--include; \
-	  empty_fix=; \
-	fi; \
-	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  if test "$$subdir" = .; then :; else \
-	    test ! -f $$subdir/TAGS || \
-	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
-	  fi; \
-	done; \
-	list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	shift; \
-	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
-	  test -n "$$unique" || unique=$$empty_fix; \
-	  if test $$# -gt 0; then \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      "$$@" $$unique; \
-	  else \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      $$unique; \
-	  fi; \
-	fi
-ctags: CTAGS
-CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	test -z "$(CTAGS_ARGS)$$unique" \
-	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$unique
-
-GTAGS:
-	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && $(am__cd) $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) "$$here"
-
-distclean-tags:
-	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
-	$(am__remove_distdir)
-	test -d "$(distdir)" || mkdir "$(distdir)"
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d "$(distdir)/$$file"; then \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-	  else \
-	    test -f "$(distdir)/$$file" \
-	    || cp -p $$d/$$file "$(distdir)/$$file" \
-	    || exit 1; \
-	  fi; \
-	done
-	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
-	  if test "$$subdir" = .; then :; else \
-	    test -d "$(distdir)/$$subdir" \
-	    || $(MKDIR_P) "$(distdir)/$$subdir" \
-	    || exit 1; \
-	  fi; \
-	done
-	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
-	  if test "$$subdir" = .; then :; else \
-	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
-	    $(am__relativize); \
-	    new_distdir=$$reldir; \
-	    dir1=$$subdir; dir2="$(top_distdir)"; \
-	    $(am__relativize); \
-	    new_top_distdir=$$reldir; \
-	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
-	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
-	    ($(am__cd) $$subdir && \
-	      $(MAKE) $(AM_MAKEFLAGS) \
-	        top_distdir="$$new_top_distdir" \
-	        distdir="$$new_distdir" \
-		am__remove_distdir=: \
-		am__skip_length_check=: \
-		am__skip_mode_fix=: \
-	        distdir) \
-	      || exit 1; \
-	  fi; \
-	done
-	-test -n "$(am__skip_mode_fix)" \
-	|| find "$(distdir)" -type d ! -perm -755 \
-		-exec chmod u+rwx,go+rx {} \; -o \
-	  ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
-	  ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
-	  ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
-	|| chmod -R a+r "$(distdir)"
-dist-gzip: distdir
-	tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
-	$(am__remove_distdir)
-
-dist-bzip2: distdir
-	tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
-	$(am__remove_distdir)
-
-dist-lzma: distdir
-	tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma
-	$(am__remove_distdir)
-
-dist-xz: distdir
-	tardir=$(distdir) && $(am__tar) | xz -c >$(distdir).tar.xz
-	$(am__remove_distdir)
-
-dist-tarZ: distdir
-	tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
-	$(am__remove_distdir)
-
-dist-shar: distdir
-	shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
-	$(am__remove_distdir)
-
-dist-zip: distdir
-	-rm -f $(distdir).zip
-	zip -rq $(distdir).zip $(distdir)
-	$(am__remove_distdir)
-
-dist dist-all: distdir
-	tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
-	$(am__remove_distdir)
-
-# This target untars the dist file and tries a VPATH configuration.  Then
-# it guarantees that the distribution is self-contained by making another
-# tarfile.
-distcheck: dist
-	case '$(DIST_ARCHIVES)' in \
-	*.tar.gz*) \
-	  GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\
-	*.tar.bz2*) \
-	  bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
-	*.tar.lzma*) \
-	  lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\
-	*.tar.xz*) \
-	  xz -dc $(distdir).tar.xz | $(am__untar) ;;\
-	*.tar.Z*) \
-	  uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
-	*.shar.gz*) \
-	  GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\
-	*.zip*) \
-	  unzip $(distdir).zip ;;\
-	esac
-	chmod -R a-w $(distdir); chmod u+w $(distdir)
-	mkdir $(distdir)/_build
-	mkdir $(distdir)/_inst
-	chmod a-w $(distdir)
-	test -d $(distdir)/_build || exit 0; \
-	dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
-	  && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
-	  && am__cwd=`pwd` \
-	  && $(am__cd) $(distdir)/_build \
-	  && ../configure --srcdir=.. --prefix="$$dc_install_base" \
-	    $(DISTCHECK_CONFIGURE_FLAGS) \
-	  && $(MAKE) $(AM_MAKEFLAGS) \
-	  && $(MAKE) $(AM_MAKEFLAGS) dvi \
-	  && $(MAKE) $(AM_MAKEFLAGS) check \
-	  && $(MAKE) $(AM_MAKEFLAGS) install \
-	  && $(MAKE) $(AM_MAKEFLAGS) installcheck \
-	  && $(MAKE) $(AM_MAKEFLAGS) uninstall \
-	  && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
-	        distuninstallcheck \
-	  && chmod -R a-w "$$dc_install_base" \
-	  && ({ \
-	       (cd ../.. && umask 077 && mkdir "$$dc_destdir") \
-	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
-	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
-	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
-	            distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
-	      } || { rm -rf "$$dc_destdir"; exit 1; }) \
-	  && rm -rf "$$dc_destdir" \
-	  && $(MAKE) $(AM_MAKEFLAGS) dist \
-	  && rm -rf $(DIST_ARCHIVES) \
-	  && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
-	  && cd "$$am__cwd" \
-	  || exit 1
-	$(am__remove_distdir)
-	@(echo "$(distdir) archives ready for distribution: "; \
-	  list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
-	  sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
-distuninstallcheck:
-	@$(am__cd) '$(distuninstallcheck_dir)' \
-	&& test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
-	   || { echo "ERROR: files left after uninstall:" ; \
-	        if test -n "$(DESTDIR)"; then \
-	          echo "  (check DESTDIR support)"; \
-	        fi ; \
-	        $(distuninstallcheck_listfiles) ; \
-	        exit 1; } >&2
-distcleancheck: distclean
-	@if test '$(srcdir)' = . ; then \
-	  echo "ERROR: distcleancheck can only run from a VPATH build" ; \
-	  exit 1 ; \
-	fi
-	@test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
-	  || { echo "ERROR: files left in build directory after distclean:" ; \
-	       $(distcleancheck_listfiles) ; \
-	       exit 1; } >&2
-check-am: all-am
-check: check-recursive
-all-am: Makefile $(SCRIPTS) $(DATA) config.h
-installdirs: installdirs-recursive
-installdirs-am:
-	for dir in "$(DESTDIR)$(docdir)"; do \
-	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
-	done
-install: install-recursive
-install-exec: install-exec-recursive
-install-data: install-data-recursive
-uninstall: uninstall-recursive
-
-install-am: all-am
-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-recursive
-install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
-	@echo "This command is intended for maintainers to use"
-	@echo "it deletes files that may require special tools to rebuild."
-	-test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
-clean: clean-recursive
-
-clean-am: clean-generic clean-libtool mostlyclean-am
-
-distclean: distclean-recursive
-	-rm -f $(am__CONFIG_DISTCLEAN_FILES)
-	-rm -f Makefile
-distclean-am: clean-am distclean-generic distclean-hdr \
-	distclean-libtool distclean-tags
-
-dvi: dvi-recursive
-
-dvi-am:
-
-html: html-recursive
-
-html-am:
-
-info: info-recursive
-
-info-am:
-
-install-data-am: install-dist_docDATA
-
-install-dvi: install-dvi-recursive
-
-install-dvi-am:
-
-install-exec-am:
-
-install-html: install-html-recursive
-
-install-html-am:
-
-install-info: install-info-recursive
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-recursive
-
-install-pdf-am:
-
-install-ps: install-ps-recursive
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-recursive
-	-rm -f $(am__CONFIG_DISTCLEAN_FILES)
-	-rm -rf $(top_srcdir)/autom4te.cache
-	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-recursive
-
-mostlyclean-am: mostlyclean-generic mostlyclean-libtool
-
-pdf: pdf-recursive
-
-pdf-am:
-
-ps: ps-recursive
-
-ps-am:
-
-uninstall-am: uninstall-dist_docDATA
-
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all \
-	ctags-recursive install-am install-strip tags-recursive
-
-.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
-	all all-am am--refresh check check-am clean clean-generic \
-	clean-libtool ctags ctags-recursive dist dist-all dist-bzip2 \
-	dist-gzip dist-lzma dist-shar dist-tarZ dist-xz dist-zip \
-	distcheck distclean distclean-generic distclean-hdr \
-	distclean-libtool distclean-tags distcleancheck distdir \
-	distuninstallcheck dvi dvi-am html html-am info info-am \
-	install install-am install-data install-data-am \
-	install-dist_docDATA install-dvi install-dvi-am install-exec \
-	install-exec-am install-html install-html-am install-info \
-	install-info-am install-man install-pdf install-pdf-am \
-	install-ps install-ps-am install-strip installcheck \
-	installcheck-am installdirs installdirs-am maintainer-clean \
-	maintainer-clean-generic mostlyclean mostlyclean-generic \
-	mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \
-	uninstall uninstall-am uninstall-dist_docDATA
-
-
-Generate-ChangeLog:
-	rm -f ChangeLog.tmp "$(srcdir)/ChangeLog"
-	test -n "$(GIT)"
-	if test -d "$(top_srcdir)/.git"; then \
-		echo "# Generated by Makefile. Do not edit!" > ChangeLog.tmp; \
-		$(GIT) log >> ChangeLog.tmp; \
-	else \
-		echo "Warning: Unable to generate ChangeLog. Need a Git repostiroy." >&2; \
-		echo > ChangeLog.tmp; \
-	fi
-	mv ChangeLog.tmp "$(srcdir)/ChangeLog"
-	( cd "$(srcdir)" && autoreconf -ivf )
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/NEWS b/NEWS
index b9b420f..b1b63b8 100644
--- a/NEWS
+++ b/NEWS
@@ -1,7 +1,136 @@
 NEWS for OpenSC -- History of user visible changes
 
-Complete change history is available online:
-http://www.opensc-project.org/opensc/timeline
+New in 0.14.0; 2014-05-31
+* new card driver DNIe
+* extended existing drivers by support of
+    Swedish eID card (gemsafeV1)
+    EstEID 3.5 (mcrd)
+* bogus javacard driver removed
+* build
+    return to the standard use of 'autoconf'
+    CI specific bootstrap script: git commit stamp for the built packages
+    windows friendly compile settings
+    fixed a ton of compiler warnings
+    fence against using EVP_sha256 mech
+    debian packaging templates
+    compile without OpenSSL and without SM
+    enable compiler warnings by default
+    win32
+        add 'VarFileInfo' block to version-info
+        include to MSI package 'openpgp-tool.exe'
+        'version-info' resource for each target
+* macOSX
+    "graphical uninstaller" to distribution DMG
+    update package building to modern tools
+    new tool and SDK paths for OS X 10.8
+    improved opensc-installer from distribution
+    osx: target 10.9 (a free upgrade to anyone using 10.6+) from now on
+    build 'fat' binaries i386
+* common
+    added getpass implementation for non windows
+* libopensc
+    allow for the pin to be entered on the keypad during issuing
+    introduce 'encoded-content' to the sc_file data
+    general usage method to allocate generalized time
+* minidriver
+    implemented 'CardChangeAuthenticator', 'CardGetChallenge' and 'CardUnblockPin'
+    improved management of GUID
+    use reader pin pad if available and allowed
+    configuration options for
+        compose GUID
+        refuse create container mechanism
+    add registers file for feitian cards
+    fixed
+        return code in 'CardGetContainerInfo'
+        returned 'tries-left' for blocked card
+        length of stripped data in RSADecrypt
+* pkcs#11
+    bind non-recognized card, generic 'init-token' procedure
+    fixed
+        CKA_VALUE of 'public-key' object
+        fix ASN1 encoding issues
+        PIN-NOT-INITIALIZED for the non-user PINs
+        buffers overflow
+        segfault due to the undefined 'application-file'
+* pkcs15
+    'direct' public key in PuKDF encoding
+    implement SPKI public key encoding
+    include and maintain minidriver framework data: cmap-record, md-flags, GUID, ..
+    fixed
+        encoding of 'SubjectPublicKeyInfo'
+        DER encoding of 'issuer' and 'subject'
+        PIN validation in 'pkcs15-verify'
+        public key algorithm
+        ECC public key encoding
+        ECC ecpointQ
+* pkcs15init
+    introduce 'max-unblocks' PIN init parameter 
+    keep cert. blob in cert-info data
+    file 'content' and 'prop-attrs' in the card profile
+    in profile more AC operations are parsed
+    fixed
+        NULL pointer dereference error
+        NULL 'store-key' handle
+        ignore if no TokenInfo file to update
+        set EC pubkey parameters from init data
+* reader-pcsc
+    fixed
+        implicit pin modification
+        pin checking when implicitly given
+        verify/modify pinpad commands
+* SM
+    common SM 'increase-sequence-counter' procedure
+    move SM APDU procedures to dedicated source file
+    move SM common crypto procedures to the dedicated library
+* doc
+    documentation for --list-token-slots
+* default driver
+    do not send possibly arbitrary APDU-s to an unknown card.
+    by default 'default' card driver is disabled 
+* sc-hsm
+    Added support for
+        persistent EC public keys generated from certificate signing requests
+        token label to be set via C_InitToken or sc-hsm-tool
+        unblock PIN using C_InitPIN()
+    initialize EC key params
+    fixed
+        bug that prevents a newly generated 2048 key to show up at the PKCS#11 interface
+        bug when changing SO-PIN with opensc-explorer sc-hsm-tool
+        memory checking and removed warning
+        problem deleting CA certificates sc-hsm
+        public key format returned when generating ECC keys
+    sc-hsm-tool
+        better error handling for non-SmartCard-HSM cards
+        support for DKEK password sharing scheme
+        threshold scheme parameters to manpage
+        crash on Windows when --wrap-key frees memory allocated in opensc.dll
+* ias
+    simplify the compute signature operation
+* PIV
+    use SPKI encoding for public key data
+    extract public key from cert if no object on card
+    fix
+        segfault and valgrind issue
+        gen_key to expect the proper PIV Key references
+* CardOS
+    build for Windows
+    use information from AlgorithmInfo
+    supported CardOS V5.0
+* epass2003
+    key generation allows stricter privkey/pubkey ACLs
+    list_files implemented
+    properly disable padding
+    allow exponents other than 65537
+* myeid
+    fixed file-id in myeid.profile
+* entersafe
+    fix a bug when writing public key  
+* EstEID
+    match card only based on presence of application.
+* pteid
+    do not call the iso7816 driver get_response operation
+* myeid
+    support of EC key is broken
 
 New in 0.13.0; 2012-12-04
 * New card driver ePass2003.
diff --git a/README b/README
index 50a9fd8..e914b74 100644
--- a/README
+++ b/README
@@ -1,4 +1,4 @@
 OpenSC documentation wiki is available online at
-	http://www.opensc-project.org/opensc/
+	https://github.com/OpenSC/OpenSC/wiki
 
 Please take a look at the documentation before trying to use OpenSC.
diff --git a/aclocal.m4 b/aclocal.m4
deleted file mode 100644
index 7307a73..0000000
--- a/aclocal.m4
+++ /dev/null
@@ -1,1142 +0,0 @@
-# generated automatically by aclocal 1.11.1 -*- Autoconf -*-
-
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-# 2005, 2006, 2007, 2008, 2009  Free Software Foundation, Inc.
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-m4_ifndef([AC_AUTOCONF_VERSION],
-  [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
-m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.67],,
-[m4_warning([this file was generated for autoconf 2.67.
-You have another version of autoconf.  It may work, but is not guaranteed to.
-If you have problems, you may need to regenerate the build system entirely.
-To do so, use the procedure documented by the package, typically `autoreconf'.])])
-
-# pkg.m4 - Macros to locate and utilise pkg-config.            -*- Autoconf -*-
-# serial 1 (pkg-config-0.24)
-# 
-# Copyright © 2004 Scott James Remnant <scott at netsplit.com>.
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-#
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-# PKG_PROG_PKG_CONFIG([MIN-VERSION])
-# ----------------------------------
-AC_DEFUN([PKG_PROG_PKG_CONFIG],
-[m4_pattern_forbid([^_?PKG_[A-Z_]+$])
-m4_pattern_allow([^PKG_CONFIG(_PATH)?$])
-AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility])
-AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path])
-AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path])
-
-if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
-	AC_PATH_TOOL([PKG_CONFIG], [pkg-config])
-fi
-if test -n "$PKG_CONFIG"; then
-	_pkg_min_version=m4_default([$1], [0.9.0])
-	AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version])
-	if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
-		AC_MSG_RESULT([yes])
-	else
-		AC_MSG_RESULT([no])
-		PKG_CONFIG=""
-	fi
-fi[]dnl
-])# PKG_PROG_PKG_CONFIG
-
-# PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
-#
-# Check to see whether a particular set of modules exists.  Similar
-# to PKG_CHECK_MODULES(), but does not set variables or print errors.
-#
-# Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG])
-# only at the first occurence in configure.ac, so if the first place
-# it's called might be skipped (such as if it is within an "if", you
-# have to call PKG_CHECK_EXISTS manually
-# --------------------------------------------------------------
-AC_DEFUN([PKG_CHECK_EXISTS],
-[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
-if test -n "$PKG_CONFIG" && \
-    AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then
-  m4_default([$2], [:])
-m4_ifvaln([$3], [else
-  $3])dnl
-fi])
-
-# _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES])
-# ---------------------------------------------
-m4_define([_PKG_CONFIG],
-[if test -n "$$1"; then
-    pkg_cv_[]$1="$$1"
- elif test -n "$PKG_CONFIG"; then
-    PKG_CHECK_EXISTS([$3],
-                     [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`],
-		     [pkg_failed=yes])
- else
-    pkg_failed=untried
-fi[]dnl
-])# _PKG_CONFIG
-
-# _PKG_SHORT_ERRORS_SUPPORTED
-# -----------------------------
-AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED],
-[AC_REQUIRE([PKG_PROG_PKG_CONFIG])
-if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
-        _pkg_short_errors_supported=yes
-else
-        _pkg_short_errors_supported=no
-fi[]dnl
-])# _PKG_SHORT_ERRORS_SUPPORTED
-
-
-# PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],
-# [ACTION-IF-NOT-FOUND])
-#
-#
-# Note that if there is a possibility the first call to
-# PKG_CHECK_MODULES might not happen, you should be sure to include an
-# explicit call to PKG_PROG_PKG_CONFIG in your configure.ac
-#
-#
-# --------------------------------------------------------------
-AC_DEFUN([PKG_CHECK_MODULES],
-[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
-AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl
-AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl
-
-pkg_failed=no
-AC_MSG_CHECKING([for $1])
-
-_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2])
-_PKG_CONFIG([$1][_LIBS], [libs], [$2])
-
-m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS
-and $1[]_LIBS to avoid the need to call pkg-config.
-See the pkg-config man page for more details.])
-
-if test $pkg_failed = yes; then
-   	AC_MSG_RESULT([no])
-        _PKG_SHORT_ERRORS_SUPPORTED
-        if test $_pkg_short_errors_supported = yes; then
-	        $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "$2" 2>&1`
-        else 
-	        $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors "$2" 2>&1`
-        fi
-	# Put the nasty error message in config.log where it belongs
-	echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD
-
-	m4_default([$4], [AC_MSG_ERROR(
-[Package requirements ($2) were not met:
-
-$$1_PKG_ERRORS
-
-Consider adjusting the PKG_CONFIG_PATH environment variable if you
-installed software in a non-standard prefix.
-
-_PKG_TEXT])[]dnl
-        ])
-elif test $pkg_failed = untried; then
-     	AC_MSG_RESULT([no])
-	m4_default([$4], [AC_MSG_FAILURE(
-[The pkg-config script could not be found or is too old.  Make sure it
-is in your PATH or set the PKG_CONFIG environment variable to the full
-path to pkg-config.
-
-_PKG_TEXT
-
-To get pkg-config, see <http://pkg-config.freedesktop.org/>.])[]dnl
-        ])
-else
-	$1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS
-	$1[]_LIBS=$pkg_cv_[]$1[]_LIBS
-        AC_MSG_RESULT([yes])
-	$3
-fi[]dnl
-])# PKG_CHECK_MODULES
-
-# Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# AM_AUTOMAKE_VERSION(VERSION)
-# ----------------------------
-# Automake X.Y traces this macro to ensure aclocal.m4 has been
-# generated from the m4 files accompanying Automake X.Y.
-# (This private macro should not be called outside this file.)
-AC_DEFUN([AM_AUTOMAKE_VERSION],
-[am__api_version='1.11'
-dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
-dnl require some minimum version.  Point them to the right macro.
-m4_if([$1], [1.11.1], [],
-      [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
-])
-
-# _AM_AUTOCONF_VERSION(VERSION)
-# -----------------------------
-# aclocal traces this macro to find the Autoconf version.
-# This is a private macro too.  Using m4_define simplifies
-# the logic in aclocal, which can simply ignore this definition.
-m4_define([_AM_AUTOCONF_VERSION], [])
-
-# AM_SET_CURRENT_AUTOMAKE_VERSION
-# -------------------------------
-# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
-# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
-AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
-[AM_AUTOMAKE_VERSION([1.11.1])dnl
-m4_ifndef([AC_AUTOCONF_VERSION],
-  [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
-_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
-
-# AM_AUX_DIR_EXPAND                                         -*- Autoconf -*-
-
-# Copyright (C) 2001, 2003, 2005  Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
-# $ac_aux_dir to `$srcdir/foo'.  In other projects, it is set to
-# `$srcdir', `$srcdir/..', or `$srcdir/../..'.
-#
-# Of course, Automake must honor this variable whenever it calls a
-# tool from the auxiliary directory.  The problem is that $srcdir (and
-# therefore $ac_aux_dir as well) can be either absolute or relative,
-# depending on how configure is run.  This is pretty annoying, since
-# it makes $ac_aux_dir quite unusable in subdirectories: in the top
-# source directory, any form will work fine, but in subdirectories a
-# relative path needs to be adjusted first.
-#
-# $ac_aux_dir/missing
-#    fails when called from a subdirectory if $ac_aux_dir is relative
-# $top_srcdir/$ac_aux_dir/missing
-#    fails if $ac_aux_dir is absolute,
-#    fails when called from a subdirectory in a VPATH build with
-#          a relative $ac_aux_dir
-#
-# The reason of the latter failure is that $top_srcdir and $ac_aux_dir
-# are both prefixed by $srcdir.  In an in-source build this is usually
-# harmless because $srcdir is `.', but things will broke when you
-# start a VPATH build or use an absolute $srcdir.
-#
-# So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
-# iff we strip the leading $srcdir from $ac_aux_dir.  That would be:
-#   am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"`
-# and then we would define $MISSING as
-#   MISSING="\${SHELL} $am_aux_dir/missing"
-# This will work as long as MISSING is not called from configure, because
-# unfortunately $(top_srcdir) has no meaning in configure.
-# However there are other variables, like CC, which are often used in
-# configure, and could therefore not use this "fixed" $ac_aux_dir.
-#
-# Another solution, used here, is to always expand $ac_aux_dir to an
-# absolute PATH.  The drawback is that using absolute paths prevent a
-# configured tree to be moved without reconfiguration.
-
-AC_DEFUN([AM_AUX_DIR_EXPAND],
-[dnl Rely on autoconf to set up CDPATH properly.
-AC_PREREQ([2.50])dnl
-# expand $ac_aux_dir to an absolute path
-am_aux_dir=`cd $ac_aux_dir && pwd`
-])
-
-# AM_CONDITIONAL                                            -*- Autoconf -*-
-
-# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006, 2008
-# Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# serial 9
-
-# AM_CONDITIONAL(NAME, SHELL-CONDITION)
-# -------------------------------------
-# Define a conditional.
-AC_DEFUN([AM_CONDITIONAL],
-[AC_PREREQ(2.52)dnl
- ifelse([$1], [TRUE],  [AC_FATAL([$0: invalid condition: $1])],
-	[$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
-AC_SUBST([$1_TRUE])dnl
-AC_SUBST([$1_FALSE])dnl
-_AM_SUBST_NOTMAKE([$1_TRUE])dnl
-_AM_SUBST_NOTMAKE([$1_FALSE])dnl
-m4_define([_AM_COND_VALUE_$1], [$2])dnl
-if $2; then
-  $1_TRUE=
-  $1_FALSE='#'
-else
-  $1_TRUE='#'
-  $1_FALSE=
-fi
-AC_CONFIG_COMMANDS_PRE(
-[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
-  AC_MSG_ERROR([[conditional "$1" was never defined.
-Usually this means the macro was only invoked conditionally.]])
-fi])])
-
-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009
-# Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# serial 10
-
-# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
-# written in clear, in which case automake, when reading aclocal.m4,
-# will think it sees a *use*, and therefore will trigger all it's
-# C support machinery.  Also note that it means that autoscan, seeing
-# CC etc. in the Makefile, will ask for an AC_PROG_CC use...
-
-
-# _AM_DEPENDENCIES(NAME)
-# ----------------------
-# See how the compiler implements dependency checking.
-# NAME is "CC", "CXX", "GCJ", or "OBJC".
-# We try a few techniques and use that to set a single cache variable.
-#
-# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was
-# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular
-# dependency, and given that the user is not expected to run this macro,
-# just rely on AC_PROG_CC.
-AC_DEFUN([_AM_DEPENDENCIES],
-[AC_REQUIRE([AM_SET_DEPDIR])dnl
-AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
-AC_REQUIRE([AM_MAKE_INCLUDE])dnl
-AC_REQUIRE([AM_DEP_TRACK])dnl
-
-ifelse([$1], CC,   [depcc="$CC"   am_compiler_list=],
-       [$1], CXX,  [depcc="$CXX"  am_compiler_list=],
-       [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
-       [$1], UPC,  [depcc="$UPC"  am_compiler_list=],
-       [$1], GCJ,  [depcc="$GCJ"  am_compiler_list='gcc3 gcc'],
-                   [depcc="$$1"   am_compiler_list=])
-
-AC_CACHE_CHECK([dependency style of $depcc],
-               [am_cv_$1_dependencies_compiler_type],
-[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
-  # We make a subdir and do the tests there.  Otherwise we can end up
-  # making bogus files that we don't know about and never remove.  For
-  # instance it was reported that on HP-UX the gcc test will end up
-  # making a dummy file named `D' -- because `-MD' means `put the output
-  # in D'.
-  mkdir conftest.dir
-  # Copy depcomp to subdir because otherwise we won't find it if we're
-  # using a relative directory.
-  cp "$am_depcomp" conftest.dir
-  cd conftest.dir
-  # We will build objects and dependencies in a subdirectory because
-  # it helps to detect inapplicable dependency modes.  For instance
-  # both Tru64's cc and ICC support -MD to output dependencies as a
-  # side effect of compilation, but ICC will put the dependencies in
-  # the current directory while Tru64 will put them in the object
-  # directory.
-  mkdir sub
-
-  am_cv_$1_dependencies_compiler_type=none
-  if test "$am_compiler_list" = ""; then
-     am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
-  fi
-  am__universal=false
-  m4_case([$1], [CC],
-    [case " $depcc " in #(
-     *\ -arch\ *\ -arch\ *) am__universal=true ;;
-     esac],
-    [CXX],
-    [case " $depcc " in #(
-     *\ -arch\ *\ -arch\ *) am__universal=true ;;
-     esac])
-
-  for depmode in $am_compiler_list; do
-    # Setup a source with many dependencies, because some compilers
-    # like to wrap large dependency lists on column 80 (with \), and
-    # we should not choose a depcomp mode which is confused by this.
-    #
-    # We need to recreate these files for each test, as the compiler may
-    # overwrite some of them when testing with obscure command lines.
-    # This happens at least with the AIX C compiler.
-    : > sub/conftest.c
-    for i in 1 2 3 4 5 6; do
-      echo '#include "conftst'$i'.h"' >> sub/conftest.c
-      # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
-      # Solaris 8's {/usr,}/bin/sh.
-      touch sub/conftst$i.h
-    done
-    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
-
-    # We check with `-c' and `-o' for the sake of the "dashmstdout"
-    # mode.  It turns out that the SunPro C++ compiler does not properly
-    # handle `-M -o', and we need to detect this.  Also, some Intel
-    # versions had trouble with output in subdirs
-    am__obj=sub/conftest.${OBJEXT-o}
-    am__minus_obj="-o $am__obj"
-    case $depmode in
-    gcc)
-      # This depmode causes a compiler race in universal mode.
-      test "$am__universal" = false || continue
-      ;;
-    nosideeffect)
-      # after this tag, mechanisms are not by side-effect, so they'll
-      # only be used when explicitly requested
-      if test "x$enable_dependency_tracking" = xyes; then
-	continue
-      else
-	break
-      fi
-      ;;
-    msvisualcpp | msvcmsys)
-      # This compiler won't grok `-c -o', but also, the minuso test has
-      # not run yet.  These depmodes are late enough in the game, and
-      # so weak that their functioning should not be impacted.
-      am__obj=conftest.${OBJEXT-o}
-      am__minus_obj=
-      ;;
-    none) break ;;
-    esac
-    if depmode=$depmode \
-       source=sub/conftest.c object=$am__obj \
-       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
-       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
-         >/dev/null 2>conftest.err &&
-       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
-       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
-       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
-       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
-      # icc doesn't choke on unknown options, it will just issue warnings
-      # or remarks (even with -Werror).  So we grep stderr for any message
-      # that says an option was ignored or not supported.
-      # When given -MP, icc 7.0 and 7.1 complain thusly:
-      #   icc: Command line warning: ignoring option '-M'; no argument required
-      # The diagnosis changed in icc 8.0:
-      #   icc: Command line remark: option '-MP' not supported
-      if (grep 'ignoring option' conftest.err ||
-          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
-        am_cv_$1_dependencies_compiler_type=$depmode
-        break
-      fi
-    fi
-  done
-
-  cd ..
-  rm -rf conftest.dir
-else
-  am_cv_$1_dependencies_compiler_type=none
-fi
-])
-AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type])
-AM_CONDITIONAL([am__fastdep$1], [
-  test "x$enable_dependency_tracking" != xno \
-  && test "$am_cv_$1_dependencies_compiler_type" = gcc3])
-])
-
-
-# AM_SET_DEPDIR
-# -------------
-# Choose a directory name for dependency files.
-# This macro is AC_REQUIREd in _AM_DEPENDENCIES
-AC_DEFUN([AM_SET_DEPDIR],
-[AC_REQUIRE([AM_SET_LEADING_DOT])dnl
-AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
-])
-
-
-# AM_DEP_TRACK
-# ------------
-AC_DEFUN([AM_DEP_TRACK],
-[AC_ARG_ENABLE(dependency-tracking,
-[  --disable-dependency-tracking  speeds up one-time build
-  --enable-dependency-tracking   do not reject slow dependency extractors])
-if test "x$enable_dependency_tracking" != xno; then
-  am_depcomp="$ac_aux_dir/depcomp"
-  AMDEPBACKSLASH='\'
-fi
-AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
-AC_SUBST([AMDEPBACKSLASH])dnl
-_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
-])
-
-# Generate code to set up dependency tracking.              -*- Autoconf -*-
-
-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008
-# Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-#serial 5
-
-# _AM_OUTPUT_DEPENDENCY_COMMANDS
-# ------------------------------
-AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
-[{
-  # Autoconf 2.62 quotes --file arguments for eval, but not when files
-  # are listed without --file.  Let's play safe and only enable the eval
-  # if we detect the quoting.
-  case $CONFIG_FILES in
-  *\'*) eval set x "$CONFIG_FILES" ;;
-  *)   set x $CONFIG_FILES ;;
-  esac
-  shift
-  for mf
-  do
-    # Strip MF so we end up with the name of the file.
-    mf=`echo "$mf" | sed -e 's/:.*$//'`
-    # Check whether this is an Automake generated Makefile or not.
-    # We used to match only the files named `Makefile.in', but
-    # some people rename them; so instead we look at the file content.
-    # Grep'ing the first line is not enough: some people post-process
-    # each Makefile.in and add a new line on top of each file to say so.
-    # Grep'ing the whole file is not good either: AIX grep has a line
-    # limit of 2048, but all sed's we know have understand at least 4000.
-    if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
-      dirpart=`AS_DIRNAME("$mf")`
-    else
-      continue
-    fi
-    # Extract the definition of DEPDIR, am__include, and am__quote
-    # from the Makefile without running `make'.
-    DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
-    test -z "$DEPDIR" && continue
-    am__include=`sed -n 's/^am__include = //p' < "$mf"`
-    test -z "am__include" && continue
-    am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
-    # When using ansi2knr, U may be empty or an underscore; expand it
-    U=`sed -n 's/^U = //p' < "$mf"`
-    # Find all dependency output files, they are included files with
-    # $(DEPDIR) in their names.  We invoke sed twice because it is the
-    # simplest approach to changing $(DEPDIR) to its actual value in the
-    # expansion.
-    for file in `sed -n "
-      s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
-	 sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
-      # Make sure the directory exists.
-      test -f "$dirpart/$file" && continue
-      fdir=`AS_DIRNAME(["$file"])`
-      AS_MKDIR_P([$dirpart/$fdir])
-      # echo "creating $dirpart/$file"
-      echo '# dummy' > "$dirpart/$file"
-    done
-  done
-}
-])# _AM_OUTPUT_DEPENDENCY_COMMANDS
-
-
-# AM_OUTPUT_DEPENDENCY_COMMANDS
-# -----------------------------
-# This macro should only be invoked once -- use via AC_REQUIRE.
-#
-# This code is only required when automatic dependency tracking
-# is enabled.  FIXME.  This creates each `.P' file that we will
-# need in order to bootstrap the dependency handling code.
-AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
-[AC_CONFIG_COMMANDS([depfiles],
-     [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
-     [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
-])
-
-# Do all the work for Automake.                             -*- Autoconf -*-
-
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-# 2005, 2006, 2008, 2009 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# serial 16
-
-# This macro actually does too much.  Some checks are only needed if
-# your package does certain things.  But this isn't really a big deal.
-
-# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
-# AM_INIT_AUTOMAKE([OPTIONS])
-# -----------------------------------------------
-# The call with PACKAGE and VERSION arguments is the old style
-# call (pre autoconf-2.50), which is being phased out.  PACKAGE
-# and VERSION should now be passed to AC_INIT and removed from
-# the call to AM_INIT_AUTOMAKE.
-# We support both call styles for the transition.  After
-# the next Automake release, Autoconf can make the AC_INIT
-# arguments mandatory, and then we can depend on a new Autoconf
-# release and drop the old call support.
-AC_DEFUN([AM_INIT_AUTOMAKE],
-[AC_PREREQ([2.62])dnl
-dnl Autoconf wants to disallow AM_ names.  We explicitly allow
-dnl the ones we care about.
-m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
-AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
-AC_REQUIRE([AC_PROG_INSTALL])dnl
-if test "`cd $srcdir && pwd`" != "`pwd`"; then
-  # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
-  # is not polluted with repeated "-I."
-  AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl
-  # test to see if srcdir already configured
-  if test -f $srcdir/config.status; then
-    AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
-  fi
-fi
-
-# test whether we have cygpath
-if test -z "$CYGPATH_W"; then
-  if (cygpath --version) >/dev/null 2>/dev/null; then
-    CYGPATH_W='cygpath -w'
-  else
-    CYGPATH_W=echo
-  fi
-fi
-AC_SUBST([CYGPATH_W])
-
-# Define the identity of the package.
-dnl Distinguish between old-style and new-style calls.
-m4_ifval([$2],
-[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
- AC_SUBST([PACKAGE], [$1])dnl
- AC_SUBST([VERSION], [$2])],
-[_AM_SET_OPTIONS([$1])dnl
-dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT.
-m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,,
-  [m4_fatal([AC_INIT should be called with package and version arguments])])dnl
- AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
- AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
-
-_AM_IF_OPTION([no-define],,
-[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
- AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl
-
-# Some tools Automake needs.
-AC_REQUIRE([AM_SANITY_CHECK])dnl
-AC_REQUIRE([AC_ARG_PROGRAM])dnl
-AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version})
-AM_MISSING_PROG(AUTOCONF, autoconf)
-AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version})
-AM_MISSING_PROG(AUTOHEADER, autoheader)
-AM_MISSING_PROG(MAKEINFO, makeinfo)
-AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
-AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl
-AC_REQUIRE([AM_PROG_MKDIR_P])dnl
-# We need awk for the "check" target.  The system "awk" is bad on
-# some platforms.
-AC_REQUIRE([AC_PROG_AWK])dnl
-AC_REQUIRE([AC_PROG_MAKE_SET])dnl
-AC_REQUIRE([AM_SET_LEADING_DOT])dnl
-_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
-	      [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
-			     [_AM_PROG_TAR([v7])])])
-_AM_IF_OPTION([no-dependencies],,
-[AC_PROVIDE_IFELSE([AC_PROG_CC],
-		  [_AM_DEPENDENCIES(CC)],
-		  [define([AC_PROG_CC],
-			  defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
-AC_PROVIDE_IFELSE([AC_PROG_CXX],
-		  [_AM_DEPENDENCIES(CXX)],
-		  [define([AC_PROG_CXX],
-			  defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
-AC_PROVIDE_IFELSE([AC_PROG_OBJC],
-		  [_AM_DEPENDENCIES(OBJC)],
-		  [define([AC_PROG_OBJC],
-			  defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl
-])
-_AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl
-dnl The `parallel-tests' driver may need to know about EXEEXT, so add the
-dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen.  This macro
-dnl is hooked onto _AC_COMPILER_EXEEXT early, see below.
-AC_CONFIG_COMMANDS_PRE(dnl
-[m4_provide_if([_AM_COMPILER_EXEEXT],
-  [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
-])
-
-dnl Hook into `_AC_COMPILER_EXEEXT' early to learn its expansion.  Do not
-dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further
-dnl mangled by Autoconf and run in a shell conditional statement.
-m4_define([_AC_COMPILER_EXEEXT],
-m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])])
-
-
-# When config.status generates a header, we must update the stamp-h file.
-# This file resides in the same directory as the config header
-# that is generated.  The stamp files are numbered to have different names.
-
-# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the
-# loop where config.status creates the headers, so we can generate
-# our stamp files there.
-AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK],
-[# Compute $1's index in $config_headers.
-_am_arg=$1
-_am_stamp_count=1
-for _am_header in $config_headers :; do
-  case $_am_header in
-    $_am_arg | $_am_arg:* )
-      break ;;
-    * )
-      _am_stamp_count=`expr $_am_stamp_count + 1` ;;
-  esac
-done
-echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
-
-# Copyright (C) 2001, 2003, 2005, 2008  Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# AM_PROG_INSTALL_SH
-# ------------------
-# Define $install_sh.
-AC_DEFUN([AM_PROG_INSTALL_SH],
-[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
-if test x"${install_sh}" != xset; then
-  case $am_aux_dir in
-  *\ * | *\	*)
-    install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
-  *)
-    install_sh="\${SHELL} $am_aux_dir/install-sh"
-  esac
-fi
-AC_SUBST(install_sh)])
-
-# Copyright (C) 2003, 2005  Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# serial 2
-
-# Check whether the underlying file-system supports filenames
-# with a leading dot.  For instance MS-DOS doesn't.
-AC_DEFUN([AM_SET_LEADING_DOT],
-[rm -rf .tst 2>/dev/null
-mkdir .tst 2>/dev/null
-if test -d .tst; then
-  am__leading_dot=.
-else
-  am__leading_dot=_
-fi
-rmdir .tst 2>/dev/null
-AC_SUBST([am__leading_dot])])
-
-# Check to see how 'make' treats includes.	            -*- Autoconf -*-
-
-# Copyright (C) 2001, 2002, 2003, 2005, 2009  Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# serial 4
-
-# AM_MAKE_INCLUDE()
-# -----------------
-# Check to see how make treats includes.
-AC_DEFUN([AM_MAKE_INCLUDE],
-[am_make=${MAKE-make}
-cat > confinc << 'END'
-am__doit:
-	@echo this is the am__doit target
-.PHONY: am__doit
-END
-# If we don't find an include directive, just comment out the code.
-AC_MSG_CHECKING([for style of include used by $am_make])
-am__include="#"
-am__quote=
-_am_result=none
-# First try GNU make style include.
-echo "include confinc" > confmf
-# Ignore all kinds of additional output from `make'.
-case `$am_make -s -f confmf 2> /dev/null` in #(
-*the\ am__doit\ target*)
-  am__include=include
-  am__quote=
-  _am_result=GNU
-  ;;
-esac
-# Now try BSD make style include.
-if test "$am__include" = "#"; then
-   echo '.include "confinc"' > confmf
-   case `$am_make -s -f confmf 2> /dev/null` in #(
-   *the\ am__doit\ target*)
-     am__include=.include
-     am__quote="\""
-     _am_result=BSD
-     ;;
-   esac
-fi
-AC_SUBST([am__include])
-AC_SUBST([am__quote])
-AC_MSG_RESULT([$_am_result])
-rm -f confinc confmf
-])
-
-# Fake the existence of programs that GNU maintainers use.  -*- Autoconf -*-
-
-# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005, 2008
-# Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# serial 6
-
-# AM_MISSING_PROG(NAME, PROGRAM)
-# ------------------------------
-AC_DEFUN([AM_MISSING_PROG],
-[AC_REQUIRE([AM_MISSING_HAS_RUN])
-$1=${$1-"${am_missing_run}$2"}
-AC_SUBST($1)])
-
-
-# AM_MISSING_HAS_RUN
-# ------------------
-# Define MISSING if not defined so far and test if it supports --run.
-# If it does, set am_missing_run to use it, otherwise, to nothing.
-AC_DEFUN([AM_MISSING_HAS_RUN],
-[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
-AC_REQUIRE_AUX_FILE([missing])dnl
-if test x"${MISSING+set}" != xset; then
-  case $am_aux_dir in
-  *\ * | *\	*)
-    MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
-  *)
-    MISSING="\${SHELL} $am_aux_dir/missing" ;;
-  esac
-fi
-# Use eval to expand $SHELL
-if eval "$MISSING --run true"; then
-  am_missing_run="$MISSING --run "
-else
-  am_missing_run=
-  AC_MSG_WARN([`missing' script is too old or missing])
-fi
-])
-
-# Copyright (C) 2003, 2004, 2005, 2006  Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# AM_PROG_MKDIR_P
-# ---------------
-# Check for `mkdir -p'.
-AC_DEFUN([AM_PROG_MKDIR_P],
-[AC_PREREQ([2.60])dnl
-AC_REQUIRE([AC_PROG_MKDIR_P])dnl
-dnl Automake 1.8 to 1.9.6 used to define mkdir_p.  We now use MKDIR_P,
-dnl while keeping a definition of mkdir_p for backward compatibility.
-dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile.
-dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of
-dnl Makefile.ins that do not define MKDIR_P, so we do our own
-dnl adjustment using top_builddir (which is defined more often than
-dnl MKDIR_P).
-AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl
-case $mkdir_p in
-  [[\\/$]]* | ?:[[\\/]]*) ;;
-  */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
-esac
-])
-
-# Helper functions for option handling.                     -*- Autoconf -*-
-
-# Copyright (C) 2001, 2002, 2003, 2005, 2008  Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# serial 4
-
-# _AM_MANGLE_OPTION(NAME)
-# -----------------------
-AC_DEFUN([_AM_MANGLE_OPTION],
-[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
-
-# _AM_SET_OPTION(NAME)
-# ------------------------------
-# Set option NAME.  Presently that only means defining a flag for this option.
-AC_DEFUN([_AM_SET_OPTION],
-[m4_define(_AM_MANGLE_OPTION([$1]), 1)])
-
-# _AM_SET_OPTIONS(OPTIONS)
-# ----------------------------------
-# OPTIONS is a space-separated list of Automake options.
-AC_DEFUN([_AM_SET_OPTIONS],
-[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
-
-# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
-# -------------------------------------------
-# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
-AC_DEFUN([_AM_IF_OPTION],
-[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
-
-# Check to make sure that the build environment is sane.    -*- Autoconf -*-
-
-# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005, 2008
-# Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# serial 5
-
-# AM_SANITY_CHECK
-# ---------------
-AC_DEFUN([AM_SANITY_CHECK],
-[AC_MSG_CHECKING([whether build environment is sane])
-# Just in case
-sleep 1
-echo timestamp > conftest.file
-# Reject unsafe characters in $srcdir or the absolute working directory
-# name.  Accept space and tab only in the latter.
-am_lf='
-'
-case `pwd` in
-  *[[\\\"\#\$\&\'\`$am_lf]]*)
-    AC_MSG_ERROR([unsafe absolute working directory name]);;
-esac
-case $srcdir in
-  *[[\\\"\#\$\&\'\`$am_lf\ \	]]*)
-    AC_MSG_ERROR([unsafe srcdir value: `$srcdir']);;
-esac
-
-# Do `set' in a subshell so we don't clobber the current shell's
-# arguments.  Must try -L first in case configure is actually a
-# symlink; some systems play weird games with the mod time of symlinks
-# (eg FreeBSD returns the mod time of the symlink's containing
-# directory).
-if (
-   set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
-   if test "$[*]" = "X"; then
-      # -L didn't work.
-      set X `ls -t "$srcdir/configure" conftest.file`
-   fi
-   rm -f conftest.file
-   if test "$[*]" != "X $srcdir/configure conftest.file" \
-      && test "$[*]" != "X conftest.file $srcdir/configure"; then
-
-      # If neither matched, then we have a broken ls.  This can happen
-      # if, for instance, CONFIG_SHELL is bash and it inherits a
-      # broken ls alias from the environment.  This has actually
-      # happened.  Such a system could not be considered "sane".
-      AC_MSG_ERROR([ls -t appears to fail.  Make sure there is not a broken
-alias in your environment])
-   fi
-
-   test "$[2]" = conftest.file
-   )
-then
-   # Ok.
-   :
-else
-   AC_MSG_ERROR([newly created file is older than distributed files!
-Check your system clock])
-fi
-AC_MSG_RESULT(yes)])
-
-# Copyright (C) 2009  Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# serial 1
-
-# AM_SILENT_RULES([DEFAULT])
-# --------------------------
-# Enable less verbose build rules; with the default set to DEFAULT
-# (`yes' being less verbose, `no' or empty being verbose).
-AC_DEFUN([AM_SILENT_RULES],
-[AC_ARG_ENABLE([silent-rules],
-[  --enable-silent-rules          less verbose build output (undo: `make V=1')
-  --disable-silent-rules         verbose build output (undo: `make V=0')])
-case $enable_silent_rules in
-yes) AM_DEFAULT_VERBOSITY=0;;
-no)  AM_DEFAULT_VERBOSITY=1;;
-*)   AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);;
-esac
-AC_SUBST([AM_DEFAULT_VERBOSITY])dnl
-AM_BACKSLASH='\'
-AC_SUBST([AM_BACKSLASH])dnl
-_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
-])
-
-# Copyright (C) 2001, 2003, 2005  Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# AM_PROG_INSTALL_STRIP
-# ---------------------
-# One issue with vendor `install' (even GNU) is that you can't
-# specify the program used to strip binaries.  This is especially
-# annoying in cross-compiling environments, where the build's strip
-# is unlikely to handle the host's binaries.
-# Fortunately install-sh will honor a STRIPPROG variable, so we
-# always use install-sh in `make install-strip', and initialize
-# STRIPPROG with the value of the STRIP variable (set by the user).
-AC_DEFUN([AM_PROG_INSTALL_STRIP],
-[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
-# Installed binaries are usually stripped using `strip' when the user
-# run `make install-strip'.  However `strip' might not be the right
-# tool to use in cross-compilation environments, therefore Automake
-# will honor the `STRIP' environment variable to overrule this program.
-dnl Don't test for $cross_compiling = yes, because it might be `maybe'.
-if test "$cross_compiling" != no; then
-  AC_CHECK_TOOL([STRIP], [strip], :)
-fi
-INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
-AC_SUBST([INSTALL_STRIP_PROGRAM])])
-
-# Copyright (C) 2006, 2008  Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# serial 2
-
-# _AM_SUBST_NOTMAKE(VARIABLE)
-# ---------------------------
-# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.
-# This macro is traced by Automake.
-AC_DEFUN([_AM_SUBST_NOTMAKE])
-
-# AM_SUBST_NOTMAKE(VARIABLE)
-# ---------------------------
-# Public sister of _AM_SUBST_NOTMAKE.
-AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
-
-# Check how to create a tarball.                            -*- Autoconf -*-
-
-# Copyright (C) 2004, 2005  Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# serial 2
-
-# _AM_PROG_TAR(FORMAT)
-# --------------------
-# Check how to create a tarball in format FORMAT.
-# FORMAT should be one of `v7', `ustar', or `pax'.
-#
-# Substitute a variable $(am__tar) that is a command
-# writing to stdout a FORMAT-tarball containing the directory
-# $tardir.
-#     tardir=directory && $(am__tar) > result.tar
-#
-# Substitute a variable $(am__untar) that extract such
-# a tarball read from stdin.
-#     $(am__untar) < result.tar
-AC_DEFUN([_AM_PROG_TAR],
-[# Always define AMTAR for backward compatibility.
-AM_MISSING_PROG([AMTAR], [tar])
-m4_if([$1], [v7],
-     [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'],
-     [m4_case([$1], [ustar],, [pax],,
-              [m4_fatal([Unknown tar format])])
-AC_MSG_CHECKING([how to create a $1 tar archive])
-# Loop over all known methods to create a tar archive until one works.
-_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
-_am_tools=${am_cv_prog_tar_$1-$_am_tools}
-# Do not fold the above two line into one, because Tru64 sh and
-# Solaris sh will not grok spaces in the rhs of `-'.
-for _am_tool in $_am_tools
-do
-  case $_am_tool in
-  gnutar)
-    for _am_tar in tar gnutar gtar;
-    do
-      AM_RUN_LOG([$_am_tar --version]) && break
-    done
-    am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
-    am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
-    am__untar="$_am_tar -xf -"
-    ;;
-  plaintar)
-    # Must skip GNU tar: if it does not support --format= it doesn't create
-    # ustar tarball either.
-    (tar --version) >/dev/null 2>&1 && continue
-    am__tar='tar chf - "$$tardir"'
-    am__tar_='tar chf - "$tardir"'
-    am__untar='tar xf -'
-    ;;
-  pax)
-    am__tar='pax -L -x $1 -w "$$tardir"'
-    am__tar_='pax -L -x $1 -w "$tardir"'
-    am__untar='pax -r'
-    ;;
-  cpio)
-    am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
-    am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
-    am__untar='cpio -i -H $1 -d'
-    ;;
-  none)
-    am__tar=false
-    am__tar_=false
-    am__untar=false
-    ;;
-  esac
-
-  # If the value was cached, stop now.  We just wanted to have am__tar
-  # and am__untar set.
-  test -n "${am_cv_prog_tar_$1}" && break
-
-  # tar/untar a dummy directory, and stop if the command works
-  rm -rf conftest.dir
-  mkdir conftest.dir
-  echo GrepMe > conftest.dir/file
-  AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
-  rm -rf conftest.dir
-  if test -s conftest.tar; then
-    AM_RUN_LOG([$am__untar <conftest.tar])
-    grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
-  fi
-done
-rm -rf conftest.dir
-
-AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
-AC_MSG_RESULT([$am_cv_prog_tar_$1])])
-AC_SUBST([am__tar])
-AC_SUBST([am__untar])
-]) # _AM_PROG_TAR
-
-m4_include([m4/ax_pthread.m4])
-m4_include([m4/libtool.m4])
-m4_include([m4/ltoptions.m4])
-m4_include([m4/ltsugar.m4])
-m4_include([m4/ltversion.m4])
-m4_include([m4/lt~obsolete.m4])
diff --git a/bootstrap b/bootstrap
index 4d68db5..a8fd885 100755
--- a/bootstrap
+++ b/bootstrap
@@ -1,15 +1,3 @@
 #!/bin/sh
 
-set -e
-set -x
-if test -f Makefile; then
-  make distclean
-fi
-rm -rf *~ *.cache *.m4 config.guess config.log config.status config.sub depcomp ltmain.sh
-
-if test ! -z "$1"; then
-    cp configure.ac configure.ac.orig
-    sed 's/^define(\[PACKAGE_SUFFIX\],\s*\[\([-~]*[0-9a-zA-Z]*\)\])$/define(\[PACKAGE_SUFFIX\], \['$1'\])/g' configure.ac.orig > configure.ac
-fi
-
 autoreconf --verbose --install --force
diff --git a/bootstrap.ci b/bootstrap.ci
new file mode 100755
index 0000000..49d2d98
--- /dev/null
+++ b/bootstrap.ci
@@ -0,0 +1,79 @@
+#!/bin/sh
+
+usage()
+{
+cat << EOF
+usage: $0 options
+
+OpenSC bootstrap
+OPTIONS:
+   -h      Show this message
+   -s      Package suffix
+   -S      Use package suffix as 'g' appended with the date of last commit
+   -r      Package version revision
+   -R      Use package version revision as Git commit number from 'git describe' result
+   -b      Package branch
+   -B      Use package branch as current Git branch
+EOF
+}
+
+
+SUFFIX=
+REVISION=
+VERBOSE=
+KEEPVERSION=
+while getopts “:hs:Sr:RK” OPTION
+do
+     case $OPTION in
+         h)
+             usage
+             exit 1
+             ;;
+         s)
+             SUFFIX=$OPTARG
+             ;;
+         S)
+             SUFFIX=g`git log -1 --pretty=fuller --date=iso | grep CommitDate: | sed -E 's/^CommitDate:\s(.*)/\1/' | sed -E 's/(.*)-(.*)-(.*) (.*):(.*):(.*)\s+.*/\1\2\3\4\5\6/'`
+             ;;
+         r)
+             REVISION=$OPTARG
+             ;;
+         R)
+             REVISION=`git describe | perl -ne 'print $1 if /^[\.0-9]*-([0-9]*)-g[a-z0-9]*$/;'`
+             ;;
+         ?)
+             usage
+             exit
+             ;;
+     esac
+done
+
+set -e
+set -x
+if [ -f Makefile ]; then
+  make distclean
+fi
+
+rm -rf *~ *.cache config.guess config.log config.status config.sub depcomp ltmain.sh version.m4.ci
+
+if [ -n "$SUFFIX" ] || [ -n "$REVISION" ]
+then
+    cp -a version.m4 version.m4.tmp
+
+    if [ -n "$SUFFIX" ]
+    then
+        echo Set package suffix "$SUFFIX"
+        sed 's/^define(\[PACKAGE_SUFFIX\],\s*\[\([-~]*[0-9a-zA-Z]*\)\])$/define(\[PACKAGE_SUFFIX\], \['$SUFFIX'\])/g' version.m4.tmp > version.m4.ci
+        cp version.m4.ci version.m4.tmp
+    fi
+
+    if [ -n "$REVISION" ]
+    then
+        echo Set package revision "$REVISION"
+        sed 's/^define(\[PACKAGE_VERSION_REVISION\],\s*\[\([-~]*[0-9a-zA-Z]*\)\])$/define(\[PACKAGE_VERSION_REVISION\], \['$REVISION'\])/g' version.m4.tmp > version.m4.ci
+    fi
+
+    rm -f version.m4.tmp
+fi
+
+autoreconf --verbose --install --force || true
diff --git a/config.guess b/config.guess
deleted file mode 100755
index c2246a4..0000000
--- a/config.guess
+++ /dev/null
@@ -1,1502 +0,0 @@
-#! /bin/sh
-# Attempt to guess a canonical system name.
-#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-#   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-#   Free Software Foundation, Inc.
-
-timestamp='2009-12-30'
-
-# This file is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
-# 02110-1301, USA.
-#
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-
-# Originally written by Per Bothner.  Please send patches (context
-# diff format) to <config-patches at gnu.org> and include a ChangeLog
-# entry.
-#
-# This script attempts to guess a canonical system name similar to
-# config.sub.  If it succeeds, it prints the system name on stdout, and
-# exits with 0.  Otherwise, it exits with 1.
-#
-# You can get the latest version of this script from:
-# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
-
-me=`echo "$0" | sed -e 's,.*/,,'`
-
-usage="\
-Usage: $0 [OPTION]
-
-Output the configuration name of the system \`$me' is run on.
-
-Operation modes:
-  -h, --help         print this help, then exit
-  -t, --time-stamp   print date of last modification, then exit
-  -v, --version      print version number, then exit
-
-Report bugs and patches to <config-patches at gnu.org>."
-
-version="\
-GNU config.guess ($timestamp)
-
-Originally written by Per Bothner.
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free
-Software Foundation, Inc.
-
-This is free software; see the source for copying conditions.  There is NO
-warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
-
-help="
-Try \`$me --help' for more information."
-
-# Parse command line
-while test $# -gt 0 ; do
-  case $1 in
-    --time-stamp | --time* | -t )
-       echo "$timestamp" ; exit ;;
-    --version | -v )
-       echo "$version" ; exit ;;
-    --help | --h* | -h )
-       echo "$usage"; exit ;;
-    -- )     # Stop option processing
-       shift; break ;;
-    - )	# Use stdin as input.
-       break ;;
-    -* )
-       echo "$me: invalid option $1$help" >&2
-       exit 1 ;;
-    * )
-       break ;;
-  esac
-done
-
-if test $# != 0; then
-  echo "$me: too many arguments$help" >&2
-  exit 1
-fi
-
-trap 'exit 1' 1 2 15
-
-# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
-# compiler to aid in system detection is discouraged as it requires
-# temporary files to be created and, as you can see below, it is a
-# headache to deal with in a portable fashion.
-
-# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
-# use `HOST_CC' if defined, but it is deprecated.
-
-# Portable tmp directory creation inspired by the Autoconf team.
-
-set_cc_for_build='
-trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
-trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
-: ${TMPDIR=/tmp} ;
- { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
- { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
- { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
- { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
-dummy=$tmp/dummy ;
-tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
-case $CC_FOR_BUILD,$HOST_CC,$CC in
- ,,)    echo "int x;" > $dummy.c ;
-	for c in cc gcc c89 c99 ; do
-	  if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then
-	     CC_FOR_BUILD="$c"; break ;
-	  fi ;
-	done ;
-	if test x"$CC_FOR_BUILD" = x ; then
-	  CC_FOR_BUILD=no_compiler_found ;
-	fi
-	;;
- ,,*)   CC_FOR_BUILD=$CC ;;
- ,*,*)  CC_FOR_BUILD=$HOST_CC ;;
-esac ; set_cc_for_build= ;'
-
-# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
-# (ghazi at noc.rutgers.edu 1994-08-24)
-if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
-	PATH=$PATH:/.attbin ; export PATH
-fi
-
-UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
-UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
-UNAME_SYSTEM=`(uname -s) 2>/dev/null`  || UNAME_SYSTEM=unknown
-UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
-
-# Note: order is significant - the case branches are not exclusive.
-
-case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
-    *:NetBSD:*:*)
-	# NetBSD (nbsd) targets should (where applicable) match one or
-	# more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*,
-	# *-*-netbsdecoff* and *-*-netbsd*.  For targets that recently
-	# switched to ELF, *-*-netbsd* would select the old
-	# object file format.  This provides both forward
-	# compatibility and a consistent mechanism for selecting the
-	# object file format.
-	#
-	# Note: NetBSD doesn't particularly care about the vendor
-	# portion of the name.  We always set it to "unknown".
-	sysctl="sysctl -n hw.machine_arch"
-	UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \
-	    /usr/sbin/$sysctl 2>/dev/null || echo unknown)`
-	case "${UNAME_MACHINE_ARCH}" in
-	    armeb) machine=armeb-unknown ;;
-	    arm*) machine=arm-unknown ;;
-	    sh3el) machine=shl-unknown ;;
-	    sh3eb) machine=sh-unknown ;;
-	    sh5el) machine=sh5le-unknown ;;
-	    *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
-	esac
-	# The Operating System including object format, if it has switched
-	# to ELF recently, or will in the future.
-	case "${UNAME_MACHINE_ARCH}" in
-	    arm*|i386|m68k|ns32k|sh3*|sparc|vax)
-		eval $set_cc_for_build
-		if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
-			| grep -q __ELF__
-		then
-		    # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
-		    # Return netbsd for either.  FIX?
-		    os=netbsd
-		else
-		    os=netbsdelf
-		fi
-		;;
-	    *)
-	        os=netbsd
-		;;
-	esac
-	# The OS release
-	# Debian GNU/NetBSD machines have a different userland, and
-	# thus, need a distinct triplet. However, they do not need
-	# kernel version information, so it can be replaced with a
-	# suitable tag, in the style of linux-gnu.
-	case "${UNAME_VERSION}" in
-	    Debian*)
-		release='-gnu'
-		;;
-	    *)
-		release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
-		;;
-	esac
-	# Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
-	# contains redundant information, the shorter form:
-	# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
-	echo "${machine}-${os}${release}"
-	exit ;;
-    *:OpenBSD:*:*)
-	UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
-	echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
-	exit ;;
-    *:ekkoBSD:*:*)
-	echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
-	exit ;;
-    *:SolidBSD:*:*)
-	echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE}
-	exit ;;
-    macppc:MirBSD:*:*)
-	echo powerpc-unknown-mirbsd${UNAME_RELEASE}
-	exit ;;
-    *:MirBSD:*:*)
-	echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
-	exit ;;
-    alpha:OSF1:*:*)
-	case $UNAME_RELEASE in
-	*4.0)
-		UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
-		;;
-	*5.*)
-	        UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
-		;;
-	esac
-	# According to Compaq, /usr/sbin/psrinfo has been available on
-	# OSF/1 and Tru64 systems produced since 1995.  I hope that
-	# covers most systems running today.  This code pipes the CPU
-	# types through head -n 1, so we only detect the type of CPU 0.
-	ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^  The alpha \(.*\) processor.*$/\1/p' | head -n 1`
-	case "$ALPHA_CPU_TYPE" in
-	    "EV4 (21064)")
-		UNAME_MACHINE="alpha" ;;
-	    "EV4.5 (21064)")
-		UNAME_MACHINE="alpha" ;;
-	    "LCA4 (21066/21068)")
-		UNAME_MACHINE="alpha" ;;
-	    "EV5 (21164)")
-		UNAME_MACHINE="alphaev5" ;;
-	    "EV5.6 (21164A)")
-		UNAME_MACHINE="alphaev56" ;;
-	    "EV5.6 (21164PC)")
-		UNAME_MACHINE="alphapca56" ;;
-	    "EV5.7 (21164PC)")
-		UNAME_MACHINE="alphapca57" ;;
-	    "EV6 (21264)")
-		UNAME_MACHINE="alphaev6" ;;
-	    "EV6.7 (21264A)")
-		UNAME_MACHINE="alphaev67" ;;
-	    "EV6.8CB (21264C)")
-		UNAME_MACHINE="alphaev68" ;;
-	    "EV6.8AL (21264B)")
-		UNAME_MACHINE="alphaev68" ;;
-	    "EV6.8CX (21264D)")
-		UNAME_MACHINE="alphaev68" ;;
-	    "EV6.9A (21264/EV69A)")
-		UNAME_MACHINE="alphaev69" ;;
-	    "EV7 (21364)")
-		UNAME_MACHINE="alphaev7" ;;
-	    "EV7.9 (21364A)")
-		UNAME_MACHINE="alphaev79" ;;
-	esac
-	# A Pn.n version is a patched version.
-	# A Vn.n version is a released version.
-	# A Tn.n version is a released field test version.
-	# A Xn.n version is an unreleased experimental baselevel.
-	# 1.2 uses "1.2" for uname -r.
-	echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
-	exit ;;
-    Alpha\ *:Windows_NT*:*)
-	# How do we know it's Interix rather than the generic POSIX subsystem?
-	# Should we change UNAME_MACHINE based on the output of uname instead
-	# of the specific Alpha model?
-	echo alpha-pc-interix
-	exit ;;
-    21064:Windows_NT:50:3)
-	echo alpha-dec-winnt3.5
-	exit ;;
-    Amiga*:UNIX_System_V:4.0:*)
-	echo m68k-unknown-sysv4
-	exit ;;
-    *:[Aa]miga[Oo][Ss]:*:*)
-	echo ${UNAME_MACHINE}-unknown-amigaos
-	exit ;;
-    *:[Mm]orph[Oo][Ss]:*:*)
-	echo ${UNAME_MACHINE}-unknown-morphos
-	exit ;;
-    *:OS/390:*:*)
-	echo i370-ibm-openedition
-	exit ;;
-    *:z/VM:*:*)
-	echo s390-ibm-zvmoe
-	exit ;;
-    *:OS400:*:*)
-        echo powerpc-ibm-os400
-	exit ;;
-    arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
-	echo arm-acorn-riscix${UNAME_RELEASE}
-	exit ;;
-    arm:riscos:*:*|arm:RISCOS:*:*)
-	echo arm-unknown-riscos
-	exit ;;
-    SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
-	echo hppa1.1-hitachi-hiuxmpp
-	exit ;;
-    Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
-	# akee at wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
-	if test "`(/bin/universe) 2>/dev/null`" = att ; then
-		echo pyramid-pyramid-sysv3
-	else
-		echo pyramid-pyramid-bsd
-	fi
-	exit ;;
-    NILE*:*:*:dcosx)
-	echo pyramid-pyramid-svr4
-	exit ;;
-    DRS?6000:unix:4.0:6*)
-	echo sparc-icl-nx6
-	exit ;;
-    DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
-	case `/usr/bin/uname -p` in
-	    sparc) echo sparc-icl-nx7; exit ;;
-	esac ;;
-    s390x:SunOS:*:*)
-	echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-	exit ;;
-    sun4H:SunOS:5.*:*)
-	echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-	exit ;;
-    sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
-	echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-	exit ;;
-    i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)
-	echo i386-pc-auroraux${UNAME_RELEASE}
-	exit ;;
-    i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
-	eval $set_cc_for_build
-	SUN_ARCH="i386"
-	# If there is a compiler, see if it is configured for 64-bit objects.
-	# Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
-	# This test works for both compilers.
-	if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
-	    if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
-		(CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
-		grep IS_64BIT_ARCH >/dev/null
-	    then
-		SUN_ARCH="x86_64"
-	    fi
-	fi
-	echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-	exit ;;
-    sun4*:SunOS:6*:*)
-	# According to config.sub, this is the proper way to canonicalize
-	# SunOS6.  Hard to guess exactly what SunOS6 will be like, but
-	# it's likely to be more like Solaris than SunOS4.
-	echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-	exit ;;
-    sun4*:SunOS:*:*)
-	case "`/usr/bin/arch -k`" in
-	    Series*|S4*)
-		UNAME_RELEASE=`uname -v`
-		;;
-	esac
-	# Japanese Language versions have a version number like `4.1.3-JL'.
-	echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
-	exit ;;
-    sun3*:SunOS:*:*)
-	echo m68k-sun-sunos${UNAME_RELEASE}
-	exit ;;
-    sun*:*:4.2BSD:*)
-	UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
-	test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
-	case "`/bin/arch`" in
-	    sun3)
-		echo m68k-sun-sunos${UNAME_RELEASE}
-		;;
-	    sun4)
-		echo sparc-sun-sunos${UNAME_RELEASE}
-		;;
-	esac
-	exit ;;
-    aushp:SunOS:*:*)
-	echo sparc-auspex-sunos${UNAME_RELEASE}
-	exit ;;
-    # The situation for MiNT is a little confusing.  The machine name
-    # can be virtually everything (everything which is not
-    # "atarist" or "atariste" at least should have a processor
-    # > m68000).  The system name ranges from "MiNT" over "FreeMiNT"
-    # to the lowercase version "mint" (or "freemint").  Finally
-    # the system name "TOS" denotes a system which is actually not
-    # MiNT.  But MiNT is downward compatible to TOS, so this should
-    # be no problem.
-    atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
-        echo m68k-atari-mint${UNAME_RELEASE}
-	exit ;;
-    atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
-	echo m68k-atari-mint${UNAME_RELEASE}
-        exit ;;
-    *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
-        echo m68k-atari-mint${UNAME_RELEASE}
-	exit ;;
-    milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
-        echo m68k-milan-mint${UNAME_RELEASE}
-        exit ;;
-    hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
-        echo m68k-hades-mint${UNAME_RELEASE}
-        exit ;;
-    *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
-        echo m68k-unknown-mint${UNAME_RELEASE}
-        exit ;;
-    m68k:machten:*:*)
-	echo m68k-apple-machten${UNAME_RELEASE}
-	exit ;;
-    powerpc:machten:*:*)
-	echo powerpc-apple-machten${UNAME_RELEASE}
-	exit ;;
-    RISC*:Mach:*:*)
-	echo mips-dec-mach_bsd4.3
-	exit ;;
-    RISC*:ULTRIX:*:*)
-	echo mips-dec-ultrix${UNAME_RELEASE}
-	exit ;;
-    VAX*:ULTRIX*:*:*)
-	echo vax-dec-ultrix${UNAME_RELEASE}
-	exit ;;
-    2020:CLIX:*:* | 2430:CLIX:*:*)
-	echo clipper-intergraph-clix${UNAME_RELEASE}
-	exit ;;
-    mips:*:*:UMIPS | mips:*:*:RISCos)
-	eval $set_cc_for_build
-	sed 's/^	//' << EOF >$dummy.c
-#ifdef __cplusplus
-#include <stdio.h>  /* for printf() prototype */
-	int main (int argc, char *argv[]) {
-#else
-	int main (argc, argv) int argc; char *argv[]; {
-#endif
-	#if defined (host_mips) && defined (MIPSEB)
-	#if defined (SYSTYPE_SYSV)
-	  printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
-	#endif
-	#if defined (SYSTYPE_SVR4)
-	  printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);
-	#endif
-	#if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
-	  printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);
-	#endif
-	#endif
-	  exit (-1);
-	}
-EOF
-	$CC_FOR_BUILD -o $dummy $dummy.c &&
-	  dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` &&
-	  SYSTEM_NAME=`$dummy $dummyarg` &&
-	    { echo "$SYSTEM_NAME"; exit; }
-	echo mips-mips-riscos${UNAME_RELEASE}
-	exit ;;
-    Motorola:PowerMAX_OS:*:*)
-	echo powerpc-motorola-powermax
-	exit ;;
-    Motorola:*:4.3:PL8-*)
-	echo powerpc-harris-powermax
-	exit ;;
-    Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
-	echo powerpc-harris-powermax
-	exit ;;
-    Night_Hawk:Power_UNIX:*:*)
-	echo powerpc-harris-powerunix
-	exit ;;
-    m88k:CX/UX:7*:*)
-	echo m88k-harris-cxux7
-	exit ;;
-    m88k:*:4*:R4*)
-	echo m88k-motorola-sysv4
-	exit ;;
-    m88k:*:3*:R3*)
-	echo m88k-motorola-sysv3
-	exit ;;
-    AViiON:dgux:*:*)
-        # DG/UX returns AViiON for all architectures
-        UNAME_PROCESSOR=`/usr/bin/uname -p`
-	if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
-	then
-	    if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
-	       [ ${TARGET_BINARY_INTERFACE}x = x ]
-	    then
-		echo m88k-dg-dgux${UNAME_RELEASE}
-	    else
-		echo m88k-dg-dguxbcs${UNAME_RELEASE}
-	    fi
-	else
-	    echo i586-dg-dgux${UNAME_RELEASE}
-	fi
- 	exit ;;
-    M88*:DolphinOS:*:*)	# DolphinOS (SVR3)
-	echo m88k-dolphin-sysv3
-	exit ;;
-    M88*:*:R3*:*)
-	# Delta 88k system running SVR3
-	echo m88k-motorola-sysv3
-	exit ;;
-    XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
-	echo m88k-tektronix-sysv3
-	exit ;;
-    Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
-	echo m68k-tektronix-bsd
-	exit ;;
-    *:IRIX*:*:*)
-	echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
-	exit ;;
-    ????????:AIX?:[12].1:2)   # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
-	echo romp-ibm-aix     # uname -m gives an 8 hex-code CPU id
-	exit ;;               # Note that: echo "'`uname -s`'" gives 'AIX '
-    i*86:AIX:*:*)
-	echo i386-ibm-aix
-	exit ;;
-    ia64:AIX:*:*)
-	if [ -x /usr/bin/oslevel ] ; then
-		IBM_REV=`/usr/bin/oslevel`
-	else
-		IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
-	fi
-	echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
-	exit ;;
-    *:AIX:2:3)
-	if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
-		eval $set_cc_for_build
-		sed 's/^		//' << EOF >$dummy.c
-		#include <sys/systemcfg.h>
-
-		main()
-			{
-			if (!__power_pc())
-				exit(1);
-			puts("powerpc-ibm-aix3.2.5");
-			exit(0);
-			}
-EOF
-		if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy`
-		then
-			echo "$SYSTEM_NAME"
-		else
-			echo rs6000-ibm-aix3.2.5
-		fi
-	elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
-		echo rs6000-ibm-aix3.2.4
-	else
-		echo rs6000-ibm-aix3.2
-	fi
-	exit ;;
-    *:AIX:*:[456])
-	IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
-	if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
-		IBM_ARCH=rs6000
-	else
-		IBM_ARCH=powerpc
-	fi
-	if [ -x /usr/bin/oslevel ] ; then
-		IBM_REV=`/usr/bin/oslevel`
-	else
-		IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
-	fi
-	echo ${IBM_ARCH}-ibm-aix${IBM_REV}
-	exit ;;
-    *:AIX:*:*)
-	echo rs6000-ibm-aix
-	exit ;;
-    ibmrt:4.4BSD:*|romp-ibm:BSD:*)
-	echo romp-ibm-bsd4.4
-	exit ;;
-    ibmrt:*BSD:*|romp-ibm:BSD:*)            # covers RT/PC BSD and
-	echo romp-ibm-bsd${UNAME_RELEASE}   # 4.3 with uname added to
-	exit ;;                             # report: romp-ibm BSD 4.3
-    *:BOSX:*:*)
-	echo rs6000-bull-bosx
-	exit ;;
-    DPX/2?00:B.O.S.:*:*)
-	echo m68k-bull-sysv3
-	exit ;;
-    9000/[34]??:4.3bsd:1.*:*)
-	echo m68k-hp-bsd
-	exit ;;
-    hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
-	echo m68k-hp-bsd4.4
-	exit ;;
-    9000/[34678]??:HP-UX:*:*)
-	HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
-	case "${UNAME_MACHINE}" in
-	    9000/31? )            HP_ARCH=m68000 ;;
-	    9000/[34]?? )         HP_ARCH=m68k ;;
-	    9000/[678][0-9][0-9])
-		if [ -x /usr/bin/getconf ]; then
-		    sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
-                    sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
-                    case "${sc_cpu_version}" in
-                      523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
-                      528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
-                      532)                      # CPU_PA_RISC2_0
-                        case "${sc_kernel_bits}" in
-                          32) HP_ARCH="hppa2.0n" ;;
-                          64) HP_ARCH="hppa2.0w" ;;
-			  '') HP_ARCH="hppa2.0" ;;   # HP-UX 10.20
-                        esac ;;
-                    esac
-		fi
-		if [ "${HP_ARCH}" = "" ]; then
-		    eval $set_cc_for_build
-		    sed 's/^              //' << EOF >$dummy.c
-
-              #define _HPUX_SOURCE
-              #include <stdlib.h>
-              #include <unistd.h>
-
-              int main ()
-              {
-              #if defined(_SC_KERNEL_BITS)
-                  long bits = sysconf(_SC_KERNEL_BITS);
-              #endif
-                  long cpu  = sysconf (_SC_CPU_VERSION);
-
-                  switch (cpu)
-              	{
-              	case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
-              	case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
-              	case CPU_PA_RISC2_0:
-              #if defined(_SC_KERNEL_BITS)
-              	    switch (bits)
-              		{
-              		case 64: puts ("hppa2.0w"); break;
-              		case 32: puts ("hppa2.0n"); break;
-              		default: puts ("hppa2.0"); break;
-              		} break;
-              #else  /* !defined(_SC_KERNEL_BITS) */
-              	    puts ("hppa2.0"); break;
-              #endif
-              	default: puts ("hppa1.0"); break;
-              	}
-                  exit (0);
-              }
-EOF
-		    (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
-		    test -z "$HP_ARCH" && HP_ARCH=hppa
-		fi ;;
-	esac
-	if [ ${HP_ARCH} = "hppa2.0w" ]
-	then
-	    eval $set_cc_for_build
-
-	    # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
-	    # 32-bit code.  hppa64-hp-hpux* has the same kernel and a compiler
-	    # generating 64-bit code.  GNU and HP use different nomenclature:
-	    #
-	    # $ CC_FOR_BUILD=cc ./config.guess
-	    # => hppa2.0w-hp-hpux11.23
-	    # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
-	    # => hppa64-hp-hpux11.23
-
-	    if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
-		grep -q __LP64__
-	    then
-		HP_ARCH="hppa2.0w"
-	    else
-		HP_ARCH="hppa64"
-	    fi
-	fi
-	echo ${HP_ARCH}-hp-hpux${HPUX_REV}
-	exit ;;
-    ia64:HP-UX:*:*)
-	HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
-	echo ia64-hp-hpux${HPUX_REV}
-	exit ;;
-    3050*:HI-UX:*:*)
-	eval $set_cc_for_build
-	sed 's/^	//' << EOF >$dummy.c
-	#include <unistd.h>
-	int
-	main ()
-	{
-	  long cpu = sysconf (_SC_CPU_VERSION);
-	  /* The order matters, because CPU_IS_HP_MC68K erroneously returns
-	     true for CPU_PA_RISC1_0.  CPU_IS_PA_RISC returns correct
-	     results, however.  */
-	  if (CPU_IS_PA_RISC (cpu))
-	    {
-	      switch (cpu)
-		{
-		  case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
-		  case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
-		  case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
-		  default: puts ("hppa-hitachi-hiuxwe2"); break;
-		}
-	    }
-	  else if (CPU_IS_HP_MC68K (cpu))
-	    puts ("m68k-hitachi-hiuxwe2");
-	  else puts ("unknown-hitachi-hiuxwe2");
-	  exit (0);
-	}
-EOF
-	$CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` &&
-		{ echo "$SYSTEM_NAME"; exit; }
-	echo unknown-hitachi-hiuxwe2
-	exit ;;
-    9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
-	echo hppa1.1-hp-bsd
-	exit ;;
-    9000/8??:4.3bsd:*:*)
-	echo hppa1.0-hp-bsd
-	exit ;;
-    *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
-	echo hppa1.0-hp-mpeix
-	exit ;;
-    hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
-	echo hppa1.1-hp-osf
-	exit ;;
-    hp8??:OSF1:*:*)
-	echo hppa1.0-hp-osf
-	exit ;;
-    i*86:OSF1:*:*)
-	if [ -x /usr/sbin/sysversion ] ; then
-	    echo ${UNAME_MACHINE}-unknown-osf1mk
-	else
-	    echo ${UNAME_MACHINE}-unknown-osf1
-	fi
-	exit ;;
-    parisc*:Lites*:*:*)
-	echo hppa1.1-hp-lites
-	exit ;;
-    C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
-	echo c1-convex-bsd
-        exit ;;
-    C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
-	if getsysinfo -f scalar_acc
-	then echo c32-convex-bsd
-	else echo c2-convex-bsd
-	fi
-        exit ;;
-    C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
-	echo c34-convex-bsd
-        exit ;;
-    C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
-	echo c38-convex-bsd
-        exit ;;
-    C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
-	echo c4-convex-bsd
-        exit ;;
-    CRAY*Y-MP:*:*:*)
-	echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
-	exit ;;
-    CRAY*[A-Z]90:*:*:*)
-	echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
-	| sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
-	      -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
-	      -e 's/\.[^.]*$/.X/'
-	exit ;;
-    CRAY*TS:*:*:*)
-	echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
-	exit ;;
-    CRAY*T3E:*:*:*)
-	echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
-	exit ;;
-    CRAY*SV1:*:*:*)
-	echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
-	exit ;;
-    *:UNICOS/mp:*:*)
-	echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
-	exit ;;
-    F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
-	FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
-        FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
-        FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
-        echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
-        exit ;;
-    5000:UNIX_System_V:4.*:*)
-        FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
-        FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
-        echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
-	exit ;;
-    i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
-	echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
-	exit ;;
-    sparc*:BSD/OS:*:*)
-	echo sparc-unknown-bsdi${UNAME_RELEASE}
-	exit ;;
-    *:BSD/OS:*:*)
-	echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
-	exit ;;
-    *:FreeBSD:*:*)
-	case ${UNAME_MACHINE} in
-	    pc98)
-		echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
-	    amd64)
-		echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
-	    *)
-		echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
-	esac
-	exit ;;
-    i*:CYGWIN*:*)
-	echo ${UNAME_MACHINE}-pc-cygwin
-	exit ;;
-    *:MINGW*:*)
-	echo ${UNAME_MACHINE}-pc-mingw32
-	exit ;;
-    i*:windows32*:*)
-    	# uname -m includes "-pc" on this system.
-    	echo ${UNAME_MACHINE}-mingw32
-	exit ;;
-    i*:PW*:*)
-	echo ${UNAME_MACHINE}-pc-pw32
-	exit ;;
-    *:Interix*:*)
-    	case ${UNAME_MACHINE} in
-	    x86)
-		echo i586-pc-interix${UNAME_RELEASE}
-		exit ;;
-	    authenticamd | genuineintel | EM64T)
-		echo x86_64-unknown-interix${UNAME_RELEASE}
-		exit ;;
-	    IA64)
-		echo ia64-unknown-interix${UNAME_RELEASE}
-		exit ;;
-	esac ;;
-    [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
-	echo i${UNAME_MACHINE}-pc-mks
-	exit ;;
-    8664:Windows_NT:*)
-	echo x86_64-pc-mks
-	exit ;;
-    i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
-	# How do we know it's Interix rather than the generic POSIX subsystem?
-	# It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
-	# UNAME_MACHINE based on the output of uname instead of i386?
-	echo i586-pc-interix
-	exit ;;
-    i*:UWIN*:*)
-	echo ${UNAME_MACHINE}-pc-uwin
-	exit ;;
-    amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
-	echo x86_64-unknown-cygwin
-	exit ;;
-    p*:CYGWIN*:*)
-	echo powerpcle-unknown-cygwin
-	exit ;;
-    prep*:SunOS:5.*:*)
-	echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-	exit ;;
-    *:GNU:*:*)
-	# the GNU system
-	echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
-	exit ;;
-    *:GNU/*:*:*)
-	# other systems with GNU libc and userland
-	echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
-	exit ;;
-    i*86:Minix:*:*)
-	echo ${UNAME_MACHINE}-pc-minix
-	exit ;;
-    alpha:Linux:*:*)
-	case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
-	  EV5)   UNAME_MACHINE=alphaev5 ;;
-	  EV56)  UNAME_MACHINE=alphaev56 ;;
-	  PCA56) UNAME_MACHINE=alphapca56 ;;
-	  PCA57) UNAME_MACHINE=alphapca56 ;;
-	  EV6)   UNAME_MACHINE=alphaev6 ;;
-	  EV67)  UNAME_MACHINE=alphaev67 ;;
-	  EV68*) UNAME_MACHINE=alphaev68 ;;
-        esac
-	objdump --private-headers /bin/sh | grep -q ld.so.1
-	if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
-	echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
-	exit ;;
-    arm*:Linux:*:*)
-	eval $set_cc_for_build
-	if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
-	    | grep -q __ARM_EABI__
-	then
-	    echo ${UNAME_MACHINE}-unknown-linux-gnu
-	else
-	    echo ${UNAME_MACHINE}-unknown-linux-gnueabi
-	fi
-	exit ;;
-    avr32*:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-gnu
-	exit ;;
-    cris:Linux:*:*)
-	echo cris-axis-linux-gnu
-	exit ;;
-    crisv32:Linux:*:*)
-	echo crisv32-axis-linux-gnu
-	exit ;;
-    frv:Linux:*:*)
-    	echo frv-unknown-linux-gnu
-	exit ;;
-    i*86:Linux:*:*)
-	LIBC=gnu
-	eval $set_cc_for_build
-	sed 's/^	//' << EOF >$dummy.c
-	#ifdef __dietlibc__
-	LIBC=dietlibc
-	#endif
-EOF
-	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
-	echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
-	exit ;;
-    ia64:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-gnu
-	exit ;;
-    m32r*:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-gnu
-	exit ;;
-    m68*:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-gnu
-	exit ;;
-    mips:Linux:*:* | mips64:Linux:*:*)
-	eval $set_cc_for_build
-	sed 's/^	//' << EOF >$dummy.c
-	#undef CPU
-	#undef ${UNAME_MACHINE}
-	#undef ${UNAME_MACHINE}el
-	#if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
-	CPU=${UNAME_MACHINE}el
-	#else
-	#if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
-	CPU=${UNAME_MACHINE}
-	#else
-	CPU=
-	#endif
-	#endif
-EOF
-	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
-	test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
-	;;
-    or32:Linux:*:*)
-	echo or32-unknown-linux-gnu
-	exit ;;
-    padre:Linux:*:*)
-	echo sparc-unknown-linux-gnu
-	exit ;;
-    parisc64:Linux:*:* | hppa64:Linux:*:*)
-	echo hppa64-unknown-linux-gnu
-	exit ;;
-    parisc:Linux:*:* | hppa:Linux:*:*)
-	# Look for CPU level
-	case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
-	  PA7*) echo hppa1.1-unknown-linux-gnu ;;
-	  PA8*) echo hppa2.0-unknown-linux-gnu ;;
-	  *)    echo hppa-unknown-linux-gnu ;;
-	esac
-	exit ;;
-    ppc64:Linux:*:*)
-	echo powerpc64-unknown-linux-gnu
-	exit ;;
-    ppc:Linux:*:*)
-	echo powerpc-unknown-linux-gnu
-	exit ;;
-    s390:Linux:*:* | s390x:Linux:*:*)
-	echo ${UNAME_MACHINE}-ibm-linux
-	exit ;;
-    sh64*:Linux:*:*)
-    	echo ${UNAME_MACHINE}-unknown-linux-gnu
-	exit ;;
-    sh*:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-gnu
-	exit ;;
-    sparc:Linux:*:* | sparc64:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-gnu
-	exit ;;
-    vax:Linux:*:*)
-	echo ${UNAME_MACHINE}-dec-linux-gnu
-	exit ;;
-    x86_64:Linux:*:*)
-	echo x86_64-unknown-linux-gnu
-	exit ;;
-    xtensa*:Linux:*:*)
-    	echo ${UNAME_MACHINE}-unknown-linux-gnu
-	exit ;;
-    i*86:DYNIX/ptx:4*:*)
-	# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
-	# earlier versions are messed up and put the nodename in both
-	# sysname and nodename.
-	echo i386-sequent-sysv4
-	exit ;;
-    i*86:UNIX_SV:4.2MP:2.*)
-        # Unixware is an offshoot of SVR4, but it has its own version
-        # number series starting with 2...
-        # I am not positive that other SVR4 systems won't match this,
-	# I just have to hope.  -- rms.
-        # Use sysv4.2uw... so that sysv4* matches it.
-	echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
-	exit ;;
-    i*86:OS/2:*:*)
-	# If we were able to find `uname', then EMX Unix compatibility
-	# is probably installed.
-	echo ${UNAME_MACHINE}-pc-os2-emx
-	exit ;;
-    i*86:XTS-300:*:STOP)
-	echo ${UNAME_MACHINE}-unknown-stop
-	exit ;;
-    i*86:atheos:*:*)
-	echo ${UNAME_MACHINE}-unknown-atheos
-	exit ;;
-    i*86:syllable:*:*)
-	echo ${UNAME_MACHINE}-pc-syllable
-	exit ;;
-    i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*)
-	echo i386-unknown-lynxos${UNAME_RELEASE}
-	exit ;;
-    i*86:*DOS:*:*)
-	echo ${UNAME_MACHINE}-pc-msdosdjgpp
-	exit ;;
-    i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
-	UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
-	if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
-		echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
-	else
-		echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
-	fi
-	exit ;;
-    i*86:*:5:[678]*)
-    	# UnixWare 7.x, OpenUNIX and OpenServer 6.
-	case `/bin/uname -X | grep "^Machine"` in
-	    *486*)	     UNAME_MACHINE=i486 ;;
-	    *Pentium)	     UNAME_MACHINE=i586 ;;
-	    *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
-	esac
-	echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
-	exit ;;
-    i*86:*:3.2:*)
-	if test -f /usr/options/cb.name; then
-		UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
-		echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
-	elif /bin/uname -X 2>/dev/null >/dev/null ; then
-		UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
-		(/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
-		(/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
-			&& UNAME_MACHINE=i586
-		(/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \
-			&& UNAME_MACHINE=i686
-		(/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
-			&& UNAME_MACHINE=i686
-		echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
-	else
-		echo ${UNAME_MACHINE}-pc-sysv32
-	fi
-	exit ;;
-    pc:*:*:*)
-	# Left here for compatibility:
-        # uname -m prints for DJGPP always 'pc', but it prints nothing about
-        # the processor, so we play safe by assuming i586.
-	# Note: whatever this is, it MUST be the same as what config.sub
-	# prints for the "djgpp" host, or else GDB configury will decide that
-	# this is a cross-build.
-	echo i586-pc-msdosdjgpp
-        exit ;;
-    Intel:Mach:3*:*)
-	echo i386-pc-mach3
-	exit ;;
-    paragon:*:*:*)
-	echo i860-intel-osf1
-	exit ;;
-    i860:*:4.*:*) # i860-SVR4
-	if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
-	  echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
-	else # Add other i860-SVR4 vendors below as they are discovered.
-	  echo i860-unknown-sysv${UNAME_RELEASE}  # Unknown i860-SVR4
-	fi
-	exit ;;
-    mini*:CTIX:SYS*5:*)
-	# "miniframe"
-	echo m68010-convergent-sysv
-	exit ;;
-    mc68k:UNIX:SYSTEM5:3.51m)
-	echo m68k-convergent-sysv
-	exit ;;
-    M680?0:D-NIX:5.3:*)
-	echo m68k-diab-dnix
-	exit ;;
-    M68*:*:R3V[5678]*:*)
-	test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;
-    3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
-	OS_REL=''
-	test -r /etc/.relid \
-	&& OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
-	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
-	  && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
-	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
-	  && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
-    3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
-        /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
-          && { echo i486-ncr-sysv4; exit; } ;;
-    NCR*:*:4.2:* | MPRAS*:*:4.2:*)
-	OS_REL='.3'
-	test -r /etc/.relid \
-	    && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
-	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
-	    && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
-	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
-	    && { echo i586-ncr-sysv4.3${OS_REL}; exit; }
-	/bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \
-	    && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
-    m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
-	echo m68k-unknown-lynxos${UNAME_RELEASE}
-	exit ;;
-    mc68030:UNIX_System_V:4.*:*)
-	echo m68k-atari-sysv4
-	exit ;;
-    TSUNAMI:LynxOS:2.*:*)
-	echo sparc-unknown-lynxos${UNAME_RELEASE}
-	exit ;;
-    rs6000:LynxOS:2.*:*)
-	echo rs6000-unknown-lynxos${UNAME_RELEASE}
-	exit ;;
-    PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*)
-	echo powerpc-unknown-lynxos${UNAME_RELEASE}
-	exit ;;
-    SM[BE]S:UNIX_SV:*:*)
-	echo mips-dde-sysv${UNAME_RELEASE}
-	exit ;;
-    RM*:ReliantUNIX-*:*:*)
-	echo mips-sni-sysv4
-	exit ;;
-    RM*:SINIX-*:*:*)
-	echo mips-sni-sysv4
-	exit ;;
-    *:SINIX-*:*:*)
-	if uname -p 2>/dev/null >/dev/null ; then
-		UNAME_MACHINE=`(uname -p) 2>/dev/null`
-		echo ${UNAME_MACHINE}-sni-sysv4
-	else
-		echo ns32k-sni-sysv
-	fi
-	exit ;;
-    PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
-                      # says <Richard.M.Bartel at ccMail.Census.GOV>
-        echo i586-unisys-sysv4
-        exit ;;
-    *:UNIX_System_V:4*:FTX*)
-	# From Gerald Hewes <hewes at openmarket.com>.
-	# How about differentiating between stratus architectures? -djm
-	echo hppa1.1-stratus-sysv4
-	exit ;;
-    *:*:*:FTX*)
-	# From seanf at swdc.stratus.com.
-	echo i860-stratus-sysv4
-	exit ;;
-    i*86:VOS:*:*)
-	# From Paul.Green at stratus.com.
-	echo ${UNAME_MACHINE}-stratus-vos
-	exit ;;
-    *:VOS:*:*)
-	# From Paul.Green at stratus.com.
-	echo hppa1.1-stratus-vos
-	exit ;;
-    mc68*:A/UX:*:*)
-	echo m68k-apple-aux${UNAME_RELEASE}
-	exit ;;
-    news*:NEWS-OS:6*:*)
-	echo mips-sony-newsos6
-	exit ;;
-    R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
-	if [ -d /usr/nec ]; then
-	        echo mips-nec-sysv${UNAME_RELEASE}
-	else
-	        echo mips-unknown-sysv${UNAME_RELEASE}
-	fi
-        exit ;;
-    BeBox:BeOS:*:*)	# BeOS running on hardware made by Be, PPC only.
-	echo powerpc-be-beos
-	exit ;;
-    BeMac:BeOS:*:*)	# BeOS running on Mac or Mac clone, PPC only.
-	echo powerpc-apple-beos
-	exit ;;
-    BePC:BeOS:*:*)	# BeOS running on Intel PC compatible.
-	echo i586-pc-beos
-	exit ;;
-    BePC:Haiku:*:*)	# Haiku running on Intel PC compatible.
-	echo i586-pc-haiku
-	exit ;;
-    SX-4:SUPER-UX:*:*)
-	echo sx4-nec-superux${UNAME_RELEASE}
-	exit ;;
-    SX-5:SUPER-UX:*:*)
-	echo sx5-nec-superux${UNAME_RELEASE}
-	exit ;;
-    SX-6:SUPER-UX:*:*)
-	echo sx6-nec-superux${UNAME_RELEASE}
-	exit ;;
-    SX-7:SUPER-UX:*:*)
-	echo sx7-nec-superux${UNAME_RELEASE}
-	exit ;;
-    SX-8:SUPER-UX:*:*)
-	echo sx8-nec-superux${UNAME_RELEASE}
-	exit ;;
-    SX-8R:SUPER-UX:*:*)
-	echo sx8r-nec-superux${UNAME_RELEASE}
-	exit ;;
-    Power*:Rhapsody:*:*)
-	echo powerpc-apple-rhapsody${UNAME_RELEASE}
-	exit ;;
-    *:Rhapsody:*:*)
-	echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
-	exit ;;
-    *:Darwin:*:*)
-	UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
-	case $UNAME_PROCESSOR in
-	    i386)
-		eval $set_cc_for_build
-		if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
-		  if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
-		      (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
-		      grep IS_64BIT_ARCH >/dev/null
-		  then
-		      UNAME_PROCESSOR="x86_64"
-		  fi
-		fi ;;
-	    unknown) UNAME_PROCESSOR=powerpc ;;
-	esac
-	echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
-	exit ;;
-    *:procnto*:*:* | *:QNX:[0123456789]*:*)
-	UNAME_PROCESSOR=`uname -p`
-	if test "$UNAME_PROCESSOR" = "x86"; then
-		UNAME_PROCESSOR=i386
-		UNAME_MACHINE=pc
-	fi
-	echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
-	exit ;;
-    *:QNX:*:4*)
-	echo i386-pc-qnx
-	exit ;;
-    NSE-?:NONSTOP_KERNEL:*:*)
-	echo nse-tandem-nsk${UNAME_RELEASE}
-	exit ;;
-    NSR-?:NONSTOP_KERNEL:*:*)
-	echo nsr-tandem-nsk${UNAME_RELEASE}
-	exit ;;
-    *:NonStop-UX:*:*)
-	echo mips-compaq-nonstopux
-	exit ;;
-    BS2000:POSIX*:*:*)
-	echo bs2000-siemens-sysv
-	exit ;;
-    DS/*:UNIX_System_V:*:*)
-	echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
-	exit ;;
-    *:Plan9:*:*)
-	# "uname -m" is not consistent, so use $cputype instead. 386
-	# is converted to i386 for consistency with other x86
-	# operating systems.
-	if test "$cputype" = "386"; then
-	    UNAME_MACHINE=i386
-	else
-	    UNAME_MACHINE="$cputype"
-	fi
-	echo ${UNAME_MACHINE}-unknown-plan9
-	exit ;;
-    *:TOPS-10:*:*)
-	echo pdp10-unknown-tops10
-	exit ;;
-    *:TENEX:*:*)
-	echo pdp10-unknown-tenex
-	exit ;;
-    KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
-	echo pdp10-dec-tops20
-	exit ;;
-    XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
-	echo pdp10-xkl-tops20
-	exit ;;
-    *:TOPS-20:*:*)
-	echo pdp10-unknown-tops20
-	exit ;;
-    *:ITS:*:*)
-	echo pdp10-unknown-its
-	exit ;;
-    SEI:*:*:SEIUX)
-        echo mips-sei-seiux${UNAME_RELEASE}
-	exit ;;
-    *:DragonFly:*:*)
-	echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
-	exit ;;
-    *:*VMS:*:*)
-    	UNAME_MACHINE=`(uname -p) 2>/dev/null`
-	case "${UNAME_MACHINE}" in
-	    A*) echo alpha-dec-vms ; exit ;;
-	    I*) echo ia64-dec-vms ; exit ;;
-	    V*) echo vax-dec-vms ; exit ;;
-	esac ;;
-    *:XENIX:*:SysV)
-	echo i386-pc-xenix
-	exit ;;
-    i*86:skyos:*:*)
-	echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//'
-	exit ;;
-    i*86:rdos:*:*)
-	echo ${UNAME_MACHINE}-pc-rdos
-	exit ;;
-    i*86:AROS:*:*)
-	echo ${UNAME_MACHINE}-pc-aros
-	exit ;;
-esac
-
-#echo '(No uname command or uname output not recognized.)' 1>&2
-#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
-
-eval $set_cc_for_build
-cat >$dummy.c <<EOF
-#ifdef _SEQUENT_
-# include <sys/types.h>
-# include <sys/utsname.h>
-#endif
-main ()
-{
-#if defined (sony)
-#if defined (MIPSEB)
-  /* BFD wants "bsd" instead of "newsos".  Perhaps BFD should be changed,
-     I don't know....  */
-  printf ("mips-sony-bsd\n"); exit (0);
-#else
-#include <sys/param.h>
-  printf ("m68k-sony-newsos%s\n",
-#ifdef NEWSOS4
-          "4"
-#else
-	  ""
-#endif
-         ); exit (0);
-#endif
-#endif
-
-#if defined (__arm) && defined (__acorn) && defined (__unix)
-  printf ("arm-acorn-riscix\n"); exit (0);
-#endif
-
-#if defined (hp300) && !defined (hpux)
-  printf ("m68k-hp-bsd\n"); exit (0);
-#endif
-
-#if defined (NeXT)
-#if !defined (__ARCHITECTURE__)
-#define __ARCHITECTURE__ "m68k"
-#endif
-  int version;
-  version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
-  if (version < 4)
-    printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
-  else
-    printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
-  exit (0);
-#endif
-
-#if defined (MULTIMAX) || defined (n16)
-#if defined (UMAXV)
-  printf ("ns32k-encore-sysv\n"); exit (0);
-#else
-#if defined (CMU)
-  printf ("ns32k-encore-mach\n"); exit (0);
-#else
-  printf ("ns32k-encore-bsd\n"); exit (0);
-#endif
-#endif
-#endif
-
-#if defined (__386BSD__)
-  printf ("i386-pc-bsd\n"); exit (0);
-#endif
-
-#if defined (sequent)
-#if defined (i386)
-  printf ("i386-sequent-dynix\n"); exit (0);
-#endif
-#if defined (ns32000)
-  printf ("ns32k-sequent-dynix\n"); exit (0);
-#endif
-#endif
-
-#if defined (_SEQUENT_)
-    struct utsname un;
-
-    uname(&un);
-
-    if (strncmp(un.version, "V2", 2) == 0) {
-	printf ("i386-sequent-ptx2\n"); exit (0);
-    }
-    if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
-	printf ("i386-sequent-ptx1\n"); exit (0);
-    }
-    printf ("i386-sequent-ptx\n"); exit (0);
-
-#endif
-
-#if defined (vax)
-# if !defined (ultrix)
-#  include <sys/param.h>
-#  if defined (BSD)
-#   if BSD == 43
-      printf ("vax-dec-bsd4.3\n"); exit (0);
-#   else
-#    if BSD == 199006
-      printf ("vax-dec-bsd4.3reno\n"); exit (0);
-#    else
-      printf ("vax-dec-bsd\n"); exit (0);
-#    endif
-#   endif
-#  else
-    printf ("vax-dec-bsd\n"); exit (0);
-#  endif
-# else
-    printf ("vax-dec-ultrix\n"); exit (0);
-# endif
-#endif
-
-#if defined (alliant) && defined (i860)
-  printf ("i860-alliant-bsd\n"); exit (0);
-#endif
-
-  exit (1);
-}
-EOF
-
-$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` &&
-	{ echo "$SYSTEM_NAME"; exit; }
-
-# Apollos put the system type in the environment.
-
-test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; }
-
-# Convex versions that predate uname can use getsysinfo(1)
-
-if [ -x /usr/convex/getsysinfo ]
-then
-    case `getsysinfo -f cpu_type` in
-    c1*)
-	echo c1-convex-bsd
-	exit ;;
-    c2*)
-	if getsysinfo -f scalar_acc
-	then echo c32-convex-bsd
-	else echo c2-convex-bsd
-	fi
-	exit ;;
-    c34*)
-	echo c34-convex-bsd
-	exit ;;
-    c38*)
-	echo c38-convex-bsd
-	exit ;;
-    c4*)
-	echo c4-convex-bsd
-	exit ;;
-    esac
-fi
-
-cat >&2 <<EOF
-$0: unable to guess system type
-
-This script, last modified $timestamp, has failed to recognize
-the operating system you are using. It is advised that you
-download the most up to date version of the config scripts from
-
-  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
-and
-  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
-
-If the version you run ($0) is already up to date, please
-send the following data and any information you think might be
-pertinent to <config-patches at gnu.org> in order to provide the needed
-information to handle your system.
-
-config.guess timestamp = $timestamp
-
-uname -m = `(uname -m) 2>/dev/null || echo unknown`
-uname -r = `(uname -r) 2>/dev/null || echo unknown`
-uname -s = `(uname -s) 2>/dev/null || echo unknown`
-uname -v = `(uname -v) 2>/dev/null || echo unknown`
-
-/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
-/bin/uname -X     = `(/bin/uname -X) 2>/dev/null`
-
-hostinfo               = `(hostinfo) 2>/dev/null`
-/bin/universe          = `(/bin/universe) 2>/dev/null`
-/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null`
-/bin/arch              = `(/bin/arch) 2>/dev/null`
-/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null`
-/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
-
-UNAME_MACHINE = ${UNAME_MACHINE}
-UNAME_RELEASE = ${UNAME_RELEASE}
-UNAME_SYSTEM  = ${UNAME_SYSTEM}
-UNAME_VERSION = ${UNAME_VERSION}
-EOF
-
-exit 1
-
-# Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "timestamp='"
-# time-stamp-format: "%:y-%02m-%02d"
-# time-stamp-end: "'"
-# End:
diff --git a/config.h.in b/config.h.in
deleted file mode 100644
index 2dfb817..0000000
--- a/config.h.in
+++ /dev/null
@@ -1,239 +0,0 @@
-/* config.h.in.  Generated from configure.ac by autoheader.  */
-
-/* Define if building universal (internal helper macro) */
-#undef AC_APPLE_UNIVERSAL_BUILD
-
-/* Debug file */
-#undef DEBUG_FILE
-
-/* Default PC/SC provider */
-#undef DEFAULT_PCSC_PROVIDER
-
-/* Default SM module */
-#undef DEFAULT_SM_MODULE
-
-/* Enable CT-API support */
-#undef ENABLE_CTAPI
-
-/* Enable minidriver support */
-#undef ENABLE_MINIDRIVER
-
-/* Have OpenCT libraries and header files */
-#undef ENABLE_OPENCT
-
-/* Have OpenSSL libraries and header files */
-#undef ENABLE_OPENSSL
-
-/* Define if PC/SC is to be enabled */
-#undef ENABLE_PCSC
-
-/* Use readline libraries and header files */
-#undef ENABLE_READLINE
-
-/* Enable secure messaging support */
-#undef ENABLE_SM
-
-/* Use zlib libraries and header files */
-#undef ENABLE_ZLIB
-
-/* Define to 1 if you have the <dlfcn.h> header file. */
-#undef HAVE_DLFCN_H
-
-/* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */
-#undef HAVE_DOPRNT
-
-/* Define to 1 if you have the <errno.h> header file. */
-#undef HAVE_ERRNO_H
-
-/* Define to 1 if you have the <fcntl.h> header file. */
-#undef HAVE_FCNTL_H
-
-/* Define to 1 if you have the <getopt.h> header file. */
-#undef HAVE_GETOPT_H
-
-/* Define to 1 if you have the `getopt_long' function. */
-#undef HAVE_GETOPT_LONG
-
-/* Define to 1 if you have the `getopt_long_only' function. */
-#undef HAVE_GETOPT_LONG_ONLY
-
-/* Define to 1 if you have the `getpass' function. */
-#undef HAVE_GETPASS
-
-/* Define to 1 if you have the `gettimeofday' function. */
-#undef HAVE_GETTIMEOFDAY
-
-/* Define to 1 if you have the <inttypes.h> header file. */
-#undef HAVE_INTTYPES_H
-
-/* Define to 1 if you have the `dl' library (-ldl). */
-#undef HAVE_LIBDL
-
-/* Define to 1 if you have the <malloc.h> header file. */
-#undef HAVE_MALLOC_H
-
-/* Define to 1 if you have the <memory.h> header file. */
-#undef HAVE_MEMORY_H
-
-/* Define to 1 if you have the `memset' function. */
-#undef HAVE_MEMSET
-
-/* Define to 1 if you have the `mkdir' function. */
-#undef HAVE_MKDIR
-
-/* Define if you have POSIX threads libraries and header files. */
-#undef HAVE_PTHREAD
-
-/* Have PTHREAD_PRIO_INHERIT. */
-#undef HAVE_PTHREAD_PRIO_INHERIT
-
-/* Define to 1 if you have the <readline/readline.h> header file. */
-#undef HAVE_READLINE_READLINE_H
-
-/* Define to 1 if `stat' has the bug that it succeeds when given the
-   zero-length file name argument. */
-#undef HAVE_STAT_EMPTY_STRING_BUG
-
-/* Define to 1 if you have the <stdint.h> header file. */
-#undef HAVE_STDINT_H
-
-/* Define to 1 if you have the <stdlib.h> header file. */
-#undef HAVE_STDLIB_H
-
-/* Define to 1 if you have the `strdup' function. */
-#undef HAVE_STRDUP
-
-/* Define to 1 if you have the `strerror' function. */
-#undef HAVE_STRERROR
-
-/* Define to 1 if you have the <strings.h> header file. */
-#undef HAVE_STRINGS_H
-
-/* Define to 1 if you have the <string.h> header file. */
-#undef HAVE_STRING_H
-
-/* Define to 1 if you have the `strlcat' function. */
-#undef HAVE_STRLCAT
-
-/* Define to 1 if you have the `strlcpy' function. */
-#undef HAVE_STRLCPY
-
-/* Define to 1 if you have the <sys/mman.h> header file. */
-#undef HAVE_SYS_MMAN_H
-
-/* Define to 1 if you have the <sys/stat.h> header file. */
-#undef HAVE_SYS_STAT_H
-
-/* Define to 1 if you have the <sys/time.h> header file. */
-#undef HAVE_SYS_TIME_H
-
-/* Define to 1 if you have the <sys/types.h> header file. */
-#undef HAVE_SYS_TYPES_H
-
-/* Define to 1 if you have <sys/wait.h> that is POSIX.1 compatible. */
-#undef HAVE_SYS_WAIT_H
-
-/* Define to 1 if you have the <unistd.h> header file. */
-#undef HAVE_UNISTD_H
-
-/* Define to 1 if you have the `vprintf' function. */
-#undef HAVE_VPRINTF
-
-/* Define to 1 if you have the <winscard.h> header file. */
-#undef HAVE_WINSCARD_H
-
-/* Define to 1 if you have the <zlib.h> header file. */
-#undef HAVE_ZLIB_H
-
-/* Define to 1 if `lstat' dereferences a symlink specified with a trailing
-   slash. */
-#undef LSTAT_FOLLOWS_SLASHED_SYMLINK
-
-/* Define to the sub-directory in which libtool stores uninstalled libraries.
-   */
-#undef LT_OBJDIR
-
-/* Define to 1 if assertions should be disabled. */
-#undef NDEBUG
-
-/* Enabled OpenSC features */
-#undef OPENSC_FEATURES
-
-/* OpenSC version fix component */
-#undef OPENSC_VERSION_FIX
-
-/* OpenSC version major component */
-#undef OPENSC_VERSION_MAJOR
-
-/* OpenSC version minor component */
-#undef OPENSC_VERSION_MINOR
-
-/* Name of package */
-#undef PACKAGE
-
-/* Define to the address where bug reports for this package should be sent. */
-#undef PACKAGE_BUGREPORT
-
-/* Define to the full name of this package. */
-#undef PACKAGE_NAME
-
-/* Define to the full name and version of this package. */
-#undef PACKAGE_STRING
-
-/* Define to the one symbol short name of this package. */
-#undef PACKAGE_TARNAME
-
-/* Define to the home page for this package. */
-#undef PACKAGE_URL
-
-/* Define to the version of this package. */
-#undef PACKAGE_VERSION
-
-/* Define to necessary symbol if this constant uses a non-standard name on
-   your system. */
-#undef PTHREAD_CREATE_JOINABLE
-
-/* The size of `void *', as computed by sizeof. */
-#undef SIZEOF_VOID_P
-
-/* Define to 1 if you have the ANSI C header files. */
-#undef STDC_HEADERS
-
-/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
-#undef TIME_WITH_SYS_TIME
-
-/* Define if you are on Cygwin */
-#undef USE_CYGWIN
-
-/* Version number of package */
-#undef VERSION
-
-/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
-   significant byte first (like Motorola and SPARC, unlike Intel). */
-#if defined AC_APPLE_UNIVERSAL_BUILD
-# if defined __BIG_ENDIAN__
-#  define WORDS_BIGENDIAN 1
-# endif
-#else
-# ifndef WORDS_BIGENDIAN
-#  undef WORDS_BIGENDIAN
-# endif
-#endif
-
-/* Define to empty if `const' does not conform to ANSI C. */
-#undef const
-
-/* Define to `int' if <sys/types.h> doesn't define. */
-#undef gid_t
-
-/* Define to `__inline__' or `__inline' if that's what the C compiler
-   calls it, or to nothing if 'inline' is not supported under any name.  */
-#ifndef __cplusplus
-#undef inline
-#endif
-
-/* Define to `unsigned int' if <sys/types.h> does not define. */
-#undef size_t
-
-/* Define to `int' if <sys/types.h> doesn't define. */
-#undef uid_t
diff --git a/config.sub b/config.sub
deleted file mode 100755
index c2d1257..0000000
--- a/config.sub
+++ /dev/null
@@ -1,1714 +0,0 @@
-#! /bin/sh
-# Configuration validation subroutine script.
-#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-#   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-#   Free Software Foundation, Inc.
-
-timestamp='2010-01-22'
-
-# This file is (in principle) common to ALL GNU software.
-# The presence of a machine in this file suggests that SOME GNU software
-# can handle that machine.  It does not imply ALL GNU software can.
-#
-# This file is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
-# 02110-1301, USA.
-#
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-
-# Please send patches to <config-patches at gnu.org>.  Submit a context
-# diff and a properly formatted GNU ChangeLog entry.
-#
-# Configuration subroutine to validate and canonicalize a configuration type.
-# Supply the specified configuration type as an argument.
-# If it is invalid, we print an error message on stderr and exit with code 1.
-# Otherwise, we print the canonical config type on stdout and succeed.
-
-# You can get the latest version of this script from:
-# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
-
-# This file is supposed to be the same for all GNU packages
-# and recognize all the CPU types, system types and aliases
-# that are meaningful with *any* GNU software.
-# Each package is responsible for reporting which valid configurations
-# it does not support.  The user should be able to distinguish
-# a failure to support a valid configuration from a meaningless
-# configuration.
-
-# The goal of this file is to map all the various variations of a given
-# machine specification into a single specification in the form:
-#	CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
-# or in some cases, the newer four-part form:
-#	CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
-# It is wrong to echo any other type of specification.
-
-me=`echo "$0" | sed -e 's,.*/,,'`
-
-usage="\
-Usage: $0 [OPTION] CPU-MFR-OPSYS
-       $0 [OPTION] ALIAS
-
-Canonicalize a configuration name.
-
-Operation modes:
-  -h, --help         print this help, then exit
-  -t, --time-stamp   print date of last modification, then exit
-  -v, --version      print version number, then exit
-
-Report bugs and patches to <config-patches at gnu.org>."
-
-version="\
-GNU config.sub ($timestamp)
-
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free
-Software Foundation, Inc.
-
-This is free software; see the source for copying conditions.  There is NO
-warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
-
-help="
-Try \`$me --help' for more information."
-
-# Parse command line
-while test $# -gt 0 ; do
-  case $1 in
-    --time-stamp | --time* | -t )
-       echo "$timestamp" ; exit ;;
-    --version | -v )
-       echo "$version" ; exit ;;
-    --help | --h* | -h )
-       echo "$usage"; exit ;;
-    -- )     # Stop option processing
-       shift; break ;;
-    - )	# Use stdin as input.
-       break ;;
-    -* )
-       echo "$me: invalid option $1$help"
-       exit 1 ;;
-
-    *local*)
-       # First pass through any local machine types.
-       echo $1
-       exit ;;
-
-    * )
-       break ;;
-  esac
-done
-
-case $# in
- 0) echo "$me: missing argument$help" >&2
-    exit 1;;
- 1) ;;
- *) echo "$me: too many arguments$help" >&2
-    exit 1;;
-esac
-
-# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
-# Here we must recognize all the valid KERNEL-OS combinations.
-maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
-case $maybe_os in
-  nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \
-  uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \
-  kopensolaris*-gnu* | \
-  storm-chaos* | os2-emx* | rtmk-nova*)
-    os=-$maybe_os
-    basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
-    ;;
-  *)
-    basic_machine=`echo $1 | sed 's/-[^-]*$//'`
-    if [ $basic_machine != $1 ]
-    then os=`echo $1 | sed 's/.*-/-/'`
-    else os=; fi
-    ;;
-esac
-
-### Let's recognize common machines as not being operating systems so
-### that things like config.sub decstation-3100 work.  We also
-### recognize some manufacturers as not being operating systems, so we
-### can provide default operating systems below.
-case $os in
-	-sun*os*)
-		# Prevent following clause from handling this invalid input.
-		;;
-	-dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
-	-att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
-	-unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
-	-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
-	-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
-	-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
-	-apple | -axis | -knuth | -cray | -microblaze)
-		os=
-		basic_machine=$1
-		;;
-        -bluegene*)
-	        os=-cnk
-		;;
-	-sim | -cisco | -oki | -wec | -winbond)
-		os=
-		basic_machine=$1
-		;;
-	-scout)
-		;;
-	-wrs)
-		os=-vxworks
-		basic_machine=$1
-		;;
-	-chorusos*)
-		os=-chorusos
-		basic_machine=$1
-		;;
- 	-chorusrdb)
- 		os=-chorusrdb
-		basic_machine=$1
- 		;;
-	-hiux*)
-		os=-hiuxwe2
-		;;
-	-sco6)
-		os=-sco5v6
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-sco5)
-		os=-sco3.2v5
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-sco4)
-		os=-sco3.2v4
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-sco3.2.[4-9]*)
-		os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-sco3.2v[4-9]*)
-		# Don't forget version if it is 3.2v4 or newer.
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-sco5v6*)
-		# Don't forget version if it is 3.2v4 or newer.
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-sco*)
-		os=-sco3.2v2
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-udk*)
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-isc)
-		os=-isc2.2
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-clix*)
-		basic_machine=clipper-intergraph
-		;;
-	-isc*)
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-lynx*)
-		os=-lynxos
-		;;
-	-ptx*)
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
-		;;
-	-windowsnt*)
-		os=`echo $os | sed -e 's/windowsnt/winnt/'`
-		;;
-	-psos*)
-		os=-psos
-		;;
-	-mint | -mint[0-9]*)
-		basic_machine=m68k-atari
-		os=-mint
-		;;
-esac
-
-# Decode aliases for certain CPU-COMPANY combinations.
-case $basic_machine in
-	# Recognize the basic CPU types without company name.
-	# Some are omitted here because they have special meanings below.
-	1750a | 580 \
-	| a29k \
-	| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
-	| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
-	| am33_2.0 \
-	| arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \
-	| bfin \
-	| c4x | clipper \
-	| d10v | d30v | dlx | dsp16xx \
-	| fido | fr30 | frv \
-	| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
-	| i370 | i860 | i960 | ia64 \
-	| ip2k | iq2000 \
-	| lm32 \
-	| m32c | m32r | m32rle | m68000 | m68k | m88k \
-	| maxq | mb | microblaze | mcore | mep | metag \
-	| mips | mipsbe | mipseb | mipsel | mipsle \
-	| mips16 \
-	| mips64 | mips64el \
-	| mips64octeon | mips64octeonel \
-	| mips64orion | mips64orionel \
-	| mips64r5900 | mips64r5900el \
-	| mips64vr | mips64vrel \
-	| mips64vr4100 | mips64vr4100el \
-	| mips64vr4300 | mips64vr4300el \
-	| mips64vr5000 | mips64vr5000el \
-	| mips64vr5900 | mips64vr5900el \
-	| mipsisa32 | mipsisa32el \
-	| mipsisa32r2 | mipsisa32r2el \
-	| mipsisa64 | mipsisa64el \
-	| mipsisa64r2 | mipsisa64r2el \
-	| mipsisa64sb1 | mipsisa64sb1el \
-	| mipsisa64sr71k | mipsisa64sr71kel \
-	| mipstx39 | mipstx39el \
-	| mn10200 | mn10300 \
-	| moxie \
-	| mt \
-	| msp430 \
-	| nios | nios2 \
-	| ns16k | ns32k \
-	| or32 \
-	| pdp10 | pdp11 | pj | pjl \
-	| powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
-	| pyramid \
-	| rx \
-	| score \
-	| sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
-	| sh64 | sh64le \
-	| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
-	| sparcv8 | sparcv9 | sparcv9b | sparcv9v \
-	| spu | strongarm \
-	| tahoe | thumb | tic4x | tic80 | tron \
-	| ubicom32 \
-	| v850 | v850e \
-	| we32k \
-	| x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \
-	| z8k | z80)
-		basic_machine=$basic_machine-unknown
-		;;
-	m6811 | m68hc11 | m6812 | m68hc12 | picochip)
-		# Motorola 68HC11/12.
-		basic_machine=$basic_machine-unknown
-		os=-none
-		;;
-	m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
-		;;
-	ms1)
-		basic_machine=mt-unknown
-		;;
-
-	# We use `pc' rather than `unknown'
-	# because (1) that's what they normally are, and
-	# (2) the word "unknown" tends to confuse beginning users.
-	i*86 | x86_64)
-	  basic_machine=$basic_machine-pc
-	  ;;
-	# Object if more than one company name word.
-	*-*-*)
-		echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
-		exit 1
-		;;
-	# Recognize the basic CPU types with company name.
-	580-* \
-	| a29k-* \
-	| alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
-	| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
-	| alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
-	| arm-*  | armbe-* | armle-* | armeb-* | armv*-* \
-	| avr-* | avr32-* \
-	| bfin-* | bs2000-* \
-	| c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
-	| clipper-* | craynv-* | cydra-* \
-	| d10v-* | d30v-* | dlx-* \
-	| elxsi-* \
-	| f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
-	| h8300-* | h8500-* \
-	| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
-	| i*86-* | i860-* | i960-* | ia64-* \
-	| ip2k-* | iq2000-* \
-	| lm32-* \
-	| m32c-* | m32r-* | m32rle-* \
-	| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
-	| m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \
-	| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
-	| mips16-* \
-	| mips64-* | mips64el-* \
-	| mips64octeon-* | mips64octeonel-* \
-	| mips64orion-* | mips64orionel-* \
-	| mips64r5900-* | mips64r5900el-* \
-	| mips64vr-* | mips64vrel-* \
-	| mips64vr4100-* | mips64vr4100el-* \
-	| mips64vr4300-* | mips64vr4300el-* \
-	| mips64vr5000-* | mips64vr5000el-* \
-	| mips64vr5900-* | mips64vr5900el-* \
-	| mipsisa32-* | mipsisa32el-* \
-	| mipsisa32r2-* | mipsisa32r2el-* \
-	| mipsisa64-* | mipsisa64el-* \
-	| mipsisa64r2-* | mipsisa64r2el-* \
-	| mipsisa64sb1-* | mipsisa64sb1el-* \
-	| mipsisa64sr71k-* | mipsisa64sr71kel-* \
-	| mipstx39-* | mipstx39el-* \
-	| mmix-* \
-	| mt-* \
-	| msp430-* \
-	| nios-* | nios2-* \
-	| none-* | np1-* | ns16k-* | ns32k-* \
-	| orion-* \
-	| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
-	| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
-	| pyramid-* \
-	| romp-* | rs6000-* | rx-* \
-	| sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
-	| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
-	| sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
-	| sparclite-* \
-	| sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \
-	| tahoe-* | thumb-* \
-	| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
-	| tile-* | tilegx-* \
-	| tron-* \
-	| ubicom32-* \
-	| v850-* | v850e-* | vax-* \
-	| we32k-* \
-	| x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \
-	| xstormy16-* | xtensa*-* \
-	| ymp-* \
-	| z8k-* | z80-*)
-		;;
-	# Recognize the basic CPU types without company name, with glob match.
-	xtensa*)
-		basic_machine=$basic_machine-unknown
-		;;
-	# Recognize the various machine names and aliases which stand
-	# for a CPU type and a company and sometimes even an OS.
-	386bsd)
-		basic_machine=i386-unknown
-		os=-bsd
-		;;
-	3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
-		basic_machine=m68000-att
-		;;
-	3b*)
-		basic_machine=we32k-att
-		;;
-	a29khif)
-		basic_machine=a29k-amd
-		os=-udi
-		;;
-    	abacus)
-		basic_machine=abacus-unknown
-		;;
-	adobe68k)
-		basic_machine=m68010-adobe
-		os=-scout
-		;;
-	alliant | fx80)
-		basic_machine=fx80-alliant
-		;;
-	altos | altos3068)
-		basic_machine=m68k-altos
-		;;
-	am29k)
-		basic_machine=a29k-none
-		os=-bsd
-		;;
-	amd64)
-		basic_machine=x86_64-pc
-		;;
-	amd64-*)
-		basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	amdahl)
-		basic_machine=580-amdahl
-		os=-sysv
-		;;
-	amiga | amiga-*)
-		basic_machine=m68k-unknown
-		;;
-	amigaos | amigados)
-		basic_machine=m68k-unknown
-		os=-amigaos
-		;;
-	amigaunix | amix)
-		basic_machine=m68k-unknown
-		os=-sysv4
-		;;
-	apollo68)
-		basic_machine=m68k-apollo
-		os=-sysv
-		;;
-	apollo68bsd)
-		basic_machine=m68k-apollo
-		os=-bsd
-		;;
-	aros)
-		basic_machine=i386-pc
-		os=-aros
-		;;
-	aux)
-		basic_machine=m68k-apple
-		os=-aux
-		;;
-	balance)
-		basic_machine=ns32k-sequent
-		os=-dynix
-		;;
-	blackfin)
-		basic_machine=bfin-unknown
-		os=-linux
-		;;
-	blackfin-*)
-		basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'`
-		os=-linux
-		;;
-	bluegene*)
-		basic_machine=powerpc-ibm
-		os=-cnk
-		;;
-	c90)
-		basic_machine=c90-cray
-		os=-unicos
-		;;
-        cegcc)
-		basic_machine=arm-unknown
-		os=-cegcc
-		;;
-	convex-c1)
-		basic_machine=c1-convex
-		os=-bsd
-		;;
-	convex-c2)
-		basic_machine=c2-convex
-		os=-bsd
-		;;
-	convex-c32)
-		basic_machine=c32-convex
-		os=-bsd
-		;;
-	convex-c34)
-		basic_machine=c34-convex
-		os=-bsd
-		;;
-	convex-c38)
-		basic_machine=c38-convex
-		os=-bsd
-		;;
-	cray | j90)
-		basic_machine=j90-cray
-		os=-unicos
-		;;
-	craynv)
-		basic_machine=craynv-cray
-		os=-unicosmp
-		;;
-	cr16)
-		basic_machine=cr16-unknown
-		os=-elf
-		;;
-	crds | unos)
-		basic_machine=m68k-crds
-		;;
-	crisv32 | crisv32-* | etraxfs*)
-		basic_machine=crisv32-axis
-		;;
-	cris | cris-* | etrax*)
-		basic_machine=cris-axis
-		;;
-	crx)
-		basic_machine=crx-unknown
-		os=-elf
-		;;
-	da30 | da30-*)
-		basic_machine=m68k-da30
-		;;
-	decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
-		basic_machine=mips-dec
-		;;
-	decsystem10* | dec10*)
-		basic_machine=pdp10-dec
-		os=-tops10
-		;;
-	decsystem20* | dec20*)
-		basic_machine=pdp10-dec
-		os=-tops20
-		;;
-	delta | 3300 | motorola-3300 | motorola-delta \
-	      | 3300-motorola | delta-motorola)
-		basic_machine=m68k-motorola
-		;;
-	delta88)
-		basic_machine=m88k-motorola
-		os=-sysv3
-		;;
-	dicos)
-		basic_machine=i686-pc
-		os=-dicos
-		;;
-	djgpp)
-		basic_machine=i586-pc
-		os=-msdosdjgpp
-		;;
-	dpx20 | dpx20-*)
-		basic_machine=rs6000-bull
-		os=-bosx
-		;;
-	dpx2* | dpx2*-bull)
-		basic_machine=m68k-bull
-		os=-sysv3
-		;;
-	ebmon29k)
-		basic_machine=a29k-amd
-		os=-ebmon
-		;;
-	elxsi)
-		basic_machine=elxsi-elxsi
-		os=-bsd
-		;;
-	encore | umax | mmax)
-		basic_machine=ns32k-encore
-		;;
-	es1800 | OSE68k | ose68k | ose | OSE)
-		basic_machine=m68k-ericsson
-		os=-ose
-		;;
-	fx2800)
-		basic_machine=i860-alliant
-		;;
-	genix)
-		basic_machine=ns32k-ns
-		;;
-	gmicro)
-		basic_machine=tron-gmicro
-		os=-sysv
-		;;
-	go32)
-		basic_machine=i386-pc
-		os=-go32
-		;;
-	h3050r* | hiux*)
-		basic_machine=hppa1.1-hitachi
-		os=-hiuxwe2
-		;;
-	h8300hms)
-		basic_machine=h8300-hitachi
-		os=-hms
-		;;
-	h8300xray)
-		basic_machine=h8300-hitachi
-		os=-xray
-		;;
-	h8500hms)
-		basic_machine=h8500-hitachi
-		os=-hms
-		;;
-	harris)
-		basic_machine=m88k-harris
-		os=-sysv3
-		;;
-	hp300-*)
-		basic_machine=m68k-hp
-		;;
-	hp300bsd)
-		basic_machine=m68k-hp
-		os=-bsd
-		;;
-	hp300hpux)
-		basic_machine=m68k-hp
-		os=-hpux
-		;;
-	hp3k9[0-9][0-9] | hp9[0-9][0-9])
-		basic_machine=hppa1.0-hp
-		;;
-	hp9k2[0-9][0-9] | hp9k31[0-9])
-		basic_machine=m68000-hp
-		;;
-	hp9k3[2-9][0-9])
-		basic_machine=m68k-hp
-		;;
-	hp9k6[0-9][0-9] | hp6[0-9][0-9])
-		basic_machine=hppa1.0-hp
-		;;
-	hp9k7[0-79][0-9] | hp7[0-79][0-9])
-		basic_machine=hppa1.1-hp
-		;;
-	hp9k78[0-9] | hp78[0-9])
-		# FIXME: really hppa2.0-hp
-		basic_machine=hppa1.1-hp
-		;;
-	hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
-		# FIXME: really hppa2.0-hp
-		basic_machine=hppa1.1-hp
-		;;
-	hp9k8[0-9][13679] | hp8[0-9][13679])
-		basic_machine=hppa1.1-hp
-		;;
-	hp9k8[0-9][0-9] | hp8[0-9][0-9])
-		basic_machine=hppa1.0-hp
-		;;
-	hppa-next)
-		os=-nextstep3
-		;;
-	hppaosf)
-		basic_machine=hppa1.1-hp
-		os=-osf
-		;;
-	hppro)
-		basic_machine=hppa1.1-hp
-		os=-proelf
-		;;
-	i370-ibm* | ibm*)
-		basic_machine=i370-ibm
-		;;
-# I'm not sure what "Sysv32" means.  Should this be sysv3.2?
-	i*86v32)
-		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
-		os=-sysv32
-		;;
-	i*86v4*)
-		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
-		os=-sysv4
-		;;
-	i*86v)
-		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
-		os=-sysv
-		;;
-	i*86sol2)
-		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
-		os=-solaris2
-		;;
-	i386mach)
-		basic_machine=i386-mach
-		os=-mach
-		;;
-	i386-vsta | vsta)
-		basic_machine=i386-unknown
-		os=-vsta
-		;;
-	iris | iris4d)
-		basic_machine=mips-sgi
-		case $os in
-		    -irix*)
-			;;
-		    *)
-			os=-irix4
-			;;
-		esac
-		;;
-	isi68 | isi)
-		basic_machine=m68k-isi
-		os=-sysv
-		;;
-	m68knommu)
-		basic_machine=m68k-unknown
-		os=-linux
-		;;
-	m68knommu-*)
-		basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'`
-		os=-linux
-		;;
-	m88k-omron*)
-		basic_machine=m88k-omron
-		;;
-	magnum | m3230)
-		basic_machine=mips-mips
-		os=-sysv
-		;;
-	merlin)
-		basic_machine=ns32k-utek
-		os=-sysv
-		;;
-        microblaze)
-		basic_machine=microblaze-xilinx
-		;;
-	mingw32)
-		basic_machine=i386-pc
-		os=-mingw32
-		;;
-	mingw32ce)
-		basic_machine=arm-unknown
-		os=-mingw32ce
-		;;
-	miniframe)
-		basic_machine=m68000-convergent
-		;;
-	*mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
-		basic_machine=m68k-atari
-		os=-mint
-		;;
-	mips3*-*)
-		basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
-		;;
-	mips3*)
-		basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
-		;;
-	monitor)
-		basic_machine=m68k-rom68k
-		os=-coff
-		;;
-	morphos)
-		basic_machine=powerpc-unknown
-		os=-morphos
-		;;
-	msdos)
-		basic_machine=i386-pc
-		os=-msdos
-		;;
-	ms1-*)
-		basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
-		;;
-	mvs)
-		basic_machine=i370-ibm
-		os=-mvs
-		;;
-	ncr3000)
-		basic_machine=i486-ncr
-		os=-sysv4
-		;;
-	netbsd386)
-		basic_machine=i386-unknown
-		os=-netbsd
-		;;
-	netwinder)
-		basic_machine=armv4l-rebel
-		os=-linux
-		;;
-	news | news700 | news800 | news900)
-		basic_machine=m68k-sony
-		os=-newsos
-		;;
-	news1000)
-		basic_machine=m68030-sony
-		os=-newsos
-		;;
-	news-3600 | risc-news)
-		basic_machine=mips-sony
-		os=-newsos
-		;;
-	necv70)
-		basic_machine=v70-nec
-		os=-sysv
-		;;
-	next | m*-next )
-		basic_machine=m68k-next
-		case $os in
-		    -nextstep* )
-			;;
-		    -ns2*)
-		      os=-nextstep2
-			;;
-		    *)
-		      os=-nextstep3
-			;;
-		esac
-		;;
-	nh3000)
-		basic_machine=m68k-harris
-		os=-cxux
-		;;
-	nh[45]000)
-		basic_machine=m88k-harris
-		os=-cxux
-		;;
-	nindy960)
-		basic_machine=i960-intel
-		os=-nindy
-		;;
-	mon960)
-		basic_machine=i960-intel
-		os=-mon960
-		;;
-	nonstopux)
-		basic_machine=mips-compaq
-		os=-nonstopux
-		;;
-	np1)
-		basic_machine=np1-gould
-		;;
-	nsr-tandem)
-		basic_machine=nsr-tandem
-		;;
-	op50n-* | op60c-*)
-		basic_machine=hppa1.1-oki
-		os=-proelf
-		;;
-	openrisc | openrisc-*)
-		basic_machine=or32-unknown
-		;;
-	os400)
-		basic_machine=powerpc-ibm
-		os=-os400
-		;;
-	OSE68000 | ose68000)
-		basic_machine=m68000-ericsson
-		os=-ose
-		;;
-	os68k)
-		basic_machine=m68k-none
-		os=-os68k
-		;;
-	pa-hitachi)
-		basic_machine=hppa1.1-hitachi
-		os=-hiuxwe2
-		;;
-	paragon)
-		basic_machine=i860-intel
-		os=-osf
-		;;
-	parisc)
-		basic_machine=hppa-unknown
-		os=-linux
-		;;
-	parisc-*)
-		basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'`
-		os=-linux
-		;;
-	pbd)
-		basic_machine=sparc-tti
-		;;
-	pbb)
-		basic_machine=m68k-tti
-		;;
-	pc532 | pc532-*)
-		basic_machine=ns32k-pc532
-		;;
-	pc98)
-		basic_machine=i386-pc
-		;;
-	pc98-*)
-		basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	pentium | p5 | k5 | k6 | nexgen | viac3)
-		basic_machine=i586-pc
-		;;
-	pentiumpro | p6 | 6x86 | athlon | athlon_*)
-		basic_machine=i686-pc
-		;;
-	pentiumii | pentium2 | pentiumiii | pentium3)
-		basic_machine=i686-pc
-		;;
-	pentium4)
-		basic_machine=i786-pc
-		;;
-	pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
-		basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	pentiumpro-* | p6-* | 6x86-* | athlon-*)
-		basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
-		basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	pentium4-*)
-		basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	pn)
-		basic_machine=pn-gould
-		;;
-	power)	basic_machine=power-ibm
-		;;
-	ppc)	basic_machine=powerpc-unknown
-		;;
-	ppc-*)	basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	ppcle | powerpclittle | ppc-le | powerpc-little)
-		basic_machine=powerpcle-unknown
-		;;
-	ppcle-* | powerpclittle-*)
-		basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	ppc64)	basic_machine=powerpc64-unknown
-		;;
-	ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	ppc64le | powerpc64little | ppc64-le | powerpc64-little)
-		basic_machine=powerpc64le-unknown
-		;;
-	ppc64le-* | powerpc64little-*)
-		basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	ps2)
-		basic_machine=i386-ibm
-		;;
-	pw32)
-		basic_machine=i586-unknown
-		os=-pw32
-		;;
-	rdos)
-		basic_machine=i386-pc
-		os=-rdos
-		;;
-	rom68k)
-		basic_machine=m68k-rom68k
-		os=-coff
-		;;
-	rm[46]00)
-		basic_machine=mips-siemens
-		;;
-	rtpc | rtpc-*)
-		basic_machine=romp-ibm
-		;;
-	s390 | s390-*)
-		basic_machine=s390-ibm
-		;;
-	s390x | s390x-*)
-		basic_machine=s390x-ibm
-		;;
-	sa29200)
-		basic_machine=a29k-amd
-		os=-udi
-		;;
-	sb1)
-		basic_machine=mipsisa64sb1-unknown
-		;;
-	sb1el)
-		basic_machine=mipsisa64sb1el-unknown
-		;;
-	sde)
-		basic_machine=mipsisa32-sde
-		os=-elf
-		;;
-	sei)
-		basic_machine=mips-sei
-		os=-seiux
-		;;
-	sequent)
-		basic_machine=i386-sequent
-		;;
-	sh)
-		basic_machine=sh-hitachi
-		os=-hms
-		;;
-	sh5el)
-		basic_machine=sh5le-unknown
-		;;
-	sh64)
-		basic_machine=sh64-unknown
-		;;
-	sparclite-wrs | simso-wrs)
-		basic_machine=sparclite-wrs
-		os=-vxworks
-		;;
-	sps7)
-		basic_machine=m68k-bull
-		os=-sysv2
-		;;
-	spur)
-		basic_machine=spur-unknown
-		;;
-	st2000)
-		basic_machine=m68k-tandem
-		;;
-	stratus)
-		basic_machine=i860-stratus
-		os=-sysv4
-		;;
-	sun2)
-		basic_machine=m68000-sun
-		;;
-	sun2os3)
-		basic_machine=m68000-sun
-		os=-sunos3
-		;;
-	sun2os4)
-		basic_machine=m68000-sun
-		os=-sunos4
-		;;
-	sun3os3)
-		basic_machine=m68k-sun
-		os=-sunos3
-		;;
-	sun3os4)
-		basic_machine=m68k-sun
-		os=-sunos4
-		;;
-	sun4os3)
-		basic_machine=sparc-sun
-		os=-sunos3
-		;;
-	sun4os4)
-		basic_machine=sparc-sun
-		os=-sunos4
-		;;
-	sun4sol2)
-		basic_machine=sparc-sun
-		os=-solaris2
-		;;
-	sun3 | sun3-*)
-		basic_machine=m68k-sun
-		;;
-	sun4)
-		basic_machine=sparc-sun
-		;;
-	sun386 | sun386i | roadrunner)
-		basic_machine=i386-sun
-		;;
-	sv1)
-		basic_machine=sv1-cray
-		os=-unicos
-		;;
-	symmetry)
-		basic_machine=i386-sequent
-		os=-dynix
-		;;
-	t3e)
-		basic_machine=alphaev5-cray
-		os=-unicos
-		;;
-	t90)
-		basic_machine=t90-cray
-		os=-unicos
-		;;
-	tic54x | c54x*)
-		basic_machine=tic54x-unknown
-		os=-coff
-		;;
-	tic55x | c55x*)
-		basic_machine=tic55x-unknown
-		os=-coff
-		;;
-	tic6x | c6x*)
-		basic_machine=tic6x-unknown
-		os=-coff
-		;;
-        # This must be matched before tile*.
-        tilegx*)
-		basic_machine=tilegx-unknown
-		os=-linux-gnu
-		;;
-	tile*)
-		basic_machine=tile-unknown
-		os=-linux-gnu
-		;;
-	tx39)
-		basic_machine=mipstx39-unknown
-		;;
-	tx39el)
-		basic_machine=mipstx39el-unknown
-		;;
-	toad1)
-		basic_machine=pdp10-xkl
-		os=-tops20
-		;;
-	tower | tower-32)
-		basic_machine=m68k-ncr
-		;;
-	tpf)
-		basic_machine=s390x-ibm
-		os=-tpf
-		;;
-	udi29k)
-		basic_machine=a29k-amd
-		os=-udi
-		;;
-	ultra3)
-		basic_machine=a29k-nyu
-		os=-sym1
-		;;
-	v810 | necv810)
-		basic_machine=v810-nec
-		os=-none
-		;;
-	vaxv)
-		basic_machine=vax-dec
-		os=-sysv
-		;;
-	vms)
-		basic_machine=vax-dec
-		os=-vms
-		;;
-	vpp*|vx|vx-*)
-		basic_machine=f301-fujitsu
-		;;
-	vxworks960)
-		basic_machine=i960-wrs
-		os=-vxworks
-		;;
-	vxworks68)
-		basic_machine=m68k-wrs
-		os=-vxworks
-		;;
-	vxworks29k)
-		basic_machine=a29k-wrs
-		os=-vxworks
-		;;
-	w65*)
-		basic_machine=w65-wdc
-		os=-none
-		;;
-	w89k-*)
-		basic_machine=hppa1.1-winbond
-		os=-proelf
-		;;
-	xbox)
-		basic_machine=i686-pc
-		os=-mingw32
-		;;
-	xps | xps100)
-		basic_machine=xps100-honeywell
-		;;
-	ymp)
-		basic_machine=ymp-cray
-		os=-unicos
-		;;
-	z8k-*-coff)
-		basic_machine=z8k-unknown
-		os=-sim
-		;;
-	z80-*-coff)
-		basic_machine=z80-unknown
-		os=-sim
-		;;
-	none)
-		basic_machine=none-none
-		os=-none
-		;;
-
-# Here we handle the default manufacturer of certain CPU types.  It is in
-# some cases the only manufacturer, in others, it is the most popular.
-	w89k)
-		basic_machine=hppa1.1-winbond
-		;;
-	op50n)
-		basic_machine=hppa1.1-oki
-		;;
-	op60c)
-		basic_machine=hppa1.1-oki
-		;;
-	romp)
-		basic_machine=romp-ibm
-		;;
-	mmix)
-		basic_machine=mmix-knuth
-		;;
-	rs6000)
-		basic_machine=rs6000-ibm
-		;;
-	vax)
-		basic_machine=vax-dec
-		;;
-	pdp10)
-		# there are many clones, so DEC is not a safe bet
-		basic_machine=pdp10-unknown
-		;;
-	pdp11)
-		basic_machine=pdp11-dec
-		;;
-	we32k)
-		basic_machine=we32k-att
-		;;
-	sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele)
-		basic_machine=sh-unknown
-		;;
-	sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v)
-		basic_machine=sparc-sun
-		;;
-	cydra)
-		basic_machine=cydra-cydrome
-		;;
-	orion)
-		basic_machine=orion-highlevel
-		;;
-	orion105)
-		basic_machine=clipper-highlevel
-		;;
-	mac | mpw | mac-mpw)
-		basic_machine=m68k-apple
-		;;
-	pmac | pmac-mpw)
-		basic_machine=powerpc-apple
-		;;
-	*-unknown)
-		# Make sure to match an already-canonicalized machine name.
-		;;
-	*)
-		echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
-		exit 1
-		;;
-esac
-
-# Here we canonicalize certain aliases for manufacturers.
-case $basic_machine in
-	*-digital*)
-		basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
-		;;
-	*-commodore*)
-		basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
-		;;
-	*)
-		;;
-esac
-
-# Decode manufacturer-specific aliases for certain operating systems.
-
-if [ x"$os" != x"" ]
-then
-case $os in
-        # First match some system type aliases
-        # that might get confused with valid system types.
-	# -solaris* is a basic system type, with this one exception.
-        -auroraux)
-	        os=-auroraux
-		;;
-	-solaris1 | -solaris1.*)
-		os=`echo $os | sed -e 's|solaris1|sunos4|'`
-		;;
-	-solaris)
-		os=-solaris2
-		;;
-	-svr4*)
-		os=-sysv4
-		;;
-	-unixware*)
-		os=-sysv4.2uw
-		;;
-	-gnu/linux*)
-		os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
-		;;
-	# First accept the basic system types.
-	# The portable systems comes first.
-	# Each alternative MUST END IN A *, to match a version number.
-	# -sysv* is not here because it comes later, after sysvr4.
-	-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
-	      | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
-	      | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
-	      | -sym* | -kopensolaris* \
-	      | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
-	      | -aos* | -aros* \
-	      | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
-	      | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
-	      | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
-	      | -openbsd* | -solidbsd* \
-	      | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
-	      | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
-	      | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
-	      | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
-	      | -chorusos* | -chorusrdb* | -cegcc* \
-	      | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
-	      | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \
-	      | -uxpv* | -beos* | -mpeix* | -udk* \
-	      | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
-	      | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
-	      | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
-	      | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
-	      | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
-	      | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
-	      | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*)
-	# Remember, each alternative MUST END IN *, to match a version number.
-		;;
-	-qnx*)
-		case $basic_machine in
-		    x86-* | i*86-*)
-			;;
-		    *)
-			os=-nto$os
-			;;
-		esac
-		;;
-	-nto-qnx*)
-		;;
-	-nto*)
-		os=`echo $os | sed -e 's|nto|nto-qnx|'`
-		;;
-	-sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
-	      | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \
-	      | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
-		;;
-	-mac*)
-		os=`echo $os | sed -e 's|mac|macos|'`
-		;;
-	-linux-dietlibc)
-		os=-linux-dietlibc
-		;;
-	-linux*)
-		os=`echo $os | sed -e 's|linux|linux-gnu|'`
-		;;
-	-sunos5*)
-		os=`echo $os | sed -e 's|sunos5|solaris2|'`
-		;;
-	-sunos6*)
-		os=`echo $os | sed -e 's|sunos6|solaris3|'`
-		;;
-	-opened*)
-		os=-openedition
-		;;
-        -os400*)
-		os=-os400
-		;;
-	-wince*)
-		os=-wince
-		;;
-	-osfrose*)
-		os=-osfrose
-		;;
-	-osf*)
-		os=-osf
-		;;
-	-utek*)
-		os=-bsd
-		;;
-	-dynix*)
-		os=-bsd
-		;;
-	-acis*)
-		os=-aos
-		;;
-	-atheos*)
-		os=-atheos
-		;;
-	-syllable*)
-		os=-syllable
-		;;
-	-386bsd)
-		os=-bsd
-		;;
-	-ctix* | -uts*)
-		os=-sysv
-		;;
-	-nova*)
-		os=-rtmk-nova
-		;;
-	-ns2 )
-		os=-nextstep2
-		;;
-	-nsk*)
-		os=-nsk
-		;;
-	# Preserve the version number of sinix5.
-	-sinix5.*)
-		os=`echo $os | sed -e 's|sinix|sysv|'`
-		;;
-	-sinix*)
-		os=-sysv4
-		;;
-        -tpf*)
-		os=-tpf
-		;;
-	-triton*)
-		os=-sysv3
-		;;
-	-oss*)
-		os=-sysv3
-		;;
-	-svr4)
-		os=-sysv4
-		;;
-	-svr3)
-		os=-sysv3
-		;;
-	-sysvr4)
-		os=-sysv4
-		;;
-	# This must come after -sysvr4.
-	-sysv*)
-		;;
-	-ose*)
-		os=-ose
-		;;
-	-es1800*)
-		os=-ose
-		;;
-	-xenix)
-		os=-xenix
-		;;
-	-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
-		os=-mint
-		;;
-	-aros*)
-		os=-aros
-		;;
-	-kaos*)
-		os=-kaos
-		;;
-	-zvmoe)
-		os=-zvmoe
-		;;
-	-dicos*)
-		os=-dicos
-		;;
-        -nacl*)
-	        ;;
-	-none)
-		;;
-	*)
-		# Get rid of the `-' at the beginning of $os.
-		os=`echo $os | sed 's/[^-]*-//'`
-		echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
-		exit 1
-		;;
-esac
-else
-
-# Here we handle the default operating systems that come with various machines.
-# The value should be what the vendor currently ships out the door with their
-# machine or put another way, the most popular os provided with the machine.
-
-# Note that if you're going to try to match "-MANUFACTURER" here (say,
-# "-sun"), then you have to tell the case statement up towards the top
-# that MANUFACTURER isn't an operating system.  Otherwise, code above
-# will signal an error saying that MANUFACTURER isn't an operating
-# system, and we'll never get to this point.
-
-case $basic_machine in
-        score-*)
-		os=-elf
-		;;
-        spu-*)
-		os=-elf
-		;;
-	*-acorn)
-		os=-riscix1.2
-		;;
-	arm*-rebel)
-		os=-linux
-		;;
-	arm*-semi)
-		os=-aout
-		;;
-        c4x-* | tic4x-*)
-        	os=-coff
-		;;
-	# This must come before the *-dec entry.
-	pdp10-*)
-		os=-tops20
-		;;
-	pdp11-*)
-		os=-none
-		;;
-	*-dec | vax-*)
-		os=-ultrix4.2
-		;;
-	m68*-apollo)
-		os=-domain
-		;;
-	i386-sun)
-		os=-sunos4.0.2
-		;;
-	m68000-sun)
-		os=-sunos3
-		# This also exists in the configure program, but was not the
-		# default.
-		# os=-sunos4
-		;;
-	m68*-cisco)
-		os=-aout
-		;;
-        mep-*)
-		os=-elf
-		;;
-	mips*-cisco)
-		os=-elf
-		;;
-	mips*-*)
-		os=-elf
-		;;
-	or32-*)
-		os=-coff
-		;;
-	*-tti)	# must be before sparc entry or we get the wrong os.
-		os=-sysv3
-		;;
-	sparc-* | *-sun)
-		os=-sunos4.1.1
-		;;
-	*-be)
-		os=-beos
-		;;
-	*-haiku)
-		os=-haiku
-		;;
-	*-ibm)
-		os=-aix
-		;;
-    	*-knuth)
-		os=-mmixware
-		;;
-	*-wec)
-		os=-proelf
-		;;
-	*-winbond)
-		os=-proelf
-		;;
-	*-oki)
-		os=-proelf
-		;;
-	*-hp)
-		os=-hpux
-		;;
-	*-hitachi)
-		os=-hiux
-		;;
-	i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
-		os=-sysv
-		;;
-	*-cbm)
-		os=-amigaos
-		;;
-	*-dg)
-		os=-dgux
-		;;
-	*-dolphin)
-		os=-sysv3
-		;;
-	m68k-ccur)
-		os=-rtu
-		;;
-	m88k-omron*)
-		os=-luna
-		;;
-	*-next )
-		os=-nextstep
-		;;
-	*-sequent)
-		os=-ptx
-		;;
-	*-crds)
-		os=-unos
-		;;
-	*-ns)
-		os=-genix
-		;;
-	i370-*)
-		os=-mvs
-		;;
-	*-next)
-		os=-nextstep3
-		;;
-	*-gould)
-		os=-sysv
-		;;
-	*-highlevel)
-		os=-bsd
-		;;
-	*-encore)
-		os=-bsd
-		;;
-	*-sgi)
-		os=-irix
-		;;
-	*-siemens)
-		os=-sysv4
-		;;
-	*-masscomp)
-		os=-rtu
-		;;
-	f30[01]-fujitsu | f700-fujitsu)
-		os=-uxpv
-		;;
-	*-rom68k)
-		os=-coff
-		;;
-	*-*bug)
-		os=-coff
-		;;
-	*-apple)
-		os=-macos
-		;;
-	*-atari*)
-		os=-mint
-		;;
-	*)
-		os=-none
-		;;
-esac
-fi
-
-# Here we handle the case where we know the os, and the CPU type, but not the
-# manufacturer.  We pick the logical manufacturer.
-vendor=unknown
-case $basic_machine in
-	*-unknown)
-		case $os in
-			-riscix*)
-				vendor=acorn
-				;;
-			-sunos*)
-				vendor=sun
-				;;
-			-cnk*|-aix*)
-				vendor=ibm
-				;;
-			-beos*)
-				vendor=be
-				;;
-			-hpux*)
-				vendor=hp
-				;;
-			-mpeix*)
-				vendor=hp
-				;;
-			-hiux*)
-				vendor=hitachi
-				;;
-			-unos*)
-				vendor=crds
-				;;
-			-dgux*)
-				vendor=dg
-				;;
-			-luna*)
-				vendor=omron
-				;;
-			-genix*)
-				vendor=ns
-				;;
-			-mvs* | -opened*)
-				vendor=ibm
-				;;
-			-os400*)
-				vendor=ibm
-				;;
-			-ptx*)
-				vendor=sequent
-				;;
-			-tpf*)
-				vendor=ibm
-				;;
-			-vxsim* | -vxworks* | -windiss*)
-				vendor=wrs
-				;;
-			-aux*)
-				vendor=apple
-				;;
-			-hms*)
-				vendor=hitachi
-				;;
-			-mpw* | -macos*)
-				vendor=apple
-				;;
-			-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
-				vendor=atari
-				;;
-			-vos*)
-				vendor=stratus
-				;;
-		esac
-		basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
-		;;
-esac
-
-echo $basic_machine$os
-exit
-
-# Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "timestamp='"
-# time-stamp-format: "%:y-%02m-%02d"
-# time-stamp-end: "'"
-# End:
diff --git a/configure b/configure
deleted file mode 100755
index 7537c95..0000000
--- a/configure
+++ /dev/null
@@ -1,17034 +0,0 @@
-#! /bin/sh
-# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.67 for opensc 0.13.0.
-#
-#
-# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
-# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software
-# Foundation, Inc.
-#
-#
-# This configure script is free software; the Free Software Foundation
-# gives unlimited permission to copy, distribute and modify it.
-## -------------------- ##
-## M4sh Initialization. ##
-## -------------------- ##
-
-# Be more Bourne compatible
-DUALCASE=1; export DUALCASE # for MKS sh
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
-  emulate sh
-  NULLCMD=:
-  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
-  # is contrary to our usage.  Disable this feature.
-  alias -g '${1+"$@"}'='"$@"'
-  setopt NO_GLOB_SUBST
-else
-  case `(set -o) 2>/dev/null` in #(
-  *posix*) :
-    set -o posix ;; #(
-  *) :
-     ;;
-esac
-fi
-
-
-as_nl='
-'
-export as_nl
-# Printing a long string crashes Solaris 7 /usr/bin/printf.
-as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
-# Prefer a ksh shell builtin over an external printf program on Solaris,
-# but without wasting forks for bash or zsh.
-if test -z "$BASH_VERSION$ZSH_VERSION" \
-    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
-  as_echo='print -r --'
-  as_echo_n='print -rn --'
-elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
-  as_echo='printf %s\n'
-  as_echo_n='printf %s'
-else
-  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
-    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
-    as_echo_n='/usr/ucb/echo -n'
-  else
-    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
-    as_echo_n_body='eval
-      arg=$1;
-      case $arg in #(
-      *"$as_nl"*)
-	expr "X$arg" : "X\\(.*\\)$as_nl";
-	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
-      esac;
-      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
-    '
-    export as_echo_n_body
-    as_echo_n='sh -c $as_echo_n_body as_echo'
-  fi
-  export as_echo_body
-  as_echo='sh -c $as_echo_body as_echo'
-fi
-
-# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
-  PATH_SEPARATOR=:
-  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
-    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
-      PATH_SEPARATOR=';'
-  }
-fi
-
-
-# IFS
-# We need space, tab and new line, in precisely that order.  Quoting is
-# there to prevent editors from complaining about space-tab.
-# (If _AS_PATH_WALK were called with IFS unset, it would disable word
-# splitting by setting IFS to empty value.)
-IFS=" ""	$as_nl"
-
-# Find who we are.  Look in the path if we contain no directory separator.
-case $0 in #((
-  *[\\/]* ) as_myself=$0 ;;
-  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
-  done
-IFS=$as_save_IFS
-
-     ;;
-esac
-# We did not find ourselves, most probably we were run as `sh COMMAND'
-# in which case we are not to be found in the path.
-if test "x$as_myself" = x; then
-  as_myself=$0
-fi
-if test ! -f "$as_myself"; then
-  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
-  exit 1
-fi
-
-# Unset variables that we do not need and which cause bugs (e.g. in
-# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
-# suppresses any "Segmentation fault" message there.  '((' could
-# trigger a bug in pdksh 5.2.14.
-for as_var in BASH_ENV ENV MAIL MAILPATH
-do eval test x\${$as_var+set} = xset \
-  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
-done
-PS1='$ '
-PS2='> '
-PS4='+ '
-
-# NLS nuisances.
-LC_ALL=C
-export LC_ALL
-LANGUAGE=C
-export LANGUAGE
-
-# CDPATH.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-if test "x$CONFIG_SHELL" = x; then
-  as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
-  emulate sh
-  NULLCMD=:
-  # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which
-  # is contrary to our usage.  Disable this feature.
-  alias -g '\${1+\"\$@\"}'='\"\$@\"'
-  setopt NO_GLOB_SUBST
-else
-  case \`(set -o) 2>/dev/null\` in #(
-  *posix*) :
-    set -o posix ;; #(
-  *) :
-     ;;
-esac
-fi
-"
-  as_required="as_fn_return () { (exit \$1); }
-as_fn_success () { as_fn_return 0; }
-as_fn_failure () { as_fn_return 1; }
-as_fn_ret_success () { return 0; }
-as_fn_ret_failure () { return 1; }
-
-exitcode=0
-as_fn_success || { exitcode=1; echo as_fn_success failed.; }
-as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
-as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
-as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
-if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
-
-else
-  exitcode=1; echo positional parameters were not saved.
-fi
-test x\$exitcode = x0 || exit 1"
-  as_suggested="  as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
-  as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
-  eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
-  test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1
-test \$(( 1 + 1 )) = 2 || exit 1"
-  if (eval "$as_required") 2>/dev/null; then :
-  as_have_required=yes
-else
-  as_have_required=no
-fi
-  if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :
-
-else
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-as_found=false
-for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  as_found=:
-  case $as_dir in #(
-	 /*)
-	   for as_base in sh bash ksh sh5; do
-	     # Try only shells that exist, to save several forks.
-	     as_shell=$as_dir/$as_base
-	     if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
-		    { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then :
-  CONFIG_SHELL=$as_shell as_have_required=yes
-		   if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then :
-  break 2
-fi
-fi
-	   done;;
-       esac
-  as_found=false
-done
-$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
-	      { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then :
-  CONFIG_SHELL=$SHELL as_have_required=yes
-fi; }
-IFS=$as_save_IFS
-
-
-      if test "x$CONFIG_SHELL" != x; then :
-  # We cannot yet assume a decent shell, so we have to provide a
-	# neutralization value for shells without unset; and this also
-	# works around shells that cannot unset nonexistent variables.
-	BASH_ENV=/dev/null
-	ENV=/dev/null
-	(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
-	export CONFIG_SHELL
-	exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"}
-fi
-
-    if test x$as_have_required = xno; then :
-  $as_echo "$0: This script requires a shell more modern than all"
-  $as_echo "$0: the shells that I found on your system."
-  if test x${ZSH_VERSION+set} = xset ; then
-    $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
-    $as_echo "$0: be upgraded to zsh 4.3.4 or later."
-  else
-    $as_echo "$0: Please tell bug-autoconf at gnu.org about your system,
-$0: including any error possibly output before this
-$0: message. Then install a modern shell, or manually run
-$0: the script under such a shell if you do have one."
-  fi
-  exit 1
-fi
-fi
-fi
-SHELL=${CONFIG_SHELL-/bin/sh}
-export SHELL
-# Unset more variables known to interfere with behavior of common tools.
-CLICOLOR_FORCE= GREP_OPTIONS=
-unset CLICOLOR_FORCE GREP_OPTIONS
-
-## --------------------- ##
-## M4sh Shell Functions. ##
-## --------------------- ##
-# as_fn_unset VAR
-# ---------------
-# Portably unset VAR.
-as_fn_unset ()
-{
-  { eval $1=; unset $1;}
-}
-as_unset=as_fn_unset
-
-# as_fn_set_status STATUS
-# -----------------------
-# Set $? to STATUS, without forking.
-as_fn_set_status ()
-{
-  return $1
-} # as_fn_set_status
-
-# as_fn_exit STATUS
-# -----------------
-# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
-as_fn_exit ()
-{
-  set +e
-  as_fn_set_status $1
-  exit $1
-} # as_fn_exit
-
-# as_fn_mkdir_p
-# -------------
-# Create "$as_dir" as a directory, including parents if necessary.
-as_fn_mkdir_p ()
-{
-
-  case $as_dir in #(
-  -*) as_dir=./$as_dir;;
-  esac
-  test -d "$as_dir" || eval $as_mkdir_p || {
-    as_dirs=
-    while :; do
-      case $as_dir in #(
-      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
-      *) as_qdir=$as_dir;;
-      esac
-      as_dirs="'$as_qdir' $as_dirs"
-      as_dir=`$as_dirname -- "$as_dir" ||
-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$as_dir" : 'X\(//\)[^/]' \| \
-	 X"$as_dir" : 'X\(//\)$' \| \
-	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_dir" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)[^/].*/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`
-      test -d "$as_dir" && break
-    done
-    test -z "$as_dirs" || eval "mkdir $as_dirs"
-  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
-
-
-} # as_fn_mkdir_p
-# as_fn_append VAR VALUE
-# ----------------------
-# Append the text in VALUE to the end of the definition contained in VAR. Take
-# advantage of any shell optimizations that allow amortized linear growth over
-# repeated appends, instead of the typical quadratic growth present in naive
-# implementations.
-if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
-  eval 'as_fn_append ()
-  {
-    eval $1+=\$2
-  }'
-else
-  as_fn_append ()
-  {
-    eval $1=\$$1\$2
-  }
-fi # as_fn_append
-
-# as_fn_arith ARG...
-# ------------------
-# Perform arithmetic evaluation on the ARGs, and store the result in the
-# global $as_val. Take advantage of shells that can avoid forks. The arguments
-# must be portable across $(()) and expr.
-if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
-  eval 'as_fn_arith ()
-  {
-    as_val=$(( $* ))
-  }'
-else
-  as_fn_arith ()
-  {
-    as_val=`expr "$@" || test $? -eq 1`
-  }
-fi # as_fn_arith
-
-
-# as_fn_error STATUS ERROR [LINENO LOG_FD]
-# ----------------------------------------
-# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
-# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
-# script with STATUS, using 1 if that was 0.
-as_fn_error ()
-{
-  as_status=$1; test $as_status -eq 0 && as_status=1
-  if test "$4"; then
-    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
-  fi
-  $as_echo "$as_me: error: $2" >&2
-  as_fn_exit $as_status
-} # as_fn_error
-
-if expr a : '\(a\)' >/dev/null 2>&1 &&
-   test "X`expr 00001 : '.*\(...\)'`" = X001; then
-  as_expr=expr
-else
-  as_expr=false
-fi
-
-if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
-  as_basename=basename
-else
-  as_basename=false
-fi
-
-if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
-  as_dirname=dirname
-else
-  as_dirname=false
-fi
-
-as_me=`$as_basename -- "$0" ||
-$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
-	 X"$0" : 'X\(//\)$' \| \
-	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X/"$0" |
-    sed '/^.*\/\([^/][^/]*\)\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\/\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\/\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`
-
-# Avoid depending upon Character Ranges.
-as_cr_letters='abcdefghijklmnopqrstuvwxyz'
-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-as_cr_Letters=$as_cr_letters$as_cr_LETTERS
-as_cr_digits='0123456789'
-as_cr_alnum=$as_cr_Letters$as_cr_digits
-
-
-  as_lineno_1=$LINENO as_lineno_1a=$LINENO
-  as_lineno_2=$LINENO as_lineno_2a=$LINENO
-  eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&
-  test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {
-  # Blame Lee E. McMahon (1931-1989) for sed's syntax.  :-)
-  sed -n '
-    p
-    /[$]LINENO/=
-  ' <$as_myself |
-    sed '
-      s/[$]LINENO.*/&-/
-      t lineno
-      b
-      :lineno
-      N
-      :loop
-      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
-      t loop
-      s/-\n.*//
-    ' >$as_me.lineno &&
-  chmod +x "$as_me.lineno" ||
-    { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
-
-  # Don't try to exec as it changes $[0], causing all sort of problems
-  # (the dirname of $[0] is not the place where we might find the
-  # original and so on.  Autoconf is especially sensitive to this).
-  . "./$as_me.lineno"
-  # Exit status is that of the last command.
-  exit
-}
-
-ECHO_C= ECHO_N= ECHO_T=
-case `echo -n x` in #(((((
--n*)
-  case `echo 'xy\c'` in
-  *c*) ECHO_T='	';;	# ECHO_T is single tab character.
-  xy)  ECHO_C='\c';;
-  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
-       ECHO_T='	';;
-  esac;;
-*)
-  ECHO_N='-n';;
-esac
-
-rm -f conf$$ conf$$.exe conf$$.file
-if test -d conf$$.dir; then
-  rm -f conf$$.dir/conf$$.file
-else
-  rm -f conf$$.dir
-  mkdir conf$$.dir 2>/dev/null
-fi
-if (echo >conf$$.file) 2>/dev/null; then
-  if ln -s conf$$.file conf$$ 2>/dev/null; then
-    as_ln_s='ln -s'
-    # ... but there are two gotchas:
-    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
-    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
-    # In both cases, we have to default to `cp -p'.
-    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
-      as_ln_s='cp -p'
-  elif ln conf$$.file conf$$ 2>/dev/null; then
-    as_ln_s=ln
-  else
-    as_ln_s='cp -p'
-  fi
-else
-  as_ln_s='cp -p'
-fi
-rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
-rmdir conf$$.dir 2>/dev/null
-
-if mkdir -p . 2>/dev/null; then
-  as_mkdir_p='mkdir -p "$as_dir"'
-else
-  test -d ./-p && rmdir ./-p
-  as_mkdir_p=false
-fi
-
-if test -x / >/dev/null 2>&1; then
-  as_test_x='test -x'
-else
-  if ls -dL / >/dev/null 2>&1; then
-    as_ls_L_option=L
-  else
-    as_ls_L_option=
-  fi
-  as_test_x='
-    eval sh -c '\''
-      if test -d "$1"; then
-	test -d "$1/.";
-      else
-	case $1 in #(
-	-*)set "./$1";;
-	esac;
-	case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
-	???[sx]*):;;*)false;;esac;fi
-    '\'' sh
-  '
-fi
-as_executable_p=$as_test_x
-
-# Sed expression to map a string onto a valid CPP name.
-as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
-
-# Sed expression to map a string onto a valid variable name.
-as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
-
-
-
-# Check that we are running under the correct shell.
-SHELL=${CONFIG_SHELL-/bin/sh}
-
-case X$lt_ECHO in
-X*--fallback-echo)
-  # Remove one level of quotation (which was required for Make).
-  ECHO=`echo "$lt_ECHO" | sed 's,\\\\\$\\$0,'$0','`
-  ;;
-esac
-
-ECHO=${lt_ECHO-echo}
-if test "X$1" = X--no-reexec; then
-  # Discard the --no-reexec flag, and continue.
-  shift
-elif test "X$1" = X--fallback-echo; then
-  # Avoid inline document here, it may be left over
-  :
-elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' ; then
-  # Yippee, $ECHO works!
-  :
-else
-  # Restart under the correct shell.
-  exec $SHELL "$0" --no-reexec ${1+"$@"}
-fi
-
-if test "X$1" = X--fallback-echo; then
-  # used as fallback echo
-  shift
-  cat <<_LT_EOF
-$*
-_LT_EOF
-  exit 0
-fi
-
-# The HP-UX ksh and POSIX shell print the target directory to stdout
-# if CDPATH is set.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-if test -z "$lt_ECHO"; then
-  if test "X${echo_test_string+set}" != Xset; then
-    # find a string as large as possible, as long as the shell can cope with it
-    for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do
-      # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ...
-      if { echo_test_string=`eval $cmd`; } 2>/dev/null &&
-	 { test "X$echo_test_string" = "X$echo_test_string"; } 2>/dev/null
-      then
-        break
-      fi
-    done
-  fi
-
-  if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' &&
-     echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` &&
-     test "X$echo_testing_string" = "X$echo_test_string"; then
-    :
-  else
-    # The Solaris, AIX, and Digital Unix default echo programs unquote
-    # backslashes.  This makes it impossible to quote backslashes using
-    #   echo "$something" | sed 's/\\/\\\\/g'
-    #
-    # So, first we look for a working echo in the user's PATH.
-
-    lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-    for dir in $PATH /usr/ucb; do
-      IFS="$lt_save_ifs"
-      if (test -f $dir/echo || test -f $dir/echo$ac_exeext) &&
-         test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' &&
-         echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` &&
-         test "X$echo_testing_string" = "X$echo_test_string"; then
-        ECHO="$dir/echo"
-        break
-      fi
-    done
-    IFS="$lt_save_ifs"
-
-    if test "X$ECHO" = Xecho; then
-      # We didn't find a better echo, so look for alternatives.
-      if test "X`{ print -r '\t'; } 2>/dev/null`" = 'X\t' &&
-         echo_testing_string=`{ print -r "$echo_test_string"; } 2>/dev/null` &&
-         test "X$echo_testing_string" = "X$echo_test_string"; then
-        # This shell has a builtin print -r that does the trick.
-        ECHO='print -r'
-      elif { test -f /bin/ksh || test -f /bin/ksh$ac_exeext; } &&
-	   test "X$CONFIG_SHELL" != X/bin/ksh; then
-        # If we have ksh, try running configure again with it.
-        ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
-        export ORIGINAL_CONFIG_SHELL
-        CONFIG_SHELL=/bin/ksh
-        export CONFIG_SHELL
-        exec $CONFIG_SHELL "$0" --no-reexec ${1+"$@"}
-      else
-        # Try using printf.
-        ECHO='printf %s\n'
-        if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' &&
-	   echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` &&
-	   test "X$echo_testing_string" = "X$echo_test_string"; then
-	  # Cool, printf works
-	  :
-        elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` &&
-	     test "X$echo_testing_string" = 'X\t' &&
-	     echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
-	     test "X$echo_testing_string" = "X$echo_test_string"; then
-	  CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL
-	  export CONFIG_SHELL
-	  SHELL="$CONFIG_SHELL"
-	  export SHELL
-	  ECHO="$CONFIG_SHELL $0 --fallback-echo"
-        elif echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` &&
-	     test "X$echo_testing_string" = 'X\t' &&
-	     echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
-	     test "X$echo_testing_string" = "X$echo_test_string"; then
-	  ECHO="$CONFIG_SHELL $0 --fallback-echo"
-        else
-	  # maybe with a smaller string...
-	  prev=:
-
-	  for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do
-	    if { test "X$echo_test_string" = "X`eval $cmd`"; } 2>/dev/null
-	    then
-	      break
-	    fi
-	    prev="$cmd"
-	  done
-
-	  if test "$prev" != 'sed 50q "$0"'; then
-	    echo_test_string=`eval $prev`
-	    export echo_test_string
-	    exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "$0" ${1+"$@"}
-	  else
-	    # Oops.  We lost completely, so just stick with echo.
-	    ECHO=echo
-	  fi
-        fi
-      fi
-    fi
-  fi
-fi
-
-# Copy echo and quote the copy suitably for passing to libtool from
-# the Makefile, instead of quoting the original, which is used later.
-lt_ECHO=$ECHO
-if test "X$lt_ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then
-   lt_ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo"
-fi
-
-
-
-
-test -n "$DJDIR" || exec 7<&0 </dev/null
-exec 6>&1
-
-# Name of the host.
-# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status,
-# so uname gets run too.
-ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
-
-#
-# Initializations.
-#
-ac_default_prefix=/usr/local
-ac_clean_files=
-ac_config_libobj_dir=.
-LIBOBJS=
-cross_compiling=no
-subdirs=
-MFLAGS=
-MAKEFLAGS=
-
-# Identity of this package.
-PACKAGE_NAME='opensc'
-PACKAGE_TARNAME='opensc'
-PACKAGE_VERSION='0.13.0'
-PACKAGE_STRING='opensc 0.13.0'
-PACKAGE_BUGREPORT=''
-PACKAGE_URL=''
-
-ac_unique_file="src/libopensc/sc.c"
-# Factoring default headers for most tests.
-ac_includes_default="\
-#include <stdio.h>
-#ifdef HAVE_SYS_TYPES_H
-# include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_STAT_H
-# include <sys/stat.h>
-#endif
-#ifdef STDC_HEADERS
-# include <stdlib.h>
-# include <stddef.h>
-#else
-# ifdef HAVE_STDLIB_H
-#  include <stdlib.h>
-# endif
-#endif
-#ifdef HAVE_STRING_H
-# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
-#  include <memory.h>
-# endif
-# include <string.h>
-#endif
-#ifdef HAVE_STRINGS_H
-# include <strings.h>
-#endif
-#ifdef HAVE_INTTYPES_H
-# include <inttypes.h>
-#endif
-#ifdef HAVE_STDINT_H
-# include <stdint.h>
-#endif
-#ifdef HAVE_UNISTD_H
-# include <unistd.h>
-#endif"
-
-ac_subst_vars='am__EXEEXT_FALSE
-am__EXEEXT_TRUE
-LTLIBOBJS
-ENABLE_SM_FALSE
-ENABLE_SM_TRUE
-ENABLE_MINIDRIVER_FALSE
-ENABLE_MINIDRIVER_TRUE
-CYGWIN_FALSE
-CYGWIN_TRUE
-WIN32_FALSE
-WIN32_TRUE
-ENABLE_DOC_FALSE
-ENABLE_DOC_TRUE
-ENABLE_OPENCT_FALSE
-ENABLE_OPENCT_TRUE
-ENABLE_OPENSSL_FALSE
-ENABLE_OPENSSL_TRUE
-ENABLE_READLINE_FALSE
-ENABLE_READLINE_TRUE
-ENABLE_ZLIB_FALSE
-ENABLE_ZLIB_TRUE
-ENABLE_MAN_FALSE
-ENABLE_MAN_TRUE
-DEBUG_FILE
-DEFAULT_SM_MODULE
-LIBRARY_BITNESS
-OPTIONAL_PCSC_CFLAGS
-OPTIONAL_OPENCT_LIBS
-OPTIONAL_OPENCT_CFLAGS
-OPTIONAL_OPENSSL_LIBS
-OPTIONAL_OPENSSL_CFLAGS
-OPTIONAL_READLINE_LIBS
-OPTIONAL_READLINE_CFLAGS
-OPTIONAL_ZLIB_LIBS
-OPTIONAL_ZLIB_CFLAGS
-DEFAULT_PCSC_PROVIDER
-WIN_LIBPREFIX
-OPENSC_LT_OLDEST
-OPENSC_LT_AGE
-OPENSC_LT_REVISION
-OPENSC_LT_CURRENT
-OPENSC_VERSION_FIX
-OPENSC_VERSION_MINOR
-OPENSC_VERSION_MAJOR
-xslstylesheetsdir
-pkcs11dir
-PCSC_LIBS
-PCSC_CFLAGS
-OPENCT_LIBS
-OPENCT_CFLAGS
-OPENSSL_LIBS
-OPENSSL_CFLAGS
-READLINE_LIBS
-READLINE_CFLAGS
-ZLIB_LIBS
-ZLIB_CFLAGS
-PTHREAD_CFLAGS
-PTHREAD_LIBS
-PTHREAD_CC
-ax_pthread_config
-LIBOBJS
-GIT
-git
-XSLTPROC
-RC
-OTOOL64
-OTOOL
-LIPO
-NMEDIT
-DSYMUTIL
-lt_ECHO
-RANLIB
-AR
-NM
-ac_ct_DUMPBIN
-DUMPBIN
-LD
-FGREP
-LIBTOOL
-OBJDUMP
-DLLTOOL
-AS
-SED
-LN_S
-EGREP
-GREP
-CPP
-PKG_CONFIG_LIBDIR
-PKG_CONFIG_PATH
-PKG_CONFIG
-am__fastdepCC_FALSE
-am__fastdepCC_TRUE
-CCDEPMODE
-AMDEPBACKSLASH
-AMDEP_FALSE
-AMDEP_TRUE
-am__quote
-am__include
-DEPDIR
-OBJEXT
-EXEEXT
-ac_ct_CC
-CPPFLAGS
-LDFLAGS
-CFLAGS
-CC
-host_os
-host_vendor
-host_cpu
-host
-build_os
-build_vendor
-build_cpu
-build
-AM_BACKSLASH
-AM_DEFAULT_VERBOSITY
-am__untar
-am__tar
-AMTAR
-am__leading_dot
-SET_MAKE
-AWK
-mkdir_p
-MKDIR_P
-INSTALL_STRIP_PROGRAM
-STRIP
-install_sh
-MAKEINFO
-AUTOHEADER
-AUTOMAKE
-AUTOCONF
-ACLOCAL
-VERSION
-PACKAGE
-CYGPATH_W
-am__isrc
-INSTALL_DATA
-INSTALL_SCRIPT
-INSTALL_PROGRAM
-target_alias
-host_alias
-build_alias
-LIBS
-ECHO_T
-ECHO_N
-ECHO_C
-DEFS
-mandir
-localedir
-libdir
-psdir
-pdfdir
-dvidir
-htmldir
-infodir
-docdir
-oldincludedir
-includedir
-localstatedir
-sharedstatedir
-sysconfdir
-datadir
-datarootdir
-libexecdir
-sbindir
-bindir
-program_transform_name
-prefix
-exec_prefix
-PACKAGE_URL
-PACKAGE_BUGREPORT
-PACKAGE_STRING
-PACKAGE_VERSION
-PACKAGE_TARNAME
-PACKAGE_NAME
-PATH_SEPARATOR
-SHELL'
-ac_subst_files=''
-ac_user_opts='
-enable_option_checking
-enable_silent_rules
-enable_dependency_tracking
-with_cygwin_native
-enable_strict
-enable_pedantic
-enable_zlib
-enable_readline
-enable_openssl
-enable_openct
-enable_pcsc
-enable_ctapi
-enable_minidriver
-enable_sm
-enable_man
-enable_doc
-with_xsl_stylesheetsdir
-with_pcsc_provider
-enable_shared
-enable_static
-with_pic
-enable_fast_install
-with_gnu_ld
-enable_libtool_lock
-enable_assert
-'
-      ac_precious_vars='build_alias
-host_alias
-target_alias
-CC
-CFLAGS
-LDFLAGS
-LIBS
-CPPFLAGS
-PKG_CONFIG
-PKG_CONFIG_PATH
-PKG_CONFIG_LIBDIR
-CPP
-XSLTPROC
-git
-ZLIB_CFLAGS
-ZLIB_LIBS
-READLINE_CFLAGS
-READLINE_LIBS
-OPENSSL_CFLAGS
-OPENSSL_LIBS
-OPENCT_CFLAGS
-OPENCT_LIBS
-PCSC_CFLAGS
-PCSC_LIBS'
-
-
-# Initialize some variables set by options.
-ac_init_help=
-ac_init_version=false
-ac_unrecognized_opts=
-ac_unrecognized_sep=
-# The variables have the same names as the options, with
-# dashes changed to underlines.
-cache_file=/dev/null
-exec_prefix=NONE
-no_create=
-no_recursion=
-prefix=NONE
-program_prefix=NONE
-program_suffix=NONE
-program_transform_name=s,x,x,
-silent=
-site=
-srcdir=
-verbose=
-x_includes=NONE
-x_libraries=NONE
-
-# Installation directory options.
-# These are left unexpanded so users can "make install exec_prefix=/foo"
-# and all the variables that are supposed to be based on exec_prefix
-# by default will actually change.
-# Use braces instead of parens because sh, perl, etc. also accept them.
-# (The list follows the same order as the GNU Coding Standards.)
-bindir='${exec_prefix}/bin'
-sbindir='${exec_prefix}/sbin'
-libexecdir='${exec_prefix}/libexec'
-datarootdir='${prefix}/share'
-datadir='${datarootdir}'
-sysconfdir='${prefix}/etc'
-sharedstatedir='${prefix}/com'
-localstatedir='${prefix}/var'
-includedir='${prefix}/include'
-oldincludedir='/usr/include'
-docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
-infodir='${datarootdir}/info'
-htmldir='${docdir}'
-dvidir='${docdir}'
-pdfdir='${docdir}'
-psdir='${docdir}'
-libdir='${exec_prefix}/lib'
-localedir='${datarootdir}/locale'
-mandir='${datarootdir}/man'
-
-ac_prev=
-ac_dashdash=
-for ac_option
-do
-  # If the previous option needs an argument, assign it.
-  if test -n "$ac_prev"; then
-    eval $ac_prev=\$ac_option
-    ac_prev=
-    continue
-  fi
-
-  case $ac_option in
-  *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
-  *=)   ac_optarg= ;;
-  *)    ac_optarg=yes ;;
-  esac
-
-  # Accept the important Cygnus configure options, so we can diagnose typos.
-
-  case $ac_dashdash$ac_option in
-  --)
-    ac_dashdash=yes ;;
-
-  -bindir | --bindir | --bindi | --bind | --bin | --bi)
-    ac_prev=bindir ;;
-  -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
-    bindir=$ac_optarg ;;
-
-  -build | --build | --buil | --bui | --bu)
-    ac_prev=build_alias ;;
-  -build=* | --build=* | --buil=* | --bui=* | --bu=*)
-    build_alias=$ac_optarg ;;
-
-  -cache-file | --cache-file | --cache-fil | --cache-fi \
-  | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
-    ac_prev=cache_file ;;
-  -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
-  | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
-    cache_file=$ac_optarg ;;
-
-  --config-cache | -C)
-    cache_file=config.cache ;;
-
-  -datadir | --datadir | --datadi | --datad)
-    ac_prev=datadir ;;
-  -datadir=* | --datadir=* | --datadi=* | --datad=*)
-    datadir=$ac_optarg ;;
-
-  -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
-  | --dataroo | --dataro | --datar)
-    ac_prev=datarootdir ;;
-  -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
-  | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
-    datarootdir=$ac_optarg ;;
-
-  -disable-* | --disable-*)
-    ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
-    # Reject names that are not valid shell variable names.
-    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error $? "invalid feature name: $ac_useropt"
-    ac_useropt_orig=$ac_useropt
-    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
-    case $ac_user_opts in
-      *"
-"enable_$ac_useropt"
-"*) ;;
-      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig"
-	 ac_unrecognized_sep=', ';;
-    esac
-    eval enable_$ac_useropt=no ;;
-
-  -docdir | --docdir | --docdi | --doc | --do)
-    ac_prev=docdir ;;
-  -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
-    docdir=$ac_optarg ;;
-
-  -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
-    ac_prev=dvidir ;;
-  -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
-    dvidir=$ac_optarg ;;
-
-  -enable-* | --enable-*)
-    ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
-    # Reject names that are not valid shell variable names.
-    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error $? "invalid feature name: $ac_useropt"
-    ac_useropt_orig=$ac_useropt
-    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
-    case $ac_user_opts in
-      *"
-"enable_$ac_useropt"
-"*) ;;
-      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig"
-	 ac_unrecognized_sep=', ';;
-    esac
-    eval enable_$ac_useropt=\$ac_optarg ;;
-
-  -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
-  | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
-  | --exec | --exe | --ex)
-    ac_prev=exec_prefix ;;
-  -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
-  | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
-  | --exec=* | --exe=* | --ex=*)
-    exec_prefix=$ac_optarg ;;
-
-  -gas | --gas | --ga | --g)
-    # Obsolete; use --with-gas.
-    with_gas=yes ;;
-
-  -help | --help | --hel | --he | -h)
-    ac_init_help=long ;;
-  -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
-    ac_init_help=recursive ;;
-  -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
-    ac_init_help=short ;;
-
-  -host | --host | --hos | --ho)
-    ac_prev=host_alias ;;
-  -host=* | --host=* | --hos=* | --ho=*)
-    host_alias=$ac_optarg ;;
-
-  -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
-    ac_prev=htmldir ;;
-  -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
-  | --ht=*)
-    htmldir=$ac_optarg ;;
-
-  -includedir | --includedir | --includedi | --included | --include \
-  | --includ | --inclu | --incl | --inc)
-    ac_prev=includedir ;;
-  -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
-  | --includ=* | --inclu=* | --incl=* | --inc=*)
-    includedir=$ac_optarg ;;
-
-  -infodir | --infodir | --infodi | --infod | --info | --inf)
-    ac_prev=infodir ;;
-  -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
-    infodir=$ac_optarg ;;
-
-  -libdir | --libdir | --libdi | --libd)
-    ac_prev=libdir ;;
-  -libdir=* | --libdir=* | --libdi=* | --libd=*)
-    libdir=$ac_optarg ;;
-
-  -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
-  | --libexe | --libex | --libe)
-    ac_prev=libexecdir ;;
-  -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
-  | --libexe=* | --libex=* | --libe=*)
-    libexecdir=$ac_optarg ;;
-
-  -localedir | --localedir | --localedi | --localed | --locale)
-    ac_prev=localedir ;;
-  -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
-    localedir=$ac_optarg ;;
-
-  -localstatedir | --localstatedir | --localstatedi | --localstated \
-  | --localstate | --localstat | --localsta | --localst | --locals)
-    ac_prev=localstatedir ;;
-  -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
-  | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
-    localstatedir=$ac_optarg ;;
-
-  -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
-    ac_prev=mandir ;;
-  -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
-    mandir=$ac_optarg ;;
-
-  -nfp | --nfp | --nf)
-    # Obsolete; use --without-fp.
-    with_fp=no ;;
-
-  -no-create | --no-create | --no-creat | --no-crea | --no-cre \
-  | --no-cr | --no-c | -n)
-    no_create=yes ;;
-
-  -no-recursion | --no-recursion | --no-recursio | --no-recursi \
-  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
-    no_recursion=yes ;;
-
-  -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
-  | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
-  | --oldin | --oldi | --old | --ol | --o)
-    ac_prev=oldincludedir ;;
-  -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
-  | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
-  | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
-    oldincludedir=$ac_optarg ;;
-
-  -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
-    ac_prev=prefix ;;
-  -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
-    prefix=$ac_optarg ;;
-
-  -program-prefix | --program-prefix | --program-prefi | --program-pref \
-  | --program-pre | --program-pr | --program-p)
-    ac_prev=program_prefix ;;
-  -program-prefix=* | --program-prefix=* | --program-prefi=* \
-  | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
-    program_prefix=$ac_optarg ;;
-
-  -program-suffix | --program-suffix | --program-suffi | --program-suff \
-  | --program-suf | --program-su | --program-s)
-    ac_prev=program_suffix ;;
-  -program-suffix=* | --program-suffix=* | --program-suffi=* \
-  | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
-    program_suffix=$ac_optarg ;;
-
-  -program-transform-name | --program-transform-name \
-  | --program-transform-nam | --program-transform-na \
-  | --program-transform-n | --program-transform- \
-  | --program-transform | --program-transfor \
-  | --program-transfo | --program-transf \
-  | --program-trans | --program-tran \
-  | --progr-tra | --program-tr | --program-t)
-    ac_prev=program_transform_name ;;
-  -program-transform-name=* | --program-transform-name=* \
-  | --program-transform-nam=* | --program-transform-na=* \
-  | --program-transform-n=* | --program-transform-=* \
-  | --program-transform=* | --program-transfor=* \
-  | --program-transfo=* | --program-transf=* \
-  | --program-trans=* | --program-tran=* \
-  | --progr-tra=* | --program-tr=* | --program-t=*)
-    program_transform_name=$ac_optarg ;;
-
-  -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
-    ac_prev=pdfdir ;;
-  -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
-    pdfdir=$ac_optarg ;;
-
-  -psdir | --psdir | --psdi | --psd | --ps)
-    ac_prev=psdir ;;
-  -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
-    psdir=$ac_optarg ;;
-
-  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
-  | -silent | --silent | --silen | --sile | --sil)
-    silent=yes ;;
-
-  -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
-    ac_prev=sbindir ;;
-  -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
-  | --sbi=* | --sb=*)
-    sbindir=$ac_optarg ;;
-
-  -sharedstatedir | --sharedstatedir | --sharedstatedi \
-  | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
-  | --sharedst | --shareds | --shared | --share | --shar \
-  | --sha | --sh)
-    ac_prev=sharedstatedir ;;
-  -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
-  | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
-  | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
-  | --sha=* | --sh=*)
-    sharedstatedir=$ac_optarg ;;
-
-  -site | --site | --sit)
-    ac_prev=site ;;
-  -site=* | --site=* | --sit=*)
-    site=$ac_optarg ;;
-
-  -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
-    ac_prev=srcdir ;;
-  -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
-    srcdir=$ac_optarg ;;
-
-  -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
-  | --syscon | --sysco | --sysc | --sys | --sy)
-    ac_prev=sysconfdir ;;
-  -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
-  | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
-    sysconfdir=$ac_optarg ;;
-
-  -target | --target | --targe | --targ | --tar | --ta | --t)
-    ac_prev=target_alias ;;
-  -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
-    target_alias=$ac_optarg ;;
-
-  -v | -verbose | --verbose | --verbos | --verbo | --verb)
-    verbose=yes ;;
-
-  -version | --version | --versio | --versi | --vers | -V)
-    ac_init_version=: ;;
-
-  -with-* | --with-*)
-    ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
-    # Reject names that are not valid shell variable names.
-    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error $? "invalid package name: $ac_useropt"
-    ac_useropt_orig=$ac_useropt
-    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
-    case $ac_user_opts in
-      *"
-"with_$ac_useropt"
-"*) ;;
-      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig"
-	 ac_unrecognized_sep=', ';;
-    esac
-    eval with_$ac_useropt=\$ac_optarg ;;
-
-  -without-* | --without-*)
-    ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
-    # Reject names that are not valid shell variable names.
-    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error $? "invalid package name: $ac_useropt"
-    ac_useropt_orig=$ac_useropt
-    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
-    case $ac_user_opts in
-      *"
-"with_$ac_useropt"
-"*) ;;
-      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig"
-	 ac_unrecognized_sep=', ';;
-    esac
-    eval with_$ac_useropt=no ;;
-
-  --x)
-    # Obsolete; use --with-x.
-    with_x=yes ;;
-
-  -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
-  | --x-incl | --x-inc | --x-in | --x-i)
-    ac_prev=x_includes ;;
-  -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
-  | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
-    x_includes=$ac_optarg ;;
-
-  -x-libraries | --x-libraries | --x-librarie | --x-librari \
-  | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
-    ac_prev=x_libraries ;;
-  -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
-  | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
-    x_libraries=$ac_optarg ;;
-
-  -*) as_fn_error $? "unrecognized option: \`$ac_option'
-Try \`$0 --help' for more information"
-    ;;
-
-  *=*)
-    ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
-    # Reject names that are not valid shell variable names.
-    case $ac_envvar in #(
-      '' | [0-9]* | *[!_$as_cr_alnum]* )
-      as_fn_error $? "invalid variable name: \`$ac_envvar'" ;;
-    esac
-    eval $ac_envvar=\$ac_optarg
-    export $ac_envvar ;;
-
-  *)
-    # FIXME: should be removed in autoconf 3.0.
-    $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
-    expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
-      $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
-    : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}
-    ;;
-
-  esac
-done
-
-if test -n "$ac_prev"; then
-  ac_option=--`echo $ac_prev | sed 's/_/-/g'`
-  as_fn_error $? "missing argument to $ac_option"
-fi
-
-if test -n "$ac_unrecognized_opts"; then
-  case $enable_option_checking in
-    no) ;;
-    fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;;
-    *)     $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
-  esac
-fi
-
-# Check all directory arguments for consistency.
-for ac_var in	exec_prefix prefix bindir sbindir libexecdir datarootdir \
-		datadir sysconfdir sharedstatedir localstatedir includedir \
-		oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
-		libdir localedir mandir
-do
-  eval ac_val=\$$ac_var
-  # Remove trailing slashes.
-  case $ac_val in
-    */ )
-      ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'`
-      eval $ac_var=\$ac_val;;
-  esac
-  # Be sure to have absolute directory names.
-  case $ac_val in
-    [\\/$]* | ?:[\\/]* )  continue;;
-    NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
-  esac
-  as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val"
-done
-
-# There might be people who depend on the old broken behavior: `$host'
-# used to hold the argument of --host etc.
-# FIXME: To remove some day.
-build=$build_alias
-host=$host_alias
-target=$target_alias
-
-# FIXME: To remove some day.
-if test "x$host_alias" != x; then
-  if test "x$build_alias" = x; then
-    cross_compiling=maybe
-    $as_echo "$as_me: WARNING: if you wanted to set the --build type, don't use --host.
-    If a cross compiler is detected then cross compile mode will be used" >&2
-  elif test "x$build_alias" != "x$host_alias"; then
-    cross_compiling=yes
-  fi
-fi
-
-ac_tool_prefix=
-test -n "$host_alias" && ac_tool_prefix=$host_alias-
-
-test "$silent" = yes && exec 6>/dev/null
-
-
-ac_pwd=`pwd` && test -n "$ac_pwd" &&
-ac_ls_di=`ls -di .` &&
-ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
-  as_fn_error $? "working directory cannot be determined"
-test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
-  as_fn_error $? "pwd does not report name of working directory"
-
-
-# Find the source files, if location was not specified.
-if test -z "$srcdir"; then
-  ac_srcdir_defaulted=yes
-  # Try the directory containing this script, then the parent directory.
-  ac_confdir=`$as_dirname -- "$as_myself" ||
-$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$as_myself" : 'X\(//\)[^/]' \| \
-	 X"$as_myself" : 'X\(//\)$' \| \
-	 X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_myself" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)[^/].*/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`
-  srcdir=$ac_confdir
-  if test ! -r "$srcdir/$ac_unique_file"; then
-    srcdir=..
-  fi
-else
-  ac_srcdir_defaulted=no
-fi
-if test ! -r "$srcdir/$ac_unique_file"; then
-  test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
-  as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir"
-fi
-ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
-ac_abs_confdir=`(
-	cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg"
-	pwd)`
-# When building in place, set srcdir=.
-if test "$ac_abs_confdir" = "$ac_pwd"; then
-  srcdir=.
-fi
-# Remove unnecessary trailing slashes from srcdir.
-# Double slashes in file names in object file debugging info
-# mess up M-x gdb in Emacs.
-case $srcdir in
-*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
-esac
-for ac_var in $ac_precious_vars; do
-  eval ac_env_${ac_var}_set=\${${ac_var}+set}
-  eval ac_env_${ac_var}_value=\$${ac_var}
-  eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
-  eval ac_cv_env_${ac_var}_value=\$${ac_var}
-done
-
-#
-# Report the --help message.
-#
-if test "$ac_init_help" = "long"; then
-  # Omit some internal or obsolete options to make the list less imposing.
-  # This message is too long to be a string in the A/UX 3.1 sh.
-  cat <<_ACEOF
-\`configure' configures opensc 0.13.0 to adapt to many kinds of systems.
-
-Usage: $0 [OPTION]... [VAR=VALUE]...
-
-To assign environment variables (e.g., CC, CFLAGS...), specify them as
-VAR=VALUE.  See below for descriptions of some of the useful variables.
-
-Defaults for the options are specified in brackets.
-
-Configuration:
-  -h, --help              display this help and exit
-      --help=short        display options specific to this package
-      --help=recursive    display the short help of all the included packages
-  -V, --version           display version information and exit
-  -q, --quiet, --silent   do not print \`checking ...' messages
-      --cache-file=FILE   cache test results in FILE [disabled]
-  -C, --config-cache      alias for \`--cache-file=config.cache'
-  -n, --no-create         do not create output files
-      --srcdir=DIR        find the sources in DIR [configure dir or \`..']
-
-Installation directories:
-  --prefix=PREFIX         install architecture-independent files in PREFIX
-                          [$ac_default_prefix]
-  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
-                          [PREFIX]
-
-By default, \`make install' will install all the files in
-\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc.  You can specify
-an installation prefix other than \`$ac_default_prefix' using \`--prefix',
-for instance \`--prefix=\$HOME'.
-
-For better control, use the options below.
-
-Fine tuning of the installation directories:
-  --bindir=DIR            user executables [EPREFIX/bin]
-  --sbindir=DIR           system admin executables [EPREFIX/sbin]
-  --libexecdir=DIR        program executables [EPREFIX/libexec]
-  --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
-  --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
-  --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
-  --libdir=DIR            object code libraries [EPREFIX/lib]
-  --includedir=DIR        C header files [PREFIX/include]
-  --oldincludedir=DIR     C header files for non-gcc [/usr/include]
-  --datarootdir=DIR       read-only arch.-independent data root [PREFIX/share]
-  --datadir=DIR           read-only architecture-independent data [DATAROOTDIR]
-  --infodir=DIR           info documentation [DATAROOTDIR/info]
-  --localedir=DIR         locale-dependent data [DATAROOTDIR/locale]
-  --mandir=DIR            man documentation [DATAROOTDIR/man]
-  --docdir=DIR            documentation root [DATAROOTDIR/doc/opensc]
-  --htmldir=DIR           html documentation [DOCDIR]
-  --dvidir=DIR            dvi documentation [DOCDIR]
-  --pdfdir=DIR            pdf documentation [DOCDIR]
-  --psdir=DIR             ps documentation [DOCDIR]
-_ACEOF
-
-  cat <<\_ACEOF
-
-Program names:
-  --program-prefix=PREFIX            prepend PREFIX to installed program names
-  --program-suffix=SUFFIX            append SUFFIX to installed program names
-  --program-transform-name=PROGRAM   run sed PROGRAM on installed program names
-
-System types:
-  --build=BUILD     configure for building on BUILD [guessed]
-  --host=HOST       cross-compile to build programs to run on HOST [BUILD]
-_ACEOF
-fi
-
-if test -n "$ac_init_help"; then
-  case $ac_init_help in
-     short | recursive ) echo "Configuration of opensc 0.13.0:";;
-   esac
-  cat <<\_ACEOF
-
-Optional Features:
-  --disable-option-checking  ignore unrecognized --enable/--with options
-  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
-  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
-  --enable-silent-rules          less verbose build output (undo: `make V=1')
-  --disable-silent-rules         verbose build output (undo: `make V=0')
-  --disable-dependency-tracking  speeds up one-time build
-  --enable-dependency-tracking   do not reject slow dependency extractors
-  --enable-strict         enable strict compile mode [disabled]
-  --enable-pedantic       enable pedantic compile mode [disabled]
-  --enable-zlib           enable zlib linkage [detect]
-  --enable-readline       enable readline linkage [detect]
-  --enable-openssl        enable openssl linkage [detect]
-  --enable-openct         enable openct linkage [disabled]
-  --disable-pcsc          disable pcsc support [enabled]
-  --enable-ctapi          enable CT-API support [disabled]
-  --enable-minidriver     enable minidriver on Windows [disabled]
-  --enable-sm             enable secure messaging support and modules
-                          [disabled]
-  --disable-man           disable installation of manuals [enabled for none
-                          Windows]
-  --enable-doc            enable installation of documents [disabled]
-  --enable-shared[=PKGS]  build shared libraries [default=yes]
-  --enable-static[=PKGS]  build static libraries [default=yes]
-  --enable-fast-install[=PKGS]
-                          optimize for fast installation [default=yes]
-  --disable-libtool-lock  avoid locking (might break parallel builds)
-  --disable-assert        turn off assertions
-
-Optional Packages:
-  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
-  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
-  --with-cygwin-native    compile native win32
-  --with-xsl-stylesheetsdir=PATH
-                          docbook xsl-stylesheets for svn build [detect]
-  --with-pcsc-provider=PATH
-                          Path to system pcsc provider [system default]
-  --with-pic              try to use only PIC/non-PIC objects [default=use
-                          both]
-  --with-gnu-ld           assume the C compiler uses GNU ld [default=no]
-
-Some influential environment variables:
-  CC          C compiler command
-  CFLAGS      C compiler flags
-  LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
-              nonstandard directory <lib dir>
-  LIBS        libraries to pass to the linker, e.g. -l<library>
-  CPPFLAGS    (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
-              you have headers in a nonstandard directory <include dir>
-  PKG_CONFIG  path to pkg-config utility
-  PKG_CONFIG_PATH
-              directories to add to pkg-config's search path
-  PKG_CONFIG_LIBDIR
-              path overriding pkg-config's built-in search path
-  CPP         C preprocessor
-  XSLTPROC    xsltproc utility
-  git         git
-  ZLIB_CFLAGS C compiler flags for zlib
-  ZLIB_LIBS   linker flags for zlib
-  READLINE_CFLAGS
-              C compiler flags for readline
-  READLINE_LIBS
-              linker flags for readline
-  OPENSSL_CFLAGS
-              C compiler flags for OPENSSL, overriding pkg-config
-  OPENSSL_LIBS
-              linker flags for OPENSSL, overriding pkg-config
-  OPENCT_CFLAGS
-              C compiler flags for OPENCT, overriding pkg-config
-  OPENCT_LIBS linker flags for OPENCT, overriding pkg-config
-  PCSC_CFLAGS C compiler flags for PCSC, overriding pkg-config
-  PCSC_LIBS   linker flags for PCSC, overriding pkg-config
-
-Use these variables to override the choices made by `configure' or to help
-it to find libraries and programs with nonstandard names/locations.
-
-Report bugs to the package provider.
-_ACEOF
-ac_status=$?
-fi
-
-if test "$ac_init_help" = "recursive"; then
-  # If there are subdirs, report their specific --help.
-  for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
-    test -d "$ac_dir" ||
-      { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } ||
-      continue
-    ac_builddir=.
-
-case "$ac_dir" in
-.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
-*)
-  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
-  # A ".." for each directory in $ac_dir_suffix.
-  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
-  case $ac_top_builddir_sub in
-  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
-  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
-  esac ;;
-esac
-ac_abs_top_builddir=$ac_pwd
-ac_abs_builddir=$ac_pwd$ac_dir_suffix
-# for backward compatibility:
-ac_top_builddir=$ac_top_build_prefix
-
-case $srcdir in
-  .)  # We are building in place.
-    ac_srcdir=.
-    ac_top_srcdir=$ac_top_builddir_sub
-    ac_abs_top_srcdir=$ac_pwd ;;
-  [\\/]* | ?:[\\/]* )  # Absolute name.
-    ac_srcdir=$srcdir$ac_dir_suffix;
-    ac_top_srcdir=$srcdir
-    ac_abs_top_srcdir=$srcdir ;;
-  *) # Relative name.
-    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
-    ac_top_srcdir=$ac_top_build_prefix$srcdir
-    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
-esac
-ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
-
-    cd "$ac_dir" || { ac_status=$?; continue; }
-    # Check for guested configure.
-    if test -f "$ac_srcdir/configure.gnu"; then
-      echo &&
-      $SHELL "$ac_srcdir/configure.gnu" --help=recursive
-    elif test -f "$ac_srcdir/configure"; then
-      echo &&
-      $SHELL "$ac_srcdir/configure" --help=recursive
-    else
-      $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
-    fi || ac_status=$?
-    cd "$ac_pwd" || { ac_status=$?; break; }
-  done
-fi
-
-test -n "$ac_init_help" && exit $ac_status
-if $ac_init_version; then
-  cat <<\_ACEOF
-opensc configure 0.13.0
-generated by GNU Autoconf 2.67
-
-Copyright (C) 2010 Free Software Foundation, Inc.
-This configure script is free software; the Free Software Foundation
-gives unlimited permission to copy, distribute and modify it.
-_ACEOF
-  exit
-fi
-
-## ------------------------ ##
-## Autoconf initialization. ##
-## ------------------------ ##
-
-# ac_fn_c_try_compile LINENO
-# --------------------------
-# Try to compile conftest.$ac_ext, and return whether this succeeded.
-ac_fn_c_try_compile ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  rm -f conftest.$ac_objext
-  if { { ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_compile") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    grep -v '^ *+' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-    mv -f conftest.er1 conftest.err
-  fi
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then :
-  ac_retval=0
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_retval=1
-fi
-  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
-  as_fn_set_status $ac_retval
-
-} # ac_fn_c_try_compile
-
-# ac_fn_c_try_run LINENO
-# ----------------------
-# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
-# that executables *can* be run.
-ac_fn_c_try_run ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  if { { ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
-  { { case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; }; then :
-  ac_retval=0
-else
-  $as_echo "$as_me: program exited with status $ac_status" >&5
-       $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_retval=$ac_status
-fi
-  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
-  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
-  as_fn_set_status $ac_retval
-
-} # ac_fn_c_try_run
-
-# ac_fn_c_try_cpp LINENO
-# ----------------------
-# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
-ac_fn_c_try_cpp ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  if { { ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    grep -v '^ *+' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-    mv -f conftest.er1 conftest.err
-  fi
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } > conftest.i && {
-	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       }; then :
-  ac_retval=0
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-    ac_retval=1
-fi
-  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
-  as_fn_set_status $ac_retval
-
-} # ac_fn_c_try_cpp
-
-# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
-# -------------------------------------------------------
-# Tests whether HEADER exists and can be compiled using the include files in
-# INCLUDES, setting the cache variable VAR accordingly.
-ac_fn_c_check_header_compile ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval "test \"\${$3+set}\"" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$4
-#include <$2>
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  eval "$3=yes"
-else
-  eval "$3=no"
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-eval ac_res=\$$3
-	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
-
-} # ac_fn_c_check_header_compile
-
-# ac_fn_c_try_link LINENO
-# -----------------------
-# Try to link conftest.$ac_ext, and return whether this succeeded.
-ac_fn_c_try_link ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  rm -f conftest.$ac_objext conftest$ac_exeext
-  if { { ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    grep -v '^ *+' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-    mv -f conftest.er1 conftest.err
-  fi
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then :
-  ac_retval=0
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_retval=1
-fi
-  # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
-  # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
-  # interfere with the next link command; also delete a directory that is
-  # left behind by Apple's compiler.  We do this before executing the actions.
-  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
-  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
-  as_fn_set_status $ac_retval
-
-} # ac_fn_c_try_link
-
-# ac_fn_c_check_func LINENO FUNC VAR
-# ----------------------------------
-# Tests whether FUNC exists, setting the cache variable VAR accordingly
-ac_fn_c_check_func ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval "test \"\${$3+set}\"" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-/* Define $2 to an innocuous variant, in case <limits.h> declares $2.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define $2 innocuous_$2
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $2 (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $2
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char $2 ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined __stub_$2 || defined __stub___$2
-choke me
-#endif
-
-int
-main ()
-{
-return $2 ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  eval "$3=yes"
-else
-  eval "$3=no"
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-fi
-eval ac_res=\$$3
-	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
-
-} # ac_fn_c_check_func
-
-# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
-# -------------------------------------------------------
-# Tests whether HEADER exists, giving a warning if it cannot be compiled using
-# the include files in INCLUDES and setting the cache variable VAR
-# accordingly.
-ac_fn_c_check_header_mongrel ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  if eval "test \"\${$3+set}\"" = set; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval "test \"\${$3+set}\"" = set; then :
-  $as_echo_n "(cached) " >&6
-fi
-eval ac_res=\$$3
-	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-else
-  # Is the header compilable?
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5
-$as_echo_n "checking $2 usability... " >&6; }
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$4
-#include <$2>
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_header_compiler=yes
-else
-  ac_header_compiler=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5
-$as_echo "$ac_header_compiler" >&6; }
-
-# Is the header present?
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5
-$as_echo_n "checking $2 presence... " >&6; }
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <$2>
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-  ac_header_preproc=yes
-else
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
-$as_echo "$ac_header_preproc" >&6; }
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #((
-  yes:no: )
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5
-$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
-    ;;
-  no:yes:* )
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5
-$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     check for missing prerequisite headers?" >&5
-$as_echo "$as_me: WARNING: $2:     check for missing prerequisite headers?" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5
-$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&5
-$as_echo "$as_me: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
-    ;;
-esac
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval "test \"\${$3+set}\"" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  eval "$3=\$ac_header_compiler"
-fi
-eval ac_res=\$$3
-	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-fi
-  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
-
-} # ac_fn_c_check_header_mongrel
-
-# ac_fn_c_check_type LINENO TYPE VAR INCLUDES
-# -------------------------------------------
-# Tests whether TYPE exists after having included INCLUDES, setting cache
-# variable VAR accordingly.
-ac_fn_c_check_type ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval "test \"\${$3+set}\"" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  eval "$3=no"
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$4
-int
-main ()
-{
-if (sizeof ($2))
-	 return 0;
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$4
-int
-main ()
-{
-if (sizeof (($2)))
-	    return 0;
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-
-else
-  eval "$3=yes"
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-eval ac_res=\$$3
-	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
-
-} # ac_fn_c_check_type
-
-# ac_fn_c_compute_int LINENO EXPR VAR INCLUDES
-# --------------------------------------------
-# Tries to find the compile-time value of EXPR in a program that includes
-# INCLUDES, setting VAR accordingly. Returns whether the value could be
-# computed
-ac_fn_c_compute_int ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  if test "$cross_compiling" = yes; then
-    # Depending upon the size, compute the lo and hi bounds.
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$4
-int
-main ()
-{
-static int test_array [1 - 2 * !(($2) >= 0)];
-test_array [0] = 0
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_lo=0 ac_mid=0
-  while :; do
-    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$4
-int
-main ()
-{
-static int test_array [1 - 2 * !(($2) <= $ac_mid)];
-test_array [0] = 0
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_hi=$ac_mid; break
-else
-  as_fn_arith $ac_mid + 1 && ac_lo=$as_val
-			if test $ac_lo -le $ac_mid; then
-			  ac_lo= ac_hi=
-			  break
-			fi
-			as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-  done
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$4
-int
-main ()
-{
-static int test_array [1 - 2 * !(($2) < 0)];
-test_array [0] = 0
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_hi=-1 ac_mid=-1
-  while :; do
-    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$4
-int
-main ()
-{
-static int test_array [1 - 2 * !(($2) >= $ac_mid)];
-test_array [0] = 0
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_lo=$ac_mid; break
-else
-  as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val
-			if test $ac_mid -le $ac_hi; then
-			  ac_lo= ac_hi=
-			  break
-			fi
-			as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-  done
-else
-  ac_lo= ac_hi=
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-# Binary search between lo and hi bounds.
-while test "x$ac_lo" != "x$ac_hi"; do
-  as_fn_arith '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo && ac_mid=$as_val
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$4
-int
-main ()
-{
-static int test_array [1 - 2 * !(($2) <= $ac_mid)];
-test_array [0] = 0
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_hi=$ac_mid
-else
-  as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-done
-case $ac_lo in #((
-?*) eval "$3=\$ac_lo"; ac_retval=0 ;;
-'') ac_retval=1 ;;
-esac
-  else
-    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$4
-static long int longval () { return $2; }
-static unsigned long int ulongval () { return $2; }
-#include <stdio.h>
-#include <stdlib.h>
-int
-main ()
-{
-
-  FILE *f = fopen ("conftest.val", "w");
-  if (! f)
-    return 1;
-  if (($2) < 0)
-    {
-      long int i = longval ();
-      if (i != ($2))
-	return 1;
-      fprintf (f, "%ld", i);
-    }
-  else
-    {
-      unsigned long int i = ulongval ();
-      if (i != ($2))
-	return 1;
-      fprintf (f, "%lu", i);
-    }
-  /* Do not output a trailing newline, as this causes \r\n confusion
-     on some platforms.  */
-  return ferror (f) || fclose (f) != 0;
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  echo >>conftest.val; read $3 <conftest.val; ac_retval=0
-else
-  ac_retval=1
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-rm -f conftest.val
-
-  fi
-  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
-  as_fn_set_status $ac_retval
-
-} # ac_fn_c_compute_int
-cat >config.log <<_ACEOF
-This file contains any messages produced by compilers while
-running configure, to aid debugging if configure makes a mistake.
-
-It was created by opensc $as_me 0.13.0, which was
-generated by GNU Autoconf 2.67.  Invocation command line was
-
-  $ $0 $@
-
-_ACEOF
-exec 5>>config.log
-{
-cat <<_ASUNAME
-## --------- ##
-## Platform. ##
-## --------- ##
-
-hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
-uname -m = `(uname -m) 2>/dev/null || echo unknown`
-uname -r = `(uname -r) 2>/dev/null || echo unknown`
-uname -s = `(uname -s) 2>/dev/null || echo unknown`
-uname -v = `(uname -v) 2>/dev/null || echo unknown`
-
-/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
-/bin/uname -X     = `(/bin/uname -X) 2>/dev/null     || echo unknown`
-
-/bin/arch              = `(/bin/arch) 2>/dev/null              || echo unknown`
-/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null       || echo unknown`
-/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
-/usr/bin/hostinfo      = `(/usr/bin/hostinfo) 2>/dev/null      || echo unknown`
-/bin/machine           = `(/bin/machine) 2>/dev/null           || echo unknown`
-/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null       || echo unknown`
-/bin/universe          = `(/bin/universe) 2>/dev/null          || echo unknown`
-
-_ASUNAME
-
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    $as_echo "PATH: $as_dir"
-  done
-IFS=$as_save_IFS
-
-} >&5
-
-cat >&5 <<_ACEOF
-
-
-## ----------- ##
-## Core tests. ##
-## ----------- ##
-
-_ACEOF
-
-
-# Keep a trace of the command line.
-# Strip out --no-create and --no-recursion so they do not pile up.
-# Strip out --silent because we don't want to record it for future runs.
-# Also quote any args containing shell meta-characters.
-# Make two passes to allow for proper duplicate-argument suppression.
-ac_configure_args=
-ac_configure_args0=
-ac_configure_args1=
-ac_must_keep_next=false
-for ac_pass in 1 2
-do
-  for ac_arg
-  do
-    case $ac_arg in
-    -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
-    -q | -quiet | --quiet | --quie | --qui | --qu | --q \
-    | -silent | --silent | --silen | --sile | --sil)
-      continue ;;
-    *\'*)
-      ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
-    esac
-    case $ac_pass in
-    1) as_fn_append ac_configure_args0 " '$ac_arg'" ;;
-    2)
-      as_fn_append ac_configure_args1 " '$ac_arg'"
-      if test $ac_must_keep_next = true; then
-	ac_must_keep_next=false # Got value, back to normal.
-      else
-	case $ac_arg in
-	  *=* | --config-cache | -C | -disable-* | --disable-* \
-	  | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
-	  | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
-	  | -with-* | --with-* | -without-* | --without-* | --x)
-	    case "$ac_configure_args0 " in
-	      "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
-	    esac
-	    ;;
-	  -* ) ac_must_keep_next=true ;;
-	esac
-      fi
-      as_fn_append ac_configure_args " '$ac_arg'"
-      ;;
-    esac
-  done
-done
-{ ac_configure_args0=; unset ac_configure_args0;}
-{ ac_configure_args1=; unset ac_configure_args1;}
-
-# When interrupted or exit'd, cleanup temporary files, and complete
-# config.log.  We remove comments because anyway the quotes in there
-# would cause problems or look ugly.
-# WARNING: Use '\'' to represent an apostrophe within the trap.
-# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
-trap 'exit_status=$?
-  # Save into config.log some information that might help in debugging.
-  {
-    echo
-
-    $as_echo "## ---------------- ##
-## Cache variables. ##
-## ---------------- ##"
-    echo
-    # The following way of writing the cache mishandles newlines in values,
-(
-  for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
-    eval ac_val=\$$ac_var
-    case $ac_val in #(
-    *${as_nl}*)
-      case $ac_var in #(
-      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
-$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
-      esac
-      case $ac_var in #(
-      _ | IFS | as_nl) ;; #(
-      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
-      *) { eval $ac_var=; unset $ac_var;} ;;
-      esac ;;
-    esac
-  done
-  (set) 2>&1 |
-    case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
-    *${as_nl}ac_space=\ *)
-      sed -n \
-	"s/'\''/'\''\\\\'\'''\''/g;
-	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
-      ;; #(
-    *)
-      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
-      ;;
-    esac |
-    sort
-)
-    echo
-
-    $as_echo "## ----------------- ##
-## Output variables. ##
-## ----------------- ##"
-    echo
-    for ac_var in $ac_subst_vars
-    do
-      eval ac_val=\$$ac_var
-      case $ac_val in
-      *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
-      esac
-      $as_echo "$ac_var='\''$ac_val'\''"
-    done | sort
-    echo
-
-    if test -n "$ac_subst_files"; then
-      $as_echo "## ------------------- ##
-## File substitutions. ##
-## ------------------- ##"
-      echo
-      for ac_var in $ac_subst_files
-      do
-	eval ac_val=\$$ac_var
-	case $ac_val in
-	*\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
-	esac
-	$as_echo "$ac_var='\''$ac_val'\''"
-      done | sort
-      echo
-    fi
-
-    if test -s confdefs.h; then
-      $as_echo "## ----------- ##
-## confdefs.h. ##
-## ----------- ##"
-      echo
-      cat confdefs.h
-      echo
-    fi
-    test "$ac_signal" != 0 &&
-      $as_echo "$as_me: caught signal $ac_signal"
-    $as_echo "$as_me: exit $exit_status"
-  } >&5
-  rm -f core *.core core.conftest.* &&
-    rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
-    exit $exit_status
-' 0
-for ac_signal in 1 2 13 15; do
-  trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal
-done
-ac_signal=0
-
-# confdefs.h avoids OS command line length limits that DEFS can exceed.
-rm -f -r conftest* confdefs.h
-
-$as_echo "/* confdefs.h */" > confdefs.h
-
-# Predefined preprocessor variables.
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_NAME "$PACKAGE_NAME"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_VERSION "$PACKAGE_VERSION"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_STRING "$PACKAGE_STRING"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_URL "$PACKAGE_URL"
-_ACEOF
-
-
-# Let the site file select an alternate cache file if it wants to.
-# Prefer an explicitly selected file to automatically selected ones.
-ac_site_file1=NONE
-ac_site_file2=NONE
-if test -n "$CONFIG_SITE"; then
-  # We do not want a PATH search for config.site.
-  case $CONFIG_SITE in #((
-    -*)  ac_site_file1=./$CONFIG_SITE;;
-    */*) ac_site_file1=$CONFIG_SITE;;
-    *)   ac_site_file1=./$CONFIG_SITE;;
-  esac
-elif test "x$prefix" != xNONE; then
-  ac_site_file1=$prefix/share/config.site
-  ac_site_file2=$prefix/etc/config.site
-else
-  ac_site_file1=$ac_default_prefix/share/config.site
-  ac_site_file2=$ac_default_prefix/etc/config.site
-fi
-for ac_site_file in "$ac_site_file1" "$ac_site_file2"
-do
-  test "x$ac_site_file" = xNONE && continue
-  if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
-$as_echo "$as_me: loading site script $ac_site_file" >&6;}
-    sed 's/^/| /' "$ac_site_file" >&5
-    . "$ac_site_file" \
-      || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "failed to load site script $ac_site_file
-See \`config.log' for more details" "$LINENO" 5 ; }
-  fi
-done
-
-if test -r "$cache_file"; then
-  # Some versions of bash will fail to source /dev/null (special files
-  # actually), so we avoid doing that.  DJGPP emulates it as a regular file.
-  if test /dev/null != "$cache_file" && test -f "$cache_file"; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
-$as_echo "$as_me: loading cache $cache_file" >&6;}
-    case $cache_file in
-      [\\/]* | ?:[\\/]* ) . "$cache_file";;
-      *)                      . "./$cache_file";;
-    esac
-  fi
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
-$as_echo "$as_me: creating cache $cache_file" >&6;}
-  >$cache_file
-fi
-
-# Check that the precious variables saved in the cache have kept the same
-# value.
-ac_cache_corrupted=false
-for ac_var in $ac_precious_vars; do
-  eval ac_old_set=\$ac_cv_env_${ac_var}_set
-  eval ac_new_set=\$ac_env_${ac_var}_set
-  eval ac_old_val=\$ac_cv_env_${ac_var}_value
-  eval ac_new_val=\$ac_env_${ac_var}_value
-  case $ac_old_set,$ac_new_set in
-    set,)
-      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
-$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
-      ac_cache_corrupted=: ;;
-    ,set)
-      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
-$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
-      ac_cache_corrupted=: ;;
-    ,);;
-    *)
-      if test "x$ac_old_val" != "x$ac_new_val"; then
-	# differences in whitespace do not lead to failure.
-	ac_old_val_w=`echo x $ac_old_val`
-	ac_new_val_w=`echo x $ac_new_val`
-	if test "$ac_old_val_w" != "$ac_new_val_w"; then
-	  { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
-$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
-	  ac_cache_corrupted=:
-	else
-	  { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
-$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
-	  eval $ac_var=\$ac_old_val
-	fi
-	{ $as_echo "$as_me:${as_lineno-$LINENO}:   former value:  \`$ac_old_val'" >&5
-$as_echo "$as_me:   former value:  \`$ac_old_val'" >&2;}
-	{ $as_echo "$as_me:${as_lineno-$LINENO}:   current value: \`$ac_new_val'" >&5
-$as_echo "$as_me:   current value: \`$ac_new_val'" >&2;}
-      fi;;
-  esac
-  # Pass precious variables to config.status.
-  if test "$ac_new_set" = set; then
-    case $ac_new_val in
-    *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
-    *) ac_arg=$ac_var=$ac_new_val ;;
-    esac
-    case " $ac_configure_args " in
-      *" '$ac_arg' "*) ;; # Avoid dups.  Use of quotes ensures accuracy.
-      *) as_fn_append ac_configure_args " '$ac_arg'" ;;
-    esac
-  fi
-done
-if $ac_cache_corrupted; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-  { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
-$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
-  as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
-fi
-## -------------------- ##
-## Main body of script. ##
-## -------------------- ##
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-ac_aux_dir=
-for ac_dir in . "$srcdir"/.; do
-  if test -f "$ac_dir/install-sh"; then
-    ac_aux_dir=$ac_dir
-    ac_install_sh="$ac_aux_dir/install-sh -c"
-    break
-  elif test -f "$ac_dir/install.sh"; then
-    ac_aux_dir=$ac_dir
-    ac_install_sh="$ac_aux_dir/install.sh -c"
-    break
-  elif test -f "$ac_dir/shtool"; then
-    ac_aux_dir=$ac_dir
-    ac_install_sh="$ac_aux_dir/shtool install -c"
-    break
-  fi
-done
-if test -z "$ac_aux_dir"; then
-  as_fn_error $? "cannot find install-sh, install.sh, or shtool in . \"$srcdir\"/." "$LINENO" 5
-fi
-
-# These three variables are undocumented and unsupported,
-# and are intended to be withdrawn in a future Autoconf release.
-# They can cause serious problems if a builder's source tree is in a directory
-# whose full name contains unusual characters.
-ac_config_guess="$SHELL $ac_aux_dir/config.guess"  # Please don't use this var.
-ac_config_sub="$SHELL $ac_aux_dir/config.sub"  # Please don't use this var.
-ac_configure="$SHELL $ac_aux_dir/configure"  # Please don't use this var.
-
-
-ac_config_headers="$ac_config_headers config.h"
-
-
-am__api_version='1.11'
-
-# Find a good install program.  We prefer a C program (faster),
-# so one script is as good as another.  But avoid the broken or
-# incompatible versions:
-# SysV /etc/install, /usr/sbin/install
-# SunOS /usr/etc/install
-# IRIX /sbin/install
-# AIX /bin/install
-# AmigaOS /C/install, which installs bootblocks on floppy discs
-# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
-# AFS /usr/afsws/bin/install, which mishandles nonexistent args
-# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
-# OS/2's system install, which has a completely different semantic
-# ./install, which can be erroneously created by make from ./install.sh.
-# Reject install programs that cannot install multiple files.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
-$as_echo_n "checking for a BSD-compatible install... " >&6; }
-if test -z "$INSTALL"; then
-if test "${ac_cv_path_install+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    # Account for people who put trailing slashes in PATH elements.
-case $as_dir/ in #((
-  ./ | .// | /[cC]/* | \
-  /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
-  ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \
-  /usr/ucb/* ) ;;
-  *)
-    # OSF1 and SCO ODT 3.0 have their own names for install.
-    # Don't use installbsd from OSF since it installs stuff as root
-    # by default.
-    for ac_prog in ginstall scoinst install; do
-      for ac_exec_ext in '' $ac_executable_extensions; do
-	if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then
-	  if test $ac_prog = install &&
-	    grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
-	    # AIX install.  It has an incompatible calling convention.
-	    :
-	  elif test $ac_prog = install &&
-	    grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
-	    # program-specific install script used by HP pwplus--don't use.
-	    :
-	  else
-	    rm -rf conftest.one conftest.two conftest.dir
-	    echo one > conftest.one
-	    echo two > conftest.two
-	    mkdir conftest.dir
-	    if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" &&
-	      test -s conftest.one && test -s conftest.two &&
-	      test -s conftest.dir/conftest.one &&
-	      test -s conftest.dir/conftest.two
-	    then
-	      ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
-	      break 3
-	    fi
-	  fi
-	fi
-      done
-    done
-    ;;
-esac
-
-  done
-IFS=$as_save_IFS
-
-rm -rf conftest.one conftest.two conftest.dir
-
-fi
-  if test "${ac_cv_path_install+set}" = set; then
-    INSTALL=$ac_cv_path_install
-  else
-    # As a last resort, use the slow shell script.  Don't cache a
-    # value for INSTALL within a source directory, because that will
-    # break other packages using the cache if that directory is
-    # removed, or if the value is a relative name.
-    INSTALL=$ac_install_sh
-  fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5
-$as_echo "$INSTALL" >&6; }
-
-# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
-# It thinks the first close brace ends the variable substitution.
-test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
-
-test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
-
-test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5
-$as_echo_n "checking whether build environment is sane... " >&6; }
-# Just in case
-sleep 1
-echo timestamp > conftest.file
-# Reject unsafe characters in $srcdir or the absolute working directory
-# name.  Accept space and tab only in the latter.
-am_lf='
-'
-case `pwd` in
-  *[\\\"\#\$\&\'\`$am_lf]*)
-    as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5 ;;
-esac
-case $srcdir in
-  *[\\\"\#\$\&\'\`$am_lf\ \	]*)
-    as_fn_error $? "unsafe srcdir value: \`$srcdir'" "$LINENO" 5 ;;
-esac
-
-# Do `set' in a subshell so we don't clobber the current shell's
-# arguments.  Must try -L first in case configure is actually a
-# symlink; some systems play weird games with the mod time of symlinks
-# (eg FreeBSD returns the mod time of the symlink's containing
-# directory).
-if (
-   set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
-   if test "$*" = "X"; then
-      # -L didn't work.
-      set X `ls -t "$srcdir/configure" conftest.file`
-   fi
-   rm -f conftest.file
-   if test "$*" != "X $srcdir/configure conftest.file" \
-      && test "$*" != "X conftest.file $srcdir/configure"; then
-
-      # If neither matched, then we have a broken ls.  This can happen
-      # if, for instance, CONFIG_SHELL is bash and it inherits a
-      # broken ls alias from the environment.  This has actually
-      # happened.  Such a system could not be considered "sane".
-      as_fn_error $? "ls -t appears to fail.  Make sure there is not a broken
-alias in your environment" "$LINENO" 5
-   fi
-
-   test "$2" = conftest.file
-   )
-then
-   # Ok.
-   :
-else
-   as_fn_error $? "newly created file is older than distributed files!
-Check your system clock" "$LINENO" 5
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-test "$program_prefix" != NONE &&
-  program_transform_name="s&^&$program_prefix&;$program_transform_name"
-# Use a double $ so make ignores it.
-test "$program_suffix" != NONE &&
-  program_transform_name="s&\$&$program_suffix&;$program_transform_name"
-# Double any \ or $.
-# By default was `s,x,x', remove it if useless.
-ac_script='s/[\\$]/&&/g;s/;s,x,x,$//'
-program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"`
-
-# expand $ac_aux_dir to an absolute path
-am_aux_dir=`cd $ac_aux_dir && pwd`
-
-if test x"${MISSING+set}" != xset; then
-  case $am_aux_dir in
-  *\ * | *\	*)
-    MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
-  *)
-    MISSING="\${SHELL} $am_aux_dir/missing" ;;
-  esac
-fi
-# Use eval to expand $SHELL
-if eval "$MISSING --run true"; then
-  am_missing_run="$MISSING --run "
-else
-  am_missing_run=
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`missing' script is too old or missing" >&5
-$as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;}
-fi
-
-if test x"${install_sh}" != xset; then
-  case $am_aux_dir in
-  *\ * | *\	*)
-    install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
-  *)
-    install_sh="\${SHELL} $am_aux_dir/install-sh"
-  esac
-fi
-
-# Installed binaries are usually stripped using `strip' when the user
-# run `make install-strip'.  However `strip' might not be the right
-# tool to use in cross-compilation environments, therefore Automake
-# will honor the `STRIP' environment variable to overrule this program.
-if test "$cross_compiling" != no; then
-  if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
-set dummy ${ac_tool_prefix}strip; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_STRIP+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$STRIP"; then
-  ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_STRIP="${ac_tool_prefix}strip"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-STRIP=$ac_cv_prog_STRIP
-if test -n "$STRIP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
-$as_echo "$STRIP" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_STRIP"; then
-  ac_ct_STRIP=$STRIP
-  # Extract the first word of "strip", so it can be a program name with args.
-set dummy strip; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_STRIP"; then
-  ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_STRIP="strip"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
-if test -n "$ac_ct_STRIP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
-$as_echo "$ac_ct_STRIP" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_STRIP" = x; then
-    STRIP=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    STRIP=$ac_ct_STRIP
-  fi
-else
-  STRIP="$ac_cv_prog_STRIP"
-fi
-
-fi
-INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5
-$as_echo_n "checking for a thread-safe mkdir -p... " >&6; }
-if test -z "$MKDIR_P"; then
-  if test "${ac_cv_path_mkdir+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_prog in mkdir gmkdir; do
-	 for ac_exec_ext in '' $ac_executable_extensions; do
-	   { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue
-	   case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
-	     'mkdir (GNU coreutils) '* | \
-	     'mkdir (coreutils) '* | \
-	     'mkdir (fileutils) '4.1*)
-	       ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext
-	       break 3;;
-	   esac
-	 done
-       done
-  done
-IFS=$as_save_IFS
-
-fi
-
-  test -d ./--version && rmdir ./--version
-  if test "${ac_cv_path_mkdir+set}" = set; then
-    MKDIR_P="$ac_cv_path_mkdir -p"
-  else
-    # As a last resort, use the slow shell script.  Don't cache a
-    # value for MKDIR_P within a source directory, because that will
-    # break other packages using the cache if that directory is
-    # removed, or if the value is a relative name.
-    MKDIR_P="$ac_install_sh -d"
-  fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5
-$as_echo "$MKDIR_P" >&6; }
-
-mkdir_p="$MKDIR_P"
-case $mkdir_p in
-  [\\/$]* | ?:[\\/]*) ;;
-  */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
-esac
-
-for ac_prog in gawk mawk nawk awk
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_AWK+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$AWK"; then
-  ac_cv_prog_AWK="$AWK" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_AWK="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-AWK=$ac_cv_prog_AWK
-if test -n "$AWK"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5
-$as_echo "$AWK" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$AWK" && break
-done
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5
-$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
-set x ${MAKE-make}
-ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
-if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\"" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat >conftest.make <<\_ACEOF
-SHELL = /bin/sh
-all:
-	@echo '@@@%%%=$(MAKE)=@@@%%%'
-_ACEOF
-# GNU make sometimes prints "make[1]: Entering ...", which would confuse us.
-case `${MAKE-make} -f conftest.make 2>/dev/null` in
-  *@@@%%%=?*=@@@%%%*)
-    eval ac_cv_prog_make_${ac_make}_set=yes;;
-  *)
-    eval ac_cv_prog_make_${ac_make}_set=no;;
-esac
-rm -f conftest.make
-fi
-if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-  SET_MAKE=
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-  SET_MAKE="MAKE=${MAKE-make}"
-fi
-
-rm -rf .tst 2>/dev/null
-mkdir .tst 2>/dev/null
-if test -d .tst; then
-  am__leading_dot=.
-else
-  am__leading_dot=_
-fi
-rmdir .tst 2>/dev/null
-
-if test "`cd $srcdir && pwd`" != "`pwd`"; then
-  # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
-  # is not polluted with repeated "-I."
-  am__isrc=' -I$(srcdir)'
-  # test to see if srcdir already configured
-  if test -f $srcdir/config.status; then
-    as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5
-  fi
-fi
-
-# test whether we have cygpath
-if test -z "$CYGPATH_W"; then
-  if (cygpath --version) >/dev/null 2>/dev/null; then
-    CYGPATH_W='cygpath -w'
-  else
-    CYGPATH_W=echo
-  fi
-fi
-
-
-# Define the identity of the package.
- PACKAGE='opensc'
- VERSION='0.13.0'
-
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE "$PACKAGE"
-_ACEOF
-
-
-cat >>confdefs.h <<_ACEOF
-#define VERSION "$VERSION"
-_ACEOF
-
-# Some tools Automake needs.
-
-ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"}
-
-
-AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"}
-
-
-AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"}
-
-
-AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
-
-
-MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
-
-# We need awk for the "check" target.  The system "awk" is bad on
-# some platforms.
-# Always define AMTAR for backward compatibility.
-
-AMTAR=${AMTAR-"${am_missing_run}tar"}
-
-am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'
-
-
-
-
-
-
-OPENSC_VERSION_MAJOR="0"
-OPENSC_VERSION_MINOR="13"
-OPENSC_VERSION_FIX="0"
-
-# LT Version numbers, remember to change them just *before* a release.
-#   (Code changed:                      REVISION++)
-#   (Oldest interface removed:          OLDEST++)
-#   (Interfaces added:                  CURRENT++, REVISION=0)
-OPENSC_LT_CURRENT="3"
-OPENSC_LT_OLDEST="3"
-OPENSC_LT_REVISION="0"
-OPENSC_LT_AGE="0"
-OPENSC_LT_AGE="$((${OPENSC_LT_CURRENT}-${OPENSC_LT_OLDEST}))"
-
-
-
-# silent build by default
-# Check whether --enable-silent-rules was given.
-if test "${enable_silent_rules+set}" = set; then :
-  enableval=$enable_silent_rules;
-fi
-
-case $enable_silent_rules in
-yes) AM_DEFAULT_VERBOSITY=0;;
-no)  AM_DEFAULT_VERBOSITY=1;;
-*)   AM_DEFAULT_VERBOSITY=0;;
-esac
-AM_BACKSLASH='\'
-
-
-# Make sure we can run config.sub.
-$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
-  as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
-$as_echo_n "checking build system type... " >&6; }
-if test "${ac_cv_build+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_build_alias=$build_alias
-test "x$ac_build_alias" = x &&
-  ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
-test "x$ac_build_alias" = x &&
-  as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5
-ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
-  as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
-$as_echo "$ac_cv_build" >&6; }
-case $ac_cv_build in
-*-*-*) ;;
-*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5 ;;
-esac
-build=$ac_cv_build
-ac_save_IFS=$IFS; IFS='-'
-set x $ac_cv_build
-shift
-build_cpu=$1
-build_vendor=$2
-shift; shift
-# Remember, the first character of IFS is used to create $*,
-# except with old shells:
-build_os=$*
-IFS=$ac_save_IFS
-case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
-$as_echo_n "checking host system type... " >&6; }
-if test "${ac_cv_host+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test "x$host_alias" = x; then
-  ac_cv_host=$ac_cv_build
-else
-  ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
-    as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
-$as_echo "$ac_cv_host" >&6; }
-case $ac_cv_host in
-*-*-*) ;;
-*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5 ;;
-esac
-host=$ac_cv_host
-ac_save_IFS=$IFS; IFS='-'
-set x $ac_cv_host
-shift
-host_cpu=$1
-host_vendor=$2
-shift; shift
-# Remember, the first character of IFS is used to create $*,
-# except with old shells:
-host_os=$*
-IFS=$ac_save_IFS
-case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
-
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
-set dummy ${ac_tool_prefix}gcc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_CC+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_CC="${ac_tool_prefix}gcc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_CC"; then
-  ac_ct_CC=$CC
-  # Extract the first word of "gcc", so it can be a program name with args.
-set dummy gcc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_CC"; then
-  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_CC="gcc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_CC=$ac_cv_prog_ac_ct_CC
-if test -n "$ac_ct_CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
-$as_echo "$ac_ct_CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_CC" = x; then
-    CC=""
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    CC=$ac_ct_CC
-  fi
-else
-  CC="$ac_cv_prog_CC"
-fi
-
-if test -z "$CC"; then
-          if test -n "$ac_tool_prefix"; then
-    # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
-set dummy ${ac_tool_prefix}cc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_CC+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_CC="${ac_tool_prefix}cc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  fi
-fi
-if test -z "$CC"; then
-  # Extract the first word of "cc", so it can be a program name with args.
-set dummy cc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_CC+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-  ac_prog_rejected=no
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
-       ac_prog_rejected=yes
-       continue
-     fi
-    ac_cv_prog_CC="cc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-if test $ac_prog_rejected = yes; then
-  # We found a bogon in the path, so make sure we never use it.
-  set dummy $ac_cv_prog_CC
-  shift
-  if test $# != 0; then
-    # We chose a different compiler from the bogus one.
-    # However, it has the same basename, so the bogon will be chosen
-    # first if we set CC to just the basename; use the full file name.
-    shift
-    ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
-  fi
-fi
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$CC"; then
-  if test -n "$ac_tool_prefix"; then
-  for ac_prog in cl.exe
-  do
-    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_CC+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-    test -n "$CC" && break
-  done
-fi
-if test -z "$CC"; then
-  ac_ct_CC=$CC
-  for ac_prog in cl.exe
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_CC"; then
-  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_CC="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_CC=$ac_cv_prog_ac_ct_CC
-if test -n "$ac_ct_CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
-$as_echo "$ac_ct_CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$ac_ct_CC" && break
-done
-
-  if test "x$ac_ct_CC" = x; then
-    CC=""
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    CC=$ac_ct_CC
-  fi
-fi
-
-fi
-
-
-test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "no acceptable C compiler found in \$PATH
-See \`config.log' for more details" "$LINENO" 5 ; }
-
-# Provide some information about the compiler.
-$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
-set X $ac_compile
-ac_compiler=$2
-for ac_option in --version -v -V -qversion; do
-  { { ac_try="$ac_compiler $ac_option >&5"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    sed '10a\
-... rest of stderr output deleted ...
-         10q' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-  fi
-  rm -f conftest.er1 conftest.err
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-done
-
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-ac_clean_files_save=$ac_clean_files
-ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"
-# Try to create an executable without -o first, disregard a.out.
-# It will help us diagnose broken compilers, and finding out an intuition
-# of exeext.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5
-$as_echo_n "checking whether the C compiler works... " >&6; }
-ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
-
-# The possible output files:
-ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
-
-ac_rmfiles=
-for ac_file in $ac_files
-do
-  case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
-    * ) ac_rmfiles="$ac_rmfiles $ac_file";;
-  esac
-done
-rm -f $ac_rmfiles
-
-if { { ac_try="$ac_link_default"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link_default") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then :
-  # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
-# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
-# in a Makefile.  We should not override ac_cv_exeext if it was cached,
-# so that the user can short-circuit this test for compilers unknown to
-# Autoconf.
-for ac_file in $ac_files ''
-do
-  test -f "$ac_file" || continue
-  case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj )
-	;;
-    [ab].out )
-	# We found the default executable, but exeext='' is most
-	# certainly right.
-	break;;
-    *.* )
-	if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
-	then :; else
-	   ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
-	fi
-	# We set ac_cv_exeext here because the later test for it is not
-	# safe: cross compilers may not add the suffix if given an `-o'
-	# argument, so we may need to know it at that point already.
-	# Even if this section looks crufty: it has the advantage of
-	# actually working.
-	break;;
-    * )
-	break;;
-  esac
-done
-test "$ac_cv_exeext" = no && ac_cv_exeext=
-
-else
-  ac_file=''
-fi
-if test -z "$ac_file"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-$as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error 77 "C compiler cannot create executables
-See \`config.log' for more details" "$LINENO" 5 ; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
-$as_echo_n "checking for C compiler default output file name... " >&6; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
-$as_echo "$ac_file" >&6; }
-ac_exeext=$ac_cv_exeext
-
-rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
-ac_clean_files=$ac_clean_files_save
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
-$as_echo_n "checking for suffix of executables... " >&6; }
-if { { ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then :
-  # If both `conftest.exe' and `conftest' are `present' (well, observable)
-# catch `conftest.exe'.  For instance with Cygwin, `ls conftest' will
-# work properly (i.e., refer to `conftest.exe'), while it won't with
-# `rm'.
-for ac_file in conftest.exe conftest conftest.*; do
-  test -f "$ac_file" || continue
-  case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
-    *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
-	  break;;
-    * ) break;;
-  esac
-done
-else
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot compute suffix of executables: cannot compile and link
-See \`config.log' for more details" "$LINENO" 5 ; }
-fi
-rm -f conftest conftest$ac_cv_exeext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
-$as_echo "$ac_cv_exeext" >&6; }
-
-rm -f conftest.$ac_ext
-EXEEXT=$ac_cv_exeext
-ac_exeext=$EXEEXT
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdio.h>
-int
-main ()
-{
-FILE *f = fopen ("conftest.out", "w");
- return ferror (f) || fclose (f) != 0;
-
-  ;
-  return 0;
-}
-_ACEOF
-ac_clean_files="$ac_clean_files conftest.out"
-# Check that the compiler produces executables we can run.  If not, either
-# the compiler is broken, or we cross compile.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
-$as_echo_n "checking whether we are cross compiling... " >&6; }
-if test "$cross_compiling" != yes; then
-  { { ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-  if { ac_try='./conftest$ac_cv_exeext'
-  { { case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; }; then
-    cross_compiling=no
-  else
-    if test "$cross_compiling" = maybe; then
-	cross_compiling=yes
-    else
-	{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot run C compiled programs.
-If you meant to cross compile, use \`--host'.
-See \`config.log' for more details" "$LINENO" 5 ; }
-    fi
-  fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
-$as_echo "$cross_compiling" >&6; }
-
-rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
-ac_clean_files=$ac_clean_files_save
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
-$as_echo_n "checking for suffix of object files... " >&6; }
-if test "${ac_cv_objext+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.o conftest.obj
-if { { ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_compile") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then :
-  for ac_file in conftest.o conftest.obj conftest.*; do
-  test -f "$ac_file" || continue;
-  case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;
-    *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
-       break;;
-  esac
-done
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot compute suffix of object files: cannot compile
-See \`config.log' for more details" "$LINENO" 5 ; }
-fi
-rm -f conftest.$ac_cv_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
-$as_echo "$ac_cv_objext" >&6; }
-OBJEXT=$ac_cv_objext
-ac_objext=$OBJEXT
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
-$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
-if test "${ac_cv_c_compiler_gnu+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-#ifndef __GNUC__
-       choke me
-#endif
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_compiler_gnu=yes
-else
-  ac_compiler_gnu=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-ac_cv_c_compiler_gnu=$ac_compiler_gnu
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
-$as_echo "$ac_cv_c_compiler_gnu" >&6; }
-if test $ac_compiler_gnu = yes; then
-  GCC=yes
-else
-  GCC=
-fi
-ac_test_CFLAGS=${CFLAGS+set}
-ac_save_CFLAGS=$CFLAGS
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
-$as_echo_n "checking whether $CC accepts -g... " >&6; }
-if test "${ac_cv_prog_cc_g+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_save_c_werror_flag=$ac_c_werror_flag
-   ac_c_werror_flag=yes
-   ac_cv_prog_cc_g=no
-   CFLAGS="-g"
-   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_prog_cc_g=yes
-else
-  CFLAGS=""
-      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-
-else
-  ac_c_werror_flag=$ac_save_c_werror_flag
-	 CFLAGS="-g"
-	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_prog_cc_g=yes
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-   ac_c_werror_flag=$ac_save_c_werror_flag
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
-$as_echo "$ac_cv_prog_cc_g" >&6; }
-if test "$ac_test_CFLAGS" = set; then
-  CFLAGS=$ac_save_CFLAGS
-elif test $ac_cv_prog_cc_g = yes; then
-  if test "$GCC" = yes; then
-    CFLAGS="-g -O2"
-  else
-    CFLAGS="-g"
-  fi
-else
-  if test "$GCC" = yes; then
-    CFLAGS="-O2"
-  else
-    CFLAGS=
-  fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
-$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
-if test "${ac_cv_prog_cc_c89+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_cv_prog_cc_c89=no
-ac_save_CC=$CC
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdarg.h>
-#include <stdio.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
-struct buf { int x; };
-FILE * (*rcsopen) (struct buf *, struct stat *, int);
-static char *e (p, i)
-     char **p;
-     int i;
-{
-  return p[i];
-}
-static char *f (char * (*g) (char **, int), char **p, ...)
-{
-  char *s;
-  va_list v;
-  va_start (v,p);
-  s = g (p, va_arg (v,int));
-  va_end (v);
-  return s;
-}
-
-/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
-   function prototypes and stuff, but not '\xHH' hex character constants.
-   These don't provoke an error unfortunately, instead are silently treated
-   as 'x'.  The following induces an error, until -std is added to get
-   proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an
-   array size at least.  It's necessary to write '\x00'==0 to get something
-   that's true only with -std.  */
-int osf4_cc_array ['\x00' == 0 ? 1 : -1];
-
-/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
-   inside strings and character constants.  */
-#define FOO(x) 'x'
-int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
-
-int test (int i, double x);
-struct s1 {int (*f) (int a);};
-struct s2 {int (*f) (double a);};
-int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
-int argc;
-char **argv;
-int
-main ()
-{
-return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
-  ;
-  return 0;
-}
-_ACEOF
-for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
-	-Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
-do
-  CC="$ac_save_CC $ac_arg"
-  if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_prog_cc_c89=$ac_arg
-fi
-rm -f core conftest.err conftest.$ac_objext
-  test "x$ac_cv_prog_cc_c89" != "xno" && break
-done
-rm -f conftest.$ac_ext
-CC=$ac_save_CC
-
-fi
-# AC_CACHE_VAL
-case "x$ac_cv_prog_cc_c89" in
-  x)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
-$as_echo "none needed" >&6; } ;;
-  xno)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
-$as_echo "unsupported" >&6; } ;;
-  *)
-    CC="$CC $ac_cv_prog_cc_c89"
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
-$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
-esac
-if test "x$ac_cv_prog_cc_c89" != xno; then :
-
-fi
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-DEPDIR="${am__leading_dot}deps"
-
-ac_config_commands="$ac_config_commands depfiles"
-
-
-am_make=${MAKE-make}
-cat > confinc << 'END'
-am__doit:
-	@echo this is the am__doit target
-.PHONY: am__doit
-END
-# If we don't find an include directive, just comment out the code.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5
-$as_echo_n "checking for style of include used by $am_make... " >&6; }
-am__include="#"
-am__quote=
-_am_result=none
-# First try GNU make style include.
-echo "include confinc" > confmf
-# Ignore all kinds of additional output from `make'.
-case `$am_make -s -f confmf 2> /dev/null` in #(
-*the\ am__doit\ target*)
-  am__include=include
-  am__quote=
-  _am_result=GNU
-  ;;
-esac
-# Now try BSD make style include.
-if test "$am__include" = "#"; then
-   echo '.include "confinc"' > confmf
-   case `$am_make -s -f confmf 2> /dev/null` in #(
-   *the\ am__doit\ target*)
-     am__include=.include
-     am__quote="\""
-     _am_result=BSD
-     ;;
-   esac
-fi
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5
-$as_echo "$_am_result" >&6; }
-rm -f confinc confmf
-
-# Check whether --enable-dependency-tracking was given.
-if test "${enable_dependency_tracking+set}" = set; then :
-  enableval=$enable_dependency_tracking;
-fi
-
-if test "x$enable_dependency_tracking" != xno; then
-  am_depcomp="$ac_aux_dir/depcomp"
-  AMDEPBACKSLASH='\'
-fi
- if test "x$enable_dependency_tracking" != xno; then
-  AMDEP_TRUE=
-  AMDEP_FALSE='#'
-else
-  AMDEP_TRUE='#'
-  AMDEP_FALSE=
-fi
-
-
-
-depcc="$CC"   am_compiler_list=
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
-$as_echo_n "checking dependency style of $depcc... " >&6; }
-if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
-  # We make a subdir and do the tests there.  Otherwise we can end up
-  # making bogus files that we don't know about and never remove.  For
-  # instance it was reported that on HP-UX the gcc test will end up
-  # making a dummy file named `D' -- because `-MD' means `put the output
-  # in D'.
-  mkdir conftest.dir
-  # Copy depcomp to subdir because otherwise we won't find it if we're
-  # using a relative directory.
-  cp "$am_depcomp" conftest.dir
-  cd conftest.dir
-  # We will build objects and dependencies in a subdirectory because
-  # it helps to detect inapplicable dependency modes.  For instance
-  # both Tru64's cc and ICC support -MD to output dependencies as a
-  # side effect of compilation, but ICC will put the dependencies in
-  # the current directory while Tru64 will put them in the object
-  # directory.
-  mkdir sub
-
-  am_cv_CC_dependencies_compiler_type=none
-  if test "$am_compiler_list" = ""; then
-     am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
-  fi
-  am__universal=false
-  case " $depcc " in #(
-     *\ -arch\ *\ -arch\ *) am__universal=true ;;
-     esac
-
-  for depmode in $am_compiler_list; do
-    # Setup a source with many dependencies, because some compilers
-    # like to wrap large dependency lists on column 80 (with \), and
-    # we should not choose a depcomp mode which is confused by this.
-    #
-    # We need to recreate these files for each test, as the compiler may
-    # overwrite some of them when testing with obscure command lines.
-    # This happens at least with the AIX C compiler.
-    : > sub/conftest.c
-    for i in 1 2 3 4 5 6; do
-      echo '#include "conftst'$i'.h"' >> sub/conftest.c
-      # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
-      # Solaris 8's {/usr,}/bin/sh.
-      touch sub/conftst$i.h
-    done
-    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
-
-    # We check with `-c' and `-o' for the sake of the "dashmstdout"
-    # mode.  It turns out that the SunPro C++ compiler does not properly
-    # handle `-M -o', and we need to detect this.  Also, some Intel
-    # versions had trouble with output in subdirs
-    am__obj=sub/conftest.${OBJEXT-o}
-    am__minus_obj="-o $am__obj"
-    case $depmode in
-    gcc)
-      # This depmode causes a compiler race in universal mode.
-      test "$am__universal" = false || continue
-      ;;
-    nosideeffect)
-      # after this tag, mechanisms are not by side-effect, so they'll
-      # only be used when explicitly requested
-      if test "x$enable_dependency_tracking" = xyes; then
-	continue
-      else
-	break
-      fi
-      ;;
-    msvisualcpp | msvcmsys)
-      # This compiler won't grok `-c -o', but also, the minuso test has
-      # not run yet.  These depmodes are late enough in the game, and
-      # so weak that their functioning should not be impacted.
-      am__obj=conftest.${OBJEXT-o}
-      am__minus_obj=
-      ;;
-    none) break ;;
-    esac
-    if depmode=$depmode \
-       source=sub/conftest.c object=$am__obj \
-       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
-       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
-         >/dev/null 2>conftest.err &&
-       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
-       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
-       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
-       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
-      # icc doesn't choke on unknown options, it will just issue warnings
-      # or remarks (even with -Werror).  So we grep stderr for any message
-      # that says an option was ignored or not supported.
-      # When given -MP, icc 7.0 and 7.1 complain thusly:
-      #   icc: Command line warning: ignoring option '-M'; no argument required
-      # The diagnosis changed in icc 8.0:
-      #   icc: Command line remark: option '-MP' not supported
-      if (grep 'ignoring option' conftest.err ||
-          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
-        am_cv_CC_dependencies_compiler_type=$depmode
-        break
-      fi
-    fi
-  done
-
-  cd ..
-  rm -rf conftest.dir
-else
-  am_cv_CC_dependencies_compiler_type=none
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5
-$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; }
-CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
-
- if
-  test "x$enable_dependency_tracking" != xno \
-  && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
-  am__fastdepCC_TRUE=
-  am__fastdepCC_FALSE='#'
-else
-  am__fastdepCC_TRUE='#'
-  am__fastdepCC_FALSE=
-fi
-
-
-
-
-
-
-
-
-if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
-	if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
-set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_path_PKG_CONFIG+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $PKG_CONFIG in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
-  ;;
-  *)
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-  ;;
-esac
-fi
-PKG_CONFIG=$ac_cv_path_PKG_CONFIG
-if test -n "$PKG_CONFIG"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5
-$as_echo "$PKG_CONFIG" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_path_PKG_CONFIG"; then
-  ac_pt_PKG_CONFIG=$PKG_CONFIG
-  # Extract the first word of "pkg-config", so it can be a program name with args.
-set dummy pkg-config; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_path_ac_pt_PKG_CONFIG+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $ac_pt_PKG_CONFIG in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path.
-  ;;
-  *)
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-  ;;
-esac
-fi
-ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG
-if test -n "$ac_pt_PKG_CONFIG"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5
-$as_echo "$ac_pt_PKG_CONFIG" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_pt_PKG_CONFIG" = x; then
-    PKG_CONFIG=""
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    PKG_CONFIG=$ac_pt_PKG_CONFIG
-  fi
-else
-  PKG_CONFIG="$ac_cv_path_PKG_CONFIG"
-fi
-
-fi
-if test -n "$PKG_CONFIG"; then
-	_pkg_min_version=0.9.0
-	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5
-$as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; }
-	if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
-		{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-	else
-		{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-		PKG_CONFIG=""
-	fi
-fi
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
-$as_echo_n "checking how to run the C preprocessor... " >&6; }
-# On Suns, sometimes $CPP names a directory.
-if test -n "$CPP" && test -d "$CPP"; then
-  CPP=
-fi
-if test -z "$CPP"; then
-  if test "${ac_cv_prog_CPP+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-      # Double quotes because CPP needs to be expanded
-    for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
-    do
-      ac_preproc_ok=false
-for ac_c_preproc_warn_flag in '' yes
-do
-  # Use a header file that comes with gcc, so configuring glibc
-  # with a fresh cross-compiler works.
-  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-  # <limits.h> exists even on freestanding compilers.
-  # On the NeXT, cc -E runs the code through the compiler's parser,
-  # not just through cpp. "Syntax error" is here to catch this case.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-		     Syntax error
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-
-else
-  # Broken: fails on valid input.
-continue
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-  # OK, works on sane cases.  Now check whether nonexistent headers
-  # can be detected and how.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <ac_nonexistent.h>
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-  # Broken: success on invalid input.
-continue
-else
-  # Passes both tests.
-ac_preproc_ok=:
-break
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.i conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then :
-  break
-fi
-
-    done
-    ac_cv_prog_CPP=$CPP
-
-fi
-  CPP=$ac_cv_prog_CPP
-else
-  ac_cv_prog_CPP=$CPP
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
-$as_echo "$CPP" >&6; }
-ac_preproc_ok=false
-for ac_c_preproc_warn_flag in '' yes
-do
-  # Use a header file that comes with gcc, so configuring glibc
-  # with a fresh cross-compiler works.
-  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-  # <limits.h> exists even on freestanding compilers.
-  # On the NeXT, cc -E runs the code through the compiler's parser,
-  # not just through cpp. "Syntax error" is here to catch this case.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-		     Syntax error
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-
-else
-  # Broken: fails on valid input.
-continue
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-  # OK, works on sane cases.  Now check whether nonexistent headers
-  # can be detected and how.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <ac_nonexistent.h>
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-  # Broken: success on invalid input.
-continue
-else
-  # Passes both tests.
-ac_preproc_ok=:
-break
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.i conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then :
-
-else
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
-See \`config.log' for more details" "$LINENO" 5 ; }
-fi
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
-$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
-if test "${ac_cv_path_GREP+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -z "$GREP"; then
-  ac_path_GREP_found=false
-  # Loop through the user's path and test for each of PROGNAME-LIST
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_prog in grep ggrep; do
-    for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
-      { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue
-# Check for GNU ac_path_GREP and select it if it is found.
-  # Check for GNU $ac_path_GREP
-case `"$ac_path_GREP" --version 2>&1` in
-*GNU*)
-  ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
-*)
-  ac_count=0
-  $as_echo_n 0123456789 >"conftest.in"
-  while :
-  do
-    cat "conftest.in" "conftest.in" >"conftest.tmp"
-    mv "conftest.tmp" "conftest.in"
-    cp "conftest.in" "conftest.nl"
-    $as_echo 'GREP' >> "conftest.nl"
-    "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
-    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-    as_fn_arith $ac_count + 1 && ac_count=$as_val
-    if test $ac_count -gt ${ac_path_GREP_max-0}; then
-      # Best one so far, save it but keep looking for a better one
-      ac_cv_path_GREP="$ac_path_GREP"
-      ac_path_GREP_max=$ac_count
-    fi
-    # 10*(2^10) chars as input seems more than enough
-    test $ac_count -gt 10 && break
-  done
-  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
-
-      $ac_path_GREP_found && break 3
-    done
-  done
-  done
-IFS=$as_save_IFS
-  if test -z "$ac_cv_path_GREP"; then
-    as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
-  fi
-else
-  ac_cv_path_GREP=$GREP
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
-$as_echo "$ac_cv_path_GREP" >&6; }
- GREP="$ac_cv_path_GREP"
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
-$as_echo_n "checking for egrep... " >&6; }
-if test "${ac_cv_path_EGREP+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
-   then ac_cv_path_EGREP="$GREP -E"
-   else
-     if test -z "$EGREP"; then
-  ac_path_EGREP_found=false
-  # Loop through the user's path and test for each of PROGNAME-LIST
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_prog in egrep; do
-    for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
-      { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue
-# Check for GNU ac_path_EGREP and select it if it is found.
-  # Check for GNU $ac_path_EGREP
-case `"$ac_path_EGREP" --version 2>&1` in
-*GNU*)
-  ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
-*)
-  ac_count=0
-  $as_echo_n 0123456789 >"conftest.in"
-  while :
-  do
-    cat "conftest.in" "conftest.in" >"conftest.tmp"
-    mv "conftest.tmp" "conftest.in"
-    cp "conftest.in" "conftest.nl"
-    $as_echo 'EGREP' >> "conftest.nl"
-    "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
-    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-    as_fn_arith $ac_count + 1 && ac_count=$as_val
-    if test $ac_count -gt ${ac_path_EGREP_max-0}; then
-      # Best one so far, save it but keep looking for a better one
-      ac_cv_path_EGREP="$ac_path_EGREP"
-      ac_path_EGREP_max=$ac_count
-    fi
-    # 10*(2^10) chars as input seems more than enough
-    test $ac_count -gt 10 && break
-  done
-  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
-
-      $ac_path_EGREP_found && break 3
-    done
-  done
-  done
-IFS=$as_save_IFS
-  if test -z "$ac_cv_path_EGREP"; then
-    as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
-  fi
-else
-  ac_cv_path_EGREP=$EGREP
-fi
-
-   fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
-$as_echo "$ac_cv_path_EGREP" >&6; }
- EGREP="$ac_cv_path_EGREP"
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
-$as_echo_n "checking for ANSI C header files... " >&6; }
-if test "${ac_cv_header_stdc+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdlib.h>
-#include <stdarg.h>
-#include <string.h>
-#include <float.h>
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_header_stdc=yes
-else
-  ac_cv_header_stdc=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-if test $ac_cv_header_stdc = yes; then
-  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <string.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "memchr" >/dev/null 2>&1; then :
-
-else
-  ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
-  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdlib.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "free" >/dev/null 2>&1; then :
-
-else
-  ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
-  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
-  if test "$cross_compiling" = yes; then :
-  :
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <ctype.h>
-#include <stdlib.h>
-#if ((' ' & 0x0FF) == 0x020)
-# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
-# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
-#else
-# define ISLOWER(c) \
-		   (('a' <= (c) && (c) <= 'i') \
-		     || ('j' <= (c) && (c) <= 'r') \
-		     || ('s' <= (c) && (c) <= 'z'))
-# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
-#endif
-
-#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
-int
-main ()
-{
-  int i;
-  for (i = 0; i < 256; i++)
-    if (XOR (islower (i), ISLOWER (i))
-	|| toupper (i) != TOUPPER (i))
-      return 2;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-
-else
-  ac_cv_header_stdc=no
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
-$as_echo "$ac_cv_header_stdc" >&6; }
-if test $ac_cv_header_stdc = yes; then
-
-$as_echo "#define STDC_HEADERS 1" >>confdefs.h
-
-fi
-
-# On IRIX 5.3, sys/types and inttypes.h are conflicting.
-for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
-		  inttypes.h stdint.h unistd.h
-do :
-  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
-"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5
-$as_echo_n "checking whether byte ordering is bigendian... " >&6; }
-if test "${ac_cv_c_bigendian+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_cv_c_bigendian=unknown
-    # See if we're dealing with a universal compiler.
-    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#ifndef __APPLE_CC__
-	       not a universal capable compiler
-	     #endif
-	     typedef int dummy;
-
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-
-	# Check for potential -arch flags.  It is not universal unless
-	# there are at least two -arch flags with different values.
-	ac_arch=
-	ac_prev=
-	for ac_word in $CC $CFLAGS $CPPFLAGS $LDFLAGS; do
-	 if test -n "$ac_prev"; then
-	   case $ac_word in
-	     i?86 | x86_64 | ppc | ppc64)
-	       if test -z "$ac_arch" || test "$ac_arch" = "$ac_word"; then
-		 ac_arch=$ac_word
-	       else
-		 ac_cv_c_bigendian=universal
-		 break
-	       fi
-	       ;;
-	   esac
-	   ac_prev=
-	 elif test "x$ac_word" = "x-arch"; then
-	   ac_prev=arch
-	 fi
-       done
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-    if test $ac_cv_c_bigendian = unknown; then
-      # See if sys/param.h defines the BYTE_ORDER macro.
-      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <sys/types.h>
-	     #include <sys/param.h>
-
-int
-main ()
-{
-#if ! (defined BYTE_ORDER && defined BIG_ENDIAN \
-		     && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \
-		     && LITTLE_ENDIAN)
-	      bogus endian macros
-	     #endif
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  # It does; now see whether it defined to BIG_ENDIAN or not.
-	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <sys/types.h>
-		#include <sys/param.h>
-
-int
-main ()
-{
-#if BYTE_ORDER != BIG_ENDIAN
-		 not big endian
-		#endif
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_c_bigendian=yes
-else
-  ac_cv_c_bigendian=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-    fi
-    if test $ac_cv_c_bigendian = unknown; then
-      # See if <limits.h> defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris).
-      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <limits.h>
-
-int
-main ()
-{
-#if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN)
-	      bogus endian macros
-	     #endif
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  # It does; now see whether it defined to _BIG_ENDIAN or not.
-	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <limits.h>
-
-int
-main ()
-{
-#ifndef _BIG_ENDIAN
-		 not big endian
-		#endif
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_c_bigendian=yes
-else
-  ac_cv_c_bigendian=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-    fi
-    if test $ac_cv_c_bigendian = unknown; then
-      # Compile a test program.
-      if test "$cross_compiling" = yes; then :
-  # Try to guess by grepping values from an object file.
-	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-short int ascii_mm[] =
-		  { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 };
-		short int ascii_ii[] =
-		  { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 };
-		int use_ascii (int i) {
-		  return ascii_mm[i] + ascii_ii[i];
-		}
-		short int ebcdic_ii[] =
-		  { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 };
-		short int ebcdic_mm[] =
-		  { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 };
-		int use_ebcdic (int i) {
-		  return ebcdic_mm[i] + ebcdic_ii[i];
-		}
-		extern int foo;
-
-int
-main ()
-{
-return use_ascii (foo) == use_ebcdic (foo);
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  if grep BIGenDianSyS conftest.$ac_objext >/dev/null; then
-	      ac_cv_c_bigendian=yes
-	    fi
-	    if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then
-	      if test "$ac_cv_c_bigendian" = unknown; then
-		ac_cv_c_bigendian=no
-	      else
-		# finding both strings is unlikely to happen, but who knows?
-		ac_cv_c_bigendian=unknown
-	      fi
-	    fi
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-
-	     /* Are we little or big endian?  From Harbison&Steele.  */
-	     union
-	     {
-	       long int l;
-	       char c[sizeof (long int)];
-	     } u;
-	     u.l = 1;
-	     return u.c[sizeof (long int) - 1] == 1;
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  ac_cv_c_bigendian=no
-else
-  ac_cv_c_bigendian=yes
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-    fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5
-$as_echo "$ac_cv_c_bigendian" >&6; }
- case $ac_cv_c_bigendian in #(
-   yes)
-     $as_echo "#define WORDS_BIGENDIAN 1" >>confdefs.h
-;; #(
-   no)
-      ;; #(
-   universal)
-
-$as_echo "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h
-
-     ;; #(
-   *)
-     as_fn_error $? "unknown endianness
- presetting ac_cv_c_bigendian=no (or yes) will help" "$LINENO" 5  ;;
- esac
-
-
-
-# Check whether --with-cygwin-native was given.
-if test "${with_cygwin_native+set}" = set; then :
-  withval=$with_cygwin_native;
-else
-  with_cygwin_native="no"
-
-fi
-
-
-test -z "${WIN32}" && WIN32="no"
-test -z "${CYGWIN}" && CYGWIN="no"
-case "${host}" in
-	*-*-solaris*)
-		CPPFLAGS="${CPPFLAGS} -I/usr/local/include"
-		LDFLAGS="${LDFLAGS} -L/usr/local/lib -R/usr/local/lib"
-	;;
-	*-mingw*|*-winnt*)
-		WIN32="yes"
-		CPPFLAGS="${CPPFLAGS} -DWIN32_LEAN_AND_MEAN"
-		WIN_LIBPREFIX="lib"
-	;;
-	*-cygwin*)
-		{ $as_echo "$as_me:${as_lineno-$LINENO}: checking cygwin mode to use" >&5
-$as_echo_n "checking cygwin mode to use... " >&6; }
-		CYGWIN="yes"
-		if test "${with_cygwin_native}" = "yes"; then
-			{ $as_echo "$as_me:${as_lineno-$LINENO}: result: Using native win32" >&5
-$as_echo "Using native win32" >&6; }
-			CPPFLAGS="${CPPFLAGS} -DWIN32_LEAN_AND_MEAN"
-			CFLAGS="${CFLAGS} -mno-cygwin"
-			WIN32="yes"
-		else
-			{ $as_echo "$as_me:${as_lineno-$LINENO}: result: Using cygwin" >&5
-$as_echo "Using cygwin" >&6; }
-			CPPFLAGS="${CPPFLAGS} -DCRYPTOKI_FORCE_WIN32"
-			WIN_LIBPREFIX="cyg"
-
-$as_echo "#define USE_CYGWIN 1" >>confdefs.h
-
-		fi
-	;;
-esac
-
-case "${host}" in
-	*-mingw*|*-winnt*|*-cygwin*)
-		DEBUG_FILE="%TEMP%\opensc-debug.log"
-	;;
-	*)
-		DEBUG_FILE="/tmp/opensc-debug.log"
-	;;
-esac
-
-cat >>confdefs.h <<_ACEOF
-#define DEBUG_FILE "${DEBUG_FILE}"
-_ACEOF
-
-
-# Check whether --enable-strict was given.
-if test "${enable_strict+set}" = set; then :
-  enableval=$enable_strict;
-else
-  enable_strict="no"
-
-fi
-
-
-# Check whether --enable-pedantic was given.
-if test "${enable_pedantic+set}" = set; then :
-  enableval=$enable_pedantic;
-else
-  enable_pedantic="no"
-
-fi
-
-
-# Check whether --enable-zlib was given.
-if test "${enable_zlib+set}" = set; then :
-  enableval=$enable_zlib;
-else
-  enable_zlib="detect"
-
-fi
-
-
-# Check whether --enable-readline was given.
-if test "${enable_readline+set}" = set; then :
-  enableval=$enable_readline;
-else
-  enable_readline="detect"
-
-fi
-
-
-# Check whether --enable-openssl was given.
-if test "${enable_openssl+set}" = set; then :
-  enableval=$enable_openssl;
-else
-  enable_openssl="detect"
-
-fi
-
-
-# Check whether --enable-openct was given.
-if test "${enable_openct+set}" = set; then :
-  enableval=$enable_openct;
-else
-  enable_openct="no"
-
-fi
-
-
-# Check whether --enable-pcsc was given.
-if test "${enable_pcsc+set}" = set; then :
-  enableval=$enable_pcsc;
-else
-  enable_pcsc="yes"
-
-fi
-
-
-# Check whether --enable-ctapi was given.
-if test "${enable_ctapi+set}" = set; then :
-  enableval=$enable_ctapi;
-else
-  enable_ctapi="no"
-
-fi
-
-
-# Check whether --enable-minidriver was given.
-if test "${enable_minidriver+set}" = set; then :
-  enableval=$enable_minidriver;
-else
-  enable_minidriver="no"
-
-fi
-
-
-# Check whether --enable-sm was given.
-if test "${enable_sm+set}" = set; then :
-  enableval=$enable_sm;
-else
-  enable_sm="no"
-
-fi
-
-
-# Check whether --enable-man was given.
-if test "${enable_man+set}" = set; then :
-  enableval=$enable_man;
-else
-  enable_man="detect"
-
-fi
-
-
-# Check whether --enable-doc was given.
-if test "${enable_doc+set}" = set; then :
-  enableval=$enable_doc;
-else
-  enable_doc="no"
-
-fi
-
-
-
-# Check whether --with-xsl-stylesheetsdir was given.
-if test "${with_xsl_stylesheetsdir+set}" = set; then :
-  withval=$with_xsl_stylesheetsdir; xslstylesheetsdir="${withval}"
-else
-  xslstylesheetsdir="detect"
-
-fi
-
-
-
-# Check whether --with-pcsc-provider was given.
-if test "${with_pcsc_provider+set}" = set; then :
-  withval=$with_pcsc_provider;
-else
-  with_pcsc_provider="detect"
-
-fi
-
-reader_count=""
-for rdriver in "${enable_pcsc}" "${enable_openct}" "${enable_ctapi}"; do
-	test "${rdriver}" = "yes" && reader_count="${reader_count}x"
-done
-if test "${reader_count}" != "x"; then
-	as_fn_error $? "Only one of --enable-pcsc, --enable-openct, --enable-ctapi can be specified!" "$LINENO" 5
-fi
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
-$as_echo_n "checking how to run the C preprocessor... " >&6; }
-# On Suns, sometimes $CPP names a directory.
-if test -n "$CPP" && test -d "$CPP"; then
-  CPP=
-fi
-if test -z "$CPP"; then
-  if test "${ac_cv_prog_CPP+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-      # Double quotes because CPP needs to be expanded
-    for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
-    do
-      ac_preproc_ok=false
-for ac_c_preproc_warn_flag in '' yes
-do
-  # Use a header file that comes with gcc, so configuring glibc
-  # with a fresh cross-compiler works.
-  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-  # <limits.h> exists even on freestanding compilers.
-  # On the NeXT, cc -E runs the code through the compiler's parser,
-  # not just through cpp. "Syntax error" is here to catch this case.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-		     Syntax error
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-
-else
-  # Broken: fails on valid input.
-continue
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-  # OK, works on sane cases.  Now check whether nonexistent headers
-  # can be detected and how.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <ac_nonexistent.h>
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-  # Broken: success on invalid input.
-continue
-else
-  # Passes both tests.
-ac_preproc_ok=:
-break
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.i conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then :
-  break
-fi
-
-    done
-    ac_cv_prog_CPP=$CPP
-
-fi
-  CPP=$ac_cv_prog_CPP
-else
-  ac_cv_prog_CPP=$CPP
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
-$as_echo "$CPP" >&6; }
-ac_preproc_ok=false
-for ac_c_preproc_warn_flag in '' yes
-do
-  # Use a header file that comes with gcc, so configuring glibc
-  # with a fresh cross-compiler works.
-  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-  # <limits.h> exists even on freestanding compilers.
-  # On the NeXT, cc -E runs the code through the compiler's parser,
-  # not just through cpp. "Syntax error" is here to catch this case.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-		     Syntax error
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-
-else
-  # Broken: fails on valid input.
-continue
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-  # OK, works on sane cases.  Now check whether nonexistent headers
-  # can be detected and how.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <ac_nonexistent.h>
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-  # Broken: success on invalid input.
-continue
-else
-  # Passes both tests.
-ac_preproc_ok=:
-break
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.i conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then :
-
-else
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
-See \`config.log' for more details" "$LINENO" 5 ; }
-fi
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5
-$as_echo_n "checking whether ln -s works... " >&6; }
-LN_S=$as_ln_s
-if test "$LN_S" = "ln -s"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5
-$as_echo "no, using $LN_S" >&6; }
-fi
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5
-$as_echo_n "checking for a sed that does not truncate output... " >&6; }
-if test "${ac_cv_path_SED+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-            ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
-     for ac_i in 1 2 3 4 5 6 7; do
-       ac_script="$ac_script$as_nl$ac_script"
-     done
-     echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed
-     { ac_script=; unset ac_script;}
-     if test -z "$SED"; then
-  ac_path_SED_found=false
-  # Loop through the user's path and test for each of PROGNAME-LIST
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_prog in sed gsed; do
-    for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_SED="$as_dir/$ac_prog$ac_exec_ext"
-      { test -f "$ac_path_SED" && $as_test_x "$ac_path_SED"; } || continue
-# Check for GNU ac_path_SED and select it if it is found.
-  # Check for GNU $ac_path_SED
-case `"$ac_path_SED" --version 2>&1` in
-*GNU*)
-  ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;;
-*)
-  ac_count=0
-  $as_echo_n 0123456789 >"conftest.in"
-  while :
-  do
-    cat "conftest.in" "conftest.in" >"conftest.tmp"
-    mv "conftest.tmp" "conftest.in"
-    cp "conftest.in" "conftest.nl"
-    $as_echo '' >> "conftest.nl"
-    "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break
-    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-    as_fn_arith $ac_count + 1 && ac_count=$as_val
-    if test $ac_count -gt ${ac_path_SED_max-0}; then
-      # Best one so far, save it but keep looking for a better one
-      ac_cv_path_SED="$ac_path_SED"
-      ac_path_SED_max=$ac_count
-    fi
-    # 10*(2^10) chars as input seems more than enough
-    test $ac_count -gt 10 && break
-  done
-  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
-
-      $ac_path_SED_found && break 3
-    done
-  done
-  done
-IFS=$as_save_IFS
-  if test -z "$ac_cv_path_SED"; then
-    as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5
-  fi
-else
-  ac_cv_path_SED=$SED
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5
-$as_echo "$ac_cv_path_SED" >&6; }
- SED="$ac_cv_path_SED"
-  rm -f conftest.sed
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5
-$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
-set x ${MAKE-make}
-ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
-if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\"" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat >conftest.make <<\_ACEOF
-SHELL = /bin/sh
-all:
-	@echo '@@@%%%=$(MAKE)=@@@%%%'
-_ACEOF
-# GNU make sometimes prints "make[1]: Entering ...", which would confuse us.
-case `${MAKE-make} -f conftest.make 2>/dev/null` in
-  *@@@%%%=?*=@@@%%%*)
-    eval ac_cv_prog_make_${ac_make}_set=yes;;
-  *)
-    eval ac_cv_prog_make_${ac_make}_set=no;;
-esac
-rm -f conftest.make
-fi
-if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-  SET_MAKE=
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-  SET_MAKE="MAKE=${MAKE-make}"
-fi
-
-
-
-		case `pwd` in
-  *\ * | *\	*)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5
-$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;;
-esac
-
-
-
-macro_version='2.2.6b'
-macro_revision='1.3017'
-
-
-
-
-
-
-
-
-
-
-
-
-
-ltmain="$ac_aux_dir/ltmain.sh"
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5
-$as_echo_n "checking for a sed that does not truncate output... " >&6; }
-if test "${ac_cv_path_SED+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-            ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
-     for ac_i in 1 2 3 4 5 6 7; do
-       ac_script="$ac_script$as_nl$ac_script"
-     done
-     echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed
-     { ac_script=; unset ac_script;}
-     if test -z "$SED"; then
-  ac_path_SED_found=false
-  # Loop through the user's path and test for each of PROGNAME-LIST
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_prog in sed gsed; do
-    for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_SED="$as_dir/$ac_prog$ac_exec_ext"
-      { test -f "$ac_path_SED" && $as_test_x "$ac_path_SED"; } || continue
-# Check for GNU ac_path_SED and select it if it is found.
-  # Check for GNU $ac_path_SED
-case `"$ac_path_SED" --version 2>&1` in
-*GNU*)
-  ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;;
-*)
-  ac_count=0
-  $as_echo_n 0123456789 >"conftest.in"
-  while :
-  do
-    cat "conftest.in" "conftest.in" >"conftest.tmp"
-    mv "conftest.tmp" "conftest.in"
-    cp "conftest.in" "conftest.nl"
-    $as_echo '' >> "conftest.nl"
-    "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break
-    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-    as_fn_arith $ac_count + 1 && ac_count=$as_val
-    if test $ac_count -gt ${ac_path_SED_max-0}; then
-      # Best one so far, save it but keep looking for a better one
-      ac_cv_path_SED="$ac_path_SED"
-      ac_path_SED_max=$ac_count
-    fi
-    # 10*(2^10) chars as input seems more than enough
-    test $ac_count -gt 10 && break
-  done
-  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
-
-      $ac_path_SED_found && break 3
-    done
-  done
-  done
-IFS=$as_save_IFS
-  if test -z "$ac_cv_path_SED"; then
-    as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5
-  fi
-else
-  ac_cv_path_SED=$SED
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5
-$as_echo "$ac_cv_path_SED" >&6; }
- SED="$ac_cv_path_SED"
-  rm -f conftest.sed
-
-test -z "$SED" && SED=sed
-Xsed="$SED -e 1s/^X//"
-
-
-
-
-
-
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5
-$as_echo_n "checking for fgrep... " >&6; }
-if test "${ac_cv_path_FGREP+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1
-   then ac_cv_path_FGREP="$GREP -F"
-   else
-     if test -z "$FGREP"; then
-  ac_path_FGREP_found=false
-  # Loop through the user's path and test for each of PROGNAME-LIST
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_prog in fgrep; do
-    for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext"
-      { test -f "$ac_path_FGREP" && $as_test_x "$ac_path_FGREP"; } || continue
-# Check for GNU ac_path_FGREP and select it if it is found.
-  # Check for GNU $ac_path_FGREP
-case `"$ac_path_FGREP" --version 2>&1` in
-*GNU*)
-  ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;;
-*)
-  ac_count=0
-  $as_echo_n 0123456789 >"conftest.in"
-  while :
-  do
-    cat "conftest.in" "conftest.in" >"conftest.tmp"
-    mv "conftest.tmp" "conftest.in"
-    cp "conftest.in" "conftest.nl"
-    $as_echo 'FGREP' >> "conftest.nl"
-    "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break
-    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-    as_fn_arith $ac_count + 1 && ac_count=$as_val
-    if test $ac_count -gt ${ac_path_FGREP_max-0}; then
-      # Best one so far, save it but keep looking for a better one
-      ac_cv_path_FGREP="$ac_path_FGREP"
-      ac_path_FGREP_max=$ac_count
-    fi
-    # 10*(2^10) chars as input seems more than enough
-    test $ac_count -gt 10 && break
-  done
-  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
-
-      $ac_path_FGREP_found && break 3
-    done
-  done
-  done
-IFS=$as_save_IFS
-  if test -z "$ac_cv_path_FGREP"; then
-    as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
-  fi
-else
-  ac_cv_path_FGREP=$FGREP
-fi
-
-   fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5
-$as_echo "$ac_cv_path_FGREP" >&6; }
- FGREP="$ac_cv_path_FGREP"
-
-
-test -z "$GREP" && GREP=grep
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-# Check whether --with-gnu-ld was given.
-if test "${with_gnu_ld+set}" = set; then :
-  withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
-else
-  with_gnu_ld=no
-fi
-
-ac_prog=ld
-if test "$GCC" = yes; then
-  # Check if gcc -print-prog-name=ld gives a path.
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5
-$as_echo_n "checking for ld used by $CC... " >&6; }
-  case $host in
-  *-*-mingw*)
-    # gcc leaves a trailing carriage return which upsets mingw
-    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
-  *)
-    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
-  esac
-  case $ac_prog in
-    # Accept absolute paths.
-    [\\/]* | ?:[\\/]*)
-      re_direlt='/[^/][^/]*/\.\./'
-      # Canonicalize the pathname of ld
-      ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'`
-      while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
-	ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
-      done
-      test -z "$LD" && LD="$ac_prog"
-      ;;
-  "")
-    # If it fails, then pretend we aren't using GCC.
-    ac_prog=ld
-    ;;
-  *)
-    # If it is relative, then search for the first ld in PATH.
-    with_gnu_ld=unknown
-    ;;
-  esac
-elif test "$with_gnu_ld" = yes; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5
-$as_echo_n "checking for GNU ld... " >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5
-$as_echo_n "checking for non-GNU ld... " >&6; }
-fi
-if test "${lt_cv_path_LD+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -z "$LD"; then
-  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-  for ac_dir in $PATH; do
-    IFS="$lt_save_ifs"
-    test -z "$ac_dir" && ac_dir=.
-    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
-      lt_cv_path_LD="$ac_dir/$ac_prog"
-      # Check to see if the program is GNU ld.  I'd rather use --version,
-      # but apparently some variants of GNU ld only accept -v.
-      # Break only if it was the GNU/non-GNU ld that we prefer.
-      case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
-      *GNU* | *'with BFD'*)
-	test "$with_gnu_ld" != no && break
-	;;
-      *)
-	test "$with_gnu_ld" != yes && break
-	;;
-      esac
-    fi
-  done
-  IFS="$lt_save_ifs"
-else
-  lt_cv_path_LD="$LD" # Let the user override the test with a path.
-fi
-fi
-
-LD="$lt_cv_path_LD"
-if test -n "$LD"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
-$as_echo "$LD" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5
-$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; }
-if test "${lt_cv_prog_gnu_ld+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  # I'd rather use --version here, but apparently some GNU lds only accept -v.
-case `$LD -v 2>&1 </dev/null` in
-*GNU* | *'with BFD'*)
-  lt_cv_prog_gnu_ld=yes
-  ;;
-*)
-  lt_cv_prog_gnu_ld=no
-  ;;
-esac
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5
-$as_echo "$lt_cv_prog_gnu_ld" >&6; }
-with_gnu_ld=$lt_cv_prog_gnu_ld
-
-
-
-
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5
-$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; }
-if test "${lt_cv_path_NM+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$NM"; then
-  # Let the user override the test.
-  lt_cv_path_NM="$NM"
-else
-  lt_nm_to_check="${ac_tool_prefix}nm"
-  if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
-    lt_nm_to_check="$lt_nm_to_check nm"
-  fi
-  for lt_tmp_nm in $lt_nm_to_check; do
-    lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-    for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
-      IFS="$lt_save_ifs"
-      test -z "$ac_dir" && ac_dir=.
-      tmp_nm="$ac_dir/$lt_tmp_nm"
-      if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
-	# Check to see if the nm accepts a BSD-compat flag.
-	# Adding the `sed 1q' prevents false positives on HP-UX, which says:
-	#   nm: unknown option "B" ignored
-	# Tru64's nm complains that /dev/null is an invalid object file
-	case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
-	*/dev/null* | *'Invalid file or object type'*)
-	  lt_cv_path_NM="$tmp_nm -B"
-	  break
-	  ;;
-	*)
-	  case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
-	  */dev/null*)
-	    lt_cv_path_NM="$tmp_nm -p"
-	    break
-	    ;;
-	  *)
-	    lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
-	    continue # so that we can try to find one that supports BSD flags
-	    ;;
-	  esac
-	  ;;
-	esac
-      fi
-    done
-    IFS="$lt_save_ifs"
-  done
-  : ${lt_cv_path_NM=no}
-fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5
-$as_echo "$lt_cv_path_NM" >&6; }
-if test "$lt_cv_path_NM" != "no"; then
-  NM="$lt_cv_path_NM"
-else
-  # Didn't find any BSD compatible name lister, look for dumpbin.
-  if test -n "$ac_tool_prefix"; then
-  for ac_prog in "dumpbin -symbols" "link -dump -symbols"
-  do
-    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_DUMPBIN+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$DUMPBIN"; then
-  ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-DUMPBIN=$ac_cv_prog_DUMPBIN
-if test -n "$DUMPBIN"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5
-$as_echo "$DUMPBIN" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-    test -n "$DUMPBIN" && break
-  done
-fi
-if test -z "$DUMPBIN"; then
-  ac_ct_DUMPBIN=$DUMPBIN
-  for ac_prog in "dumpbin -symbols" "link -dump -symbols"
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_DUMPBIN+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_DUMPBIN"; then
-  ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_DUMPBIN="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN
-if test -n "$ac_ct_DUMPBIN"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5
-$as_echo "$ac_ct_DUMPBIN" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$ac_ct_DUMPBIN" && break
-done
-
-  if test "x$ac_ct_DUMPBIN" = x; then
-    DUMPBIN=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    DUMPBIN=$ac_ct_DUMPBIN
-  fi
-fi
-
-
-  if test "$DUMPBIN" != ":"; then
-    NM="$DUMPBIN"
-  fi
-fi
-test -z "$NM" && NM=nm
-
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5
-$as_echo_n "checking the name lister ($NM) interface... " >&6; }
-if test "${lt_cv_nm_interface+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_nm_interface="BSD nm"
-  echo "int some_variable = 0;" > conftest.$ac_ext
-  (eval echo "\"\$as_me:5929: $ac_compile\"" >&5)
-  (eval "$ac_compile" 2>conftest.err)
-  cat conftest.err >&5
-  (eval echo "\"\$as_me:5932: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
-  (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
-  cat conftest.err >&5
-  (eval echo "\"\$as_me:5935: output\"" >&5)
-  cat conftest.out >&5
-  if $GREP 'External.*some_variable' conftest.out > /dev/null; then
-    lt_cv_nm_interface="MS dumpbin"
-  fi
-  rm -f conftest*
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5
-$as_echo "$lt_cv_nm_interface" >&6; }
-
-# find the maximum length of command line arguments
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5
-$as_echo_n "checking the maximum length of command line arguments... " >&6; }
-if test "${lt_cv_sys_max_cmd_len+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-    i=0
-  teststring="ABCD"
-
-  case $build_os in
-  msdosdjgpp*)
-    # On DJGPP, this test can blow up pretty badly due to problems in libc
-    # (any single argument exceeding 2000 bytes causes a buffer overrun
-    # during glob expansion).  Even if it were fixed, the result of this
-    # check would be larger than it should be.
-    lt_cv_sys_max_cmd_len=12288;    # 12K is about right
-    ;;
-
-  gnu*)
-    # Under GNU Hurd, this test is not required because there is
-    # no limit to the length of command line arguments.
-    # Libtool will interpret -1 as no limit whatsoever
-    lt_cv_sys_max_cmd_len=-1;
-    ;;
-
-  cygwin* | mingw* | cegcc*)
-    # On Win9x/ME, this test blows up -- it succeeds, but takes
-    # about 5 minutes as the teststring grows exponentially.
-    # Worse, since 9x/ME are not pre-emptively multitasking,
-    # you end up with a "frozen" computer, even though with patience
-    # the test eventually succeeds (with a max line length of 256k).
-    # Instead, let's just punt: use the minimum linelength reported by
-    # all of the supported platforms: 8192 (on NT/2K/XP).
-    lt_cv_sys_max_cmd_len=8192;
-    ;;
-
-  amigaos*)
-    # On AmigaOS with pdksh, this test takes hours, literally.
-    # So we just punt and use a minimum line length of 8192.
-    lt_cv_sys_max_cmd_len=8192;
-    ;;
-
-  netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
-    # This has been around since 386BSD, at least.  Likely further.
-    if test -x /sbin/sysctl; then
-      lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
-    elif test -x /usr/sbin/sysctl; then
-      lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
-    else
-      lt_cv_sys_max_cmd_len=65536	# usable default for all BSDs
-    fi
-    # And add a safety zone
-    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
-    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
-    ;;
-
-  interix*)
-    # We know the value 262144 and hardcode it with a safety zone (like BSD)
-    lt_cv_sys_max_cmd_len=196608
-    ;;
-
-  osf*)
-    # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
-    # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
-    # nice to cause kernel panics so lets avoid the loop below.
-    # First set a reasonable default.
-    lt_cv_sys_max_cmd_len=16384
-    #
-    if test -x /sbin/sysconfig; then
-      case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
-        *1*) lt_cv_sys_max_cmd_len=-1 ;;
-      esac
-    fi
-    ;;
-  sco3.2v5*)
-    lt_cv_sys_max_cmd_len=102400
-    ;;
-  sysv5* | sco5v6* | sysv4.2uw2*)
-    kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
-    if test -n "$kargmax"; then
-      lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[	 ]//'`
-    else
-      lt_cv_sys_max_cmd_len=32768
-    fi
-    ;;
-  *)
-    lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
-    if test -n "$lt_cv_sys_max_cmd_len"; then
-      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
-      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
-    else
-      # Make teststring a little bigger before we do anything with it.
-      # a 1K string should be a reasonable start.
-      for i in 1 2 3 4 5 6 7 8 ; do
-        teststring=$teststring$teststring
-      done
-      SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
-      # If test is not a shell built-in, we'll probably end up computing a
-      # maximum length that is only half of the actual maximum length, but
-      # we can't tell.
-      while { test "X"`$SHELL $0 --fallback-echo "X$teststring$teststring" 2>/dev/null` \
-	         = "XX$teststring$teststring"; } >/dev/null 2>&1 &&
-	      test $i != 17 # 1/2 MB should be enough
-      do
-        i=`expr $i + 1`
-        teststring=$teststring$teststring
-      done
-      # Only check the string length outside the loop.
-      lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1`
-      teststring=
-      # Add a significant safety factor because C++ compilers can tack on
-      # massive amounts of additional arguments before passing them to the
-      # linker.  It appears as though 1/2 is a usable value.
-      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
-    fi
-    ;;
-  esac
-
-fi
-
-if test -n $lt_cv_sys_max_cmd_len ; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5
-$as_echo "$lt_cv_sys_max_cmd_len" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5
-$as_echo "none" >&6; }
-fi
-max_cmd_len=$lt_cv_sys_max_cmd_len
-
-
-
-
-
-
-: ${CP="cp -f"}
-: ${MV="mv -f"}
-: ${RM="rm -f"}
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands some XSI constructs" >&5
-$as_echo_n "checking whether the shell understands some XSI constructs... " >&6; }
-# Try some XSI features
-xsi_shell=no
-( _lt_dummy="a/b/c"
-  test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \
-      = c,a/b,, \
-    && eval 'test $(( 1 + 1 )) -eq 2 \
-    && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
-  && xsi_shell=yes
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xsi_shell" >&5
-$as_echo "$xsi_shell" >&6; }
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands \"+=\"" >&5
-$as_echo_n "checking whether the shell understands \"+=\"... " >&6; }
-lt_shell_append=no
-( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \
-    >/dev/null 2>&1 \
-  && lt_shell_append=yes
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_shell_append" >&5
-$as_echo "$lt_shell_append" >&6; }
-
-
-if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
-  lt_unset=unset
-else
-  lt_unset=false
-fi
-
-
-
-
-
-# test EBCDIC or ASCII
-case `echo X|tr X '\101'` in
- A) # ASCII based system
-    # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr
-  lt_SP2NL='tr \040 \012'
-  lt_NL2SP='tr \015\012 \040\040'
-  ;;
- *) # EBCDIC based system
-  lt_SP2NL='tr \100 \n'
-  lt_NL2SP='tr \r\n \100\100'
-  ;;
-esac
-
-
-
-
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5
-$as_echo_n "checking for $LD option to reload object files... " >&6; }
-if test "${lt_cv_ld_reload_flag+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_ld_reload_flag='-r'
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5
-$as_echo "$lt_cv_ld_reload_flag" >&6; }
-reload_flag=$lt_cv_ld_reload_flag
-case $reload_flag in
-"" | " "*) ;;
-*) reload_flag=" $reload_flag" ;;
-esac
-reload_cmds='$LD$reload_flag -o $output$reload_objs'
-case $host_os in
-  darwin*)
-    if test "$GCC" = yes; then
-      reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
-    else
-      reload_cmds='$LD$reload_flag -o $output$reload_objs'
-    fi
-    ;;
-esac
-
-
-
-
-
-
-
-
-
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args.
-set dummy ${ac_tool_prefix}objdump; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_OBJDUMP+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$OBJDUMP"; then
-  ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-OBJDUMP=$ac_cv_prog_OBJDUMP
-if test -n "$OBJDUMP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5
-$as_echo "$OBJDUMP" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_OBJDUMP"; then
-  ac_ct_OBJDUMP=$OBJDUMP
-  # Extract the first word of "objdump", so it can be a program name with args.
-set dummy objdump; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_OBJDUMP+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_OBJDUMP"; then
-  ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_OBJDUMP="objdump"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP
-if test -n "$ac_ct_OBJDUMP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5
-$as_echo "$ac_ct_OBJDUMP" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_OBJDUMP" = x; then
-    OBJDUMP="false"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    OBJDUMP=$ac_ct_OBJDUMP
-  fi
-else
-  OBJDUMP="$ac_cv_prog_OBJDUMP"
-fi
-
-test -z "$OBJDUMP" && OBJDUMP=objdump
-
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5
-$as_echo_n "checking how to recognize dependent libraries... " >&6; }
-if test "${lt_cv_deplibs_check_method+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_file_magic_cmd='$MAGIC_CMD'
-lt_cv_file_magic_test_file=
-lt_cv_deplibs_check_method='unknown'
-# Need to set the preceding variable on all platforms that support
-# interlibrary dependencies.
-# 'none' -- dependencies not supported.
-# `unknown' -- same as none, but documents that we really don't know.
-# 'pass_all' -- all dependencies passed with no checks.
-# 'test_compile' -- check by making test program.
-# 'file_magic [[regex]]' -- check by looking for files in library path
-# which responds to the $file_magic_cmd with a given extended regex.
-# If you have `file' or equivalent on your system and you're not sure
-# whether `pass_all' will *always* work, you probably want this one.
-
-case $host_os in
-aix[4-9]*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-beos*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-bsdi[45]*)
-  lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)'
-  lt_cv_file_magic_cmd='/usr/bin/file -L'
-  lt_cv_file_magic_test_file=/shlib/libc.so
-  ;;
-
-cygwin*)
-  # func_win32_libid is a shell function defined in ltmain.sh
-  lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
-  lt_cv_file_magic_cmd='func_win32_libid'
-  ;;
-
-mingw* | pw32*)
-  # Base MSYS/MinGW do not provide the 'file' command needed by
-  # func_win32_libid shell function, so use a weaker test based on 'objdump',
-  # unless we find 'file', for example because we are cross-compiling.
-  if ( file / ) >/dev/null 2>&1; then
-    lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
-    lt_cv_file_magic_cmd='func_win32_libid'
-  else
-    lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
-    lt_cv_file_magic_cmd='$OBJDUMP -f'
-  fi
-  ;;
-
-cegcc)
-  # use the weaker test based on 'objdump'. See mingw*.
-  lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?'
-  lt_cv_file_magic_cmd='$OBJDUMP -f'
-  ;;
-
-darwin* | rhapsody*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-freebsd* | dragonfly*)
-  if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
-    case $host_cpu in
-    i*86 )
-      # Not sure whether the presence of OpenBSD here was a mistake.
-      # Let's accept both of them until this is cleared up.
-      lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library'
-      lt_cv_file_magic_cmd=/usr/bin/file
-      lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
-      ;;
-    esac
-  else
-    lt_cv_deplibs_check_method=pass_all
-  fi
-  ;;
-
-gnu*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-hpux10.20* | hpux11*)
-  lt_cv_file_magic_cmd=/usr/bin/file
-  case $host_cpu in
-  ia64*)
-    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64'
-    lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
-    ;;
-  hppa*64*)
-    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]'
-    lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
-    ;;
-  *)
-    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library'
-    lt_cv_file_magic_test_file=/usr/lib/libc.sl
-    ;;
-  esac
-  ;;
-
-interix[3-9]*)
-  # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
-  lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$'
-  ;;
-
-irix5* | irix6* | nonstopux*)
-  case $LD in
-  *-32|*"-32 ") libmagic=32-bit;;
-  *-n32|*"-n32 ") libmagic=N32;;
-  *-64|*"-64 ") libmagic=64-bit;;
-  *) libmagic=never-match;;
-  esac
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-# This must be Linux ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-netbsd* | netbsdelf*-gnu)
-  if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
-    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
-  else
-    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$'
-  fi
-  ;;
-
-newos6*)
-  lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)'
-  lt_cv_file_magic_cmd=/usr/bin/file
-  lt_cv_file_magic_test_file=/usr/lib/libnls.so
-  ;;
-
-*nto* | *qnx*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-openbsd*)
-  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$'
-  else
-    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
-  fi
-  ;;
-
-osf3* | osf4* | osf5*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-rdos*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-solaris*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-sysv4 | sysv4.3*)
-  case $host_vendor in
-  motorola)
-    lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]'
-    lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
-    ;;
-  ncr)
-    lt_cv_deplibs_check_method=pass_all
-    ;;
-  sequent)
-    lt_cv_file_magic_cmd='/bin/file'
-    lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )'
-    ;;
-  sni)
-    lt_cv_file_magic_cmd='/bin/file'
-    lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib"
-    lt_cv_file_magic_test_file=/lib/libc.so
-    ;;
-  siemens)
-    lt_cv_deplibs_check_method=pass_all
-    ;;
-  pc)
-    lt_cv_deplibs_check_method=pass_all
-    ;;
-  esac
-  ;;
-
-tpf*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-esac
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5
-$as_echo "$lt_cv_deplibs_check_method" >&6; }
-file_magic_cmd=$lt_cv_file_magic_cmd
-deplibs_check_method=$lt_cv_deplibs_check_method
-test -z "$deplibs_check_method" && deplibs_check_method=unknown
-
-
-
-
-
-
-
-
-
-
-
-
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
-set dummy ${ac_tool_prefix}ar; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_AR+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$AR"; then
-  ac_cv_prog_AR="$AR" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_AR="${ac_tool_prefix}ar"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-AR=$ac_cv_prog_AR
-if test -n "$AR"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
-$as_echo "$AR" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_AR"; then
-  ac_ct_AR=$AR
-  # Extract the first word of "ar", so it can be a program name with args.
-set dummy ar; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_AR+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_AR"; then
-  ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_AR="ar"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_AR=$ac_cv_prog_ac_ct_AR
-if test -n "$ac_ct_AR"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5
-$as_echo "$ac_ct_AR" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_AR" = x; then
-    AR="false"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    AR=$ac_ct_AR
-  fi
-else
-  AR="$ac_cv_prog_AR"
-fi
-
-test -z "$AR" && AR=ar
-test -z "$AR_FLAGS" && AR_FLAGS=cru
-
-
-
-
-
-
-
-
-
-
-
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
-set dummy ${ac_tool_prefix}strip; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_STRIP+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$STRIP"; then
-  ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_STRIP="${ac_tool_prefix}strip"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-STRIP=$ac_cv_prog_STRIP
-if test -n "$STRIP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
-$as_echo "$STRIP" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_STRIP"; then
-  ac_ct_STRIP=$STRIP
-  # Extract the first word of "strip", so it can be a program name with args.
-set dummy strip; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_STRIP"; then
-  ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_STRIP="strip"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
-if test -n "$ac_ct_STRIP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
-$as_echo "$ac_ct_STRIP" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_STRIP" = x; then
-    STRIP=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    STRIP=$ac_ct_STRIP
-  fi
-else
-  STRIP="$ac_cv_prog_STRIP"
-fi
-
-test -z "$STRIP" && STRIP=:
-
-
-
-
-
-
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
-set dummy ${ac_tool_prefix}ranlib; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_RANLIB+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$RANLIB"; then
-  ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-RANLIB=$ac_cv_prog_RANLIB
-if test -n "$RANLIB"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5
-$as_echo "$RANLIB" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_RANLIB"; then
-  ac_ct_RANLIB=$RANLIB
-  # Extract the first word of "ranlib", so it can be a program name with args.
-set dummy ranlib; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_RANLIB"; then
-  ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_RANLIB="ranlib"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
-if test -n "$ac_ct_RANLIB"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5
-$as_echo "$ac_ct_RANLIB" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_RANLIB" = x; then
-    RANLIB=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    RANLIB=$ac_ct_RANLIB
-  fi
-else
-  RANLIB="$ac_cv_prog_RANLIB"
-fi
-
-test -z "$RANLIB" && RANLIB=:
-
-
-
-
-
-
-# Determine commands to create old-style static archives.
-old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs'
-old_postinstall_cmds='chmod 644 $oldlib'
-old_postuninstall_cmds=
-
-if test -n "$RANLIB"; then
-  case $host_os in
-  openbsd*)
-    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib"
-    ;;
-  *)
-    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib"
-    ;;
-  esac
-  old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
-fi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-# If no C compiler was specified, use CC.
-LTCC=${LTCC-"$CC"}
-
-# If no C compiler flags were specified, use CFLAGS.
-LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
-
-# Allow CC to be a program name with arguments.
-compiler=$CC
-
-
-# Check for command to grab the raw symbol name followed by C symbol from nm.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5
-$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; }
-if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-
-# These are sane defaults that work on at least a few old systems.
-# [They come from Ultrix.  What could be older than Ultrix?!! ;)]
-
-# Character class describing NM global symbol codes.
-symcode='[BCDEGRST]'
-
-# Regexp to match symbols that can be accessed directly from C.
-sympat='\([_A-Za-z][_A-Za-z0-9]*\)'
-
-# Define system-specific variables.
-case $host_os in
-aix*)
-  symcode='[BCDT]'
-  ;;
-cygwin* | mingw* | pw32* | cegcc*)
-  symcode='[ABCDGISTW]'
-  ;;
-hpux*)
-  if test "$host_cpu" = ia64; then
-    symcode='[ABCDEGRST]'
-  fi
-  ;;
-irix* | nonstopux*)
-  symcode='[BCDEGRST]'
-  ;;
-osf*)
-  symcode='[BCDEGQRST]'
-  ;;
-solaris*)
-  symcode='[BDRT]'
-  ;;
-sco3.2v5*)
-  symcode='[DT]'
-  ;;
-sysv4.2uw2*)
-  symcode='[DT]'
-  ;;
-sysv5* | sco5v6* | unixware* | OpenUNIX*)
-  symcode='[ABDT]'
-  ;;
-sysv4)
-  symcode='[DFNSTU]'
-  ;;
-esac
-
-# If we're using GNU nm, then use its standard symbol codes.
-case `$NM -V 2>&1` in
-*GNU* | *'with BFD'*)
-  symcode='[ABCDGIRSTW]' ;;
-esac
-
-# Transform an extracted symbol line into a proper C declaration.
-# Some systems (esp. on ia64) link data and code symbols differently,
-# so use this general approach.
-lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
-
-# Transform an extracted symbol line into symbol name and symbol address
-lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/  {\"\2\", (void *) \&\2},/p'"
-lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\) $/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/  {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/  {\"lib\2\", (void *) \&\2},/p'"
-
-# Handle CRLF in mingw tool chain
-opt_cr=
-case $build_os in
-mingw*)
-  opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp
-  ;;
-esac
-
-# Try without a prefix underscore, then with it.
-for ac_symprfx in "" "_"; do
-
-  # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol.
-  symxfrm="\\1 $ac_symprfx\\2 \\2"
-
-  # Write the raw and C identifiers.
-  if test "$lt_cv_nm_interface" = "MS dumpbin"; then
-    # Fake it for dumpbin and say T for any non-static function
-    # and D for any global variable.
-    # Also find C++ and __fastcall symbols from MSVC++,
-    # which start with @ or ?.
-    lt_cv_sys_global_symbol_pipe="$AWK '"\
-"     {last_section=section; section=\$ 3};"\
-"     /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
-"     \$ 0!~/External *\|/{next};"\
-"     / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
-"     {if(hide[section]) next};"\
-"     {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\
-"     {split(\$ 0, a, /\||\r/); split(a[2], s)};"\
-"     s[1]~/^[@?]/{print s[1], s[1]; next};"\
-"     s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\
-"     ' prfx=^$ac_symprfx"
-  else
-    lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[	 ]\($symcode$symcode*\)[	 ][	 ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
-  fi
-
-  # Check to see that the pipe works correctly.
-  pipe_works=no
-
-  rm -f conftest*
-  cat > conftest.$ac_ext <<_LT_EOF
-#ifdef __cplusplus
-extern "C" {
-#endif
-char nm_test_var;
-void nm_test_func(void);
-void nm_test_func(void){}
-#ifdef __cplusplus
-}
-#endif
-int main(){nm_test_var='a';nm_test_func();return(0);}
-_LT_EOF
-
-  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-    # Now try to grab the symbols.
-    nlist=conftest.nm
-    if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\""; } >&5
-  (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && test -s "$nlist"; then
-      # Try sorting and uniquifying the output.
-      if sort "$nlist" | uniq > "$nlist"T; then
-	mv -f "$nlist"T "$nlist"
-      else
-	rm -f "$nlist"T
-      fi
-
-      # Make sure that we snagged all the symbols we need.
-      if $GREP ' nm_test_var$' "$nlist" >/dev/null; then
-	if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
-	  cat <<_LT_EOF > conftest.$ac_ext
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-_LT_EOF
-	  # Now generate the symbol file.
-	  eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext'
-
-	  cat <<_LT_EOF >> conftest.$ac_ext
-
-/* The mapping between symbol names and symbols.  */
-const struct {
-  const char *name;
-  void       *address;
-}
-lt__PROGRAM__LTX_preloaded_symbols[] =
-{
-  { "@PROGRAM@", (void *) 0 },
-_LT_EOF
-	  $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/  {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext
-	  cat <<\_LT_EOF >> conftest.$ac_ext
-  {0, (void *) 0}
-};
-
-/* This works around a problem in FreeBSD linker */
-#ifdef FREEBSD_WORKAROUND
-static const void *lt_preloaded_setup() {
-  return lt__PROGRAM__LTX_preloaded_symbols;
-}
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-_LT_EOF
-	  # Now try linking the two files.
-	  mv conftest.$ac_objext conftstm.$ac_objext
-	  lt_save_LIBS="$LIBS"
-	  lt_save_CFLAGS="$CFLAGS"
-	  LIBS="conftstm.$ac_objext"
-	  CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
-	  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
-  (eval $ac_link) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && test -s conftest${ac_exeext}; then
-	    pipe_works=yes
-	  fi
-	  LIBS="$lt_save_LIBS"
-	  CFLAGS="$lt_save_CFLAGS"
-	else
-	  echo "cannot find nm_test_func in $nlist" >&5
-	fi
-      else
-	echo "cannot find nm_test_var in $nlist" >&5
-      fi
-    else
-      echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5
-    fi
-  else
-    echo "$progname: failed program was:" >&5
-    cat conftest.$ac_ext >&5
-  fi
-  rm -rf conftest* conftst*
-
-  # Do not use the global_symbol_pipe unless it works.
-  if test "$pipe_works" = yes; then
-    break
-  else
-    lt_cv_sys_global_symbol_pipe=
-  fi
-done
-
-fi
-
-if test -z "$lt_cv_sys_global_symbol_pipe"; then
-  lt_cv_sys_global_symbol_to_cdecl=
-fi
-if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5
-$as_echo "failed" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5
-$as_echo "ok" >&6; }
-fi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-# Check whether --enable-libtool-lock was given.
-if test "${enable_libtool_lock+set}" = set; then :
-  enableval=$enable_libtool_lock;
-fi
-
-test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
-
-# Some flags need to be propagated to the compiler or linker for good
-# libtool support.
-case $host in
-ia64-*-hpux*)
-  # Find out which ABI we are using.
-  echo 'int i;' > conftest.$ac_ext
-  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-    case `/usr/bin/file conftest.$ac_objext` in
-      *ELF-32*)
-	HPUX_IA64_MODE="32"
-	;;
-      *ELF-64*)
-	HPUX_IA64_MODE="64"
-	;;
-    esac
-  fi
-  rm -rf conftest*
-  ;;
-*-*-irix6*)
-  # Find out which ABI we are using.
-  echo '#line 7126 "configure"' > conftest.$ac_ext
-  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-    if test "$lt_cv_prog_gnu_ld" = yes; then
-      case `/usr/bin/file conftest.$ac_objext` in
-	*32-bit*)
-	  LD="${LD-ld} -melf32bsmip"
-	  ;;
-	*N32*)
-	  LD="${LD-ld} -melf32bmipn32"
-	  ;;
-	*64-bit*)
-	  LD="${LD-ld} -melf64bmip"
-	;;
-      esac
-    else
-      case `/usr/bin/file conftest.$ac_objext` in
-	*32-bit*)
-	  LD="${LD-ld} -32"
-	  ;;
-	*N32*)
-	  LD="${LD-ld} -n32"
-	  ;;
-	*64-bit*)
-	  LD="${LD-ld} -64"
-	  ;;
-      esac
-    fi
-  fi
-  rm -rf conftest*
-  ;;
-
-x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
-s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
-  # Find out which ABI we are using.
-  echo 'int i;' > conftest.$ac_ext
-  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-    case `/usr/bin/file conftest.o` in
-      *32-bit*)
-	case $host in
-	  x86_64-*kfreebsd*-gnu)
-	    LD="${LD-ld} -m elf_i386_fbsd"
-	    ;;
-	  x86_64-*linux*)
-	    LD="${LD-ld} -m elf_i386"
-	    ;;
-	  ppc64-*linux*|powerpc64-*linux*)
-	    LD="${LD-ld} -m elf32ppclinux"
-	    ;;
-	  s390x-*linux*)
-	    LD="${LD-ld} -m elf_s390"
-	    ;;
-	  sparc64-*linux*)
-	    LD="${LD-ld} -m elf32_sparc"
-	    ;;
-	esac
-	;;
-      *64-bit*)
-	case $host in
-	  x86_64-*kfreebsd*-gnu)
-	    LD="${LD-ld} -m elf_x86_64_fbsd"
-	    ;;
-	  x86_64-*linux*)
-	    LD="${LD-ld} -m elf_x86_64"
-	    ;;
-	  ppc*-*linux*|powerpc*-*linux*)
-	    LD="${LD-ld} -m elf64ppc"
-	    ;;
-	  s390*-*linux*|s390*-*tpf*)
-	    LD="${LD-ld} -m elf64_s390"
-	    ;;
-	  sparc*-*linux*)
-	    LD="${LD-ld} -m elf64_sparc"
-	    ;;
-	esac
-	;;
-    esac
-  fi
-  rm -rf conftest*
-  ;;
-
-*-*-sco3.2v5*)
-  # On SCO OpenServer 5, we need -belf to get full-featured binaries.
-  SAVE_CFLAGS="$CFLAGS"
-  CFLAGS="$CFLAGS -belf"
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5
-$as_echo_n "checking whether the C compiler needs -belf... " >&6; }
-if test "${lt_cv_cc_needs_belf+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  lt_cv_cc_needs_belf=yes
-else
-  lt_cv_cc_needs_belf=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-     ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5
-$as_echo "$lt_cv_cc_needs_belf" >&6; }
-  if test x"$lt_cv_cc_needs_belf" != x"yes"; then
-    # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
-    CFLAGS="$SAVE_CFLAGS"
-  fi
-  ;;
-sparc*-*solaris*)
-  # Find out which ABI we are using.
-  echo 'int i;' > conftest.$ac_ext
-  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-    case `/usr/bin/file conftest.o` in
-    *64-bit*)
-      case $lt_cv_prog_gnu_ld in
-      yes*) LD="${LD-ld} -m elf64_sparc" ;;
-      *)
-	if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
-	  LD="${LD-ld} -64"
-	fi
-	;;
-      esac
-      ;;
-    esac
-  fi
-  rm -rf conftest*
-  ;;
-esac
-
-need_locks="$enable_libtool_lock"
-
-
-  case $host_os in
-    rhapsody* | darwin*)
-    if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args.
-set dummy ${ac_tool_prefix}dsymutil; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_DSYMUTIL+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$DSYMUTIL"; then
-  ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-DSYMUTIL=$ac_cv_prog_DSYMUTIL
-if test -n "$DSYMUTIL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5
-$as_echo "$DSYMUTIL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_DSYMUTIL"; then
-  ac_ct_DSYMUTIL=$DSYMUTIL
-  # Extract the first word of "dsymutil", so it can be a program name with args.
-set dummy dsymutil; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_DSYMUTIL+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_DSYMUTIL"; then
-  ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_DSYMUTIL="dsymutil"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL
-if test -n "$ac_ct_DSYMUTIL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5
-$as_echo "$ac_ct_DSYMUTIL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_DSYMUTIL" = x; then
-    DSYMUTIL=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    DSYMUTIL=$ac_ct_DSYMUTIL
-  fi
-else
-  DSYMUTIL="$ac_cv_prog_DSYMUTIL"
-fi
-
-    if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args.
-set dummy ${ac_tool_prefix}nmedit; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_NMEDIT+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$NMEDIT"; then
-  ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-NMEDIT=$ac_cv_prog_NMEDIT
-if test -n "$NMEDIT"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5
-$as_echo "$NMEDIT" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_NMEDIT"; then
-  ac_ct_NMEDIT=$NMEDIT
-  # Extract the first word of "nmedit", so it can be a program name with args.
-set dummy nmedit; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_NMEDIT+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_NMEDIT"; then
-  ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_NMEDIT="nmedit"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT
-if test -n "$ac_ct_NMEDIT"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5
-$as_echo "$ac_ct_NMEDIT" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_NMEDIT" = x; then
-    NMEDIT=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    NMEDIT=$ac_ct_NMEDIT
-  fi
-else
-  NMEDIT="$ac_cv_prog_NMEDIT"
-fi
-
-    if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args.
-set dummy ${ac_tool_prefix}lipo; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_LIPO+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$LIPO"; then
-  ac_cv_prog_LIPO="$LIPO" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_LIPO="${ac_tool_prefix}lipo"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-LIPO=$ac_cv_prog_LIPO
-if test -n "$LIPO"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5
-$as_echo "$LIPO" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_LIPO"; then
-  ac_ct_LIPO=$LIPO
-  # Extract the first word of "lipo", so it can be a program name with args.
-set dummy lipo; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_LIPO+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_LIPO"; then
-  ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_LIPO="lipo"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO
-if test -n "$ac_ct_LIPO"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5
-$as_echo "$ac_ct_LIPO" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_LIPO" = x; then
-    LIPO=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    LIPO=$ac_ct_LIPO
-  fi
-else
-  LIPO="$ac_cv_prog_LIPO"
-fi
-
-    if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args.
-set dummy ${ac_tool_prefix}otool; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_OTOOL+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$OTOOL"; then
-  ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_OTOOL="${ac_tool_prefix}otool"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-OTOOL=$ac_cv_prog_OTOOL
-if test -n "$OTOOL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5
-$as_echo "$OTOOL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_OTOOL"; then
-  ac_ct_OTOOL=$OTOOL
-  # Extract the first word of "otool", so it can be a program name with args.
-set dummy otool; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_OTOOL+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_OTOOL"; then
-  ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_OTOOL="otool"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL
-if test -n "$ac_ct_OTOOL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5
-$as_echo "$ac_ct_OTOOL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_OTOOL" = x; then
-    OTOOL=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    OTOOL=$ac_ct_OTOOL
-  fi
-else
-  OTOOL="$ac_cv_prog_OTOOL"
-fi
-
-    if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args.
-set dummy ${ac_tool_prefix}otool64; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_OTOOL64+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$OTOOL64"; then
-  ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-OTOOL64=$ac_cv_prog_OTOOL64
-if test -n "$OTOOL64"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5
-$as_echo "$OTOOL64" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_OTOOL64"; then
-  ac_ct_OTOOL64=$OTOOL64
-  # Extract the first word of "otool64", so it can be a program name with args.
-set dummy otool64; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_OTOOL64+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_OTOOL64"; then
-  ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_OTOOL64="otool64"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64
-if test -n "$ac_ct_OTOOL64"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5
-$as_echo "$ac_ct_OTOOL64" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_OTOOL64" = x; then
-    OTOOL64=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    OTOOL64=$ac_ct_OTOOL64
-  fi
-else
-  OTOOL64="$ac_cv_prog_OTOOL64"
-fi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5
-$as_echo_n "checking for -single_module linker flag... " >&6; }
-if test "${lt_cv_apple_cc_single_mod+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_apple_cc_single_mod=no
-      if test -z "${LT_MULTI_MODULE}"; then
-	# By default we will add the -single_module flag. You can override
-	# by either setting the environment variable LT_MULTI_MODULE
-	# non-empty at configure time, or by adding -multi_module to the
-	# link flags.
-	rm -rf libconftest.dylib*
-	echo "int foo(void){return 1;}" > conftest.c
-	echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
--dynamiclib -Wl,-single_module conftest.c" >&5
-	$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
-	  -dynamiclib -Wl,-single_module conftest.c 2>conftest.err
-        _lt_result=$?
-	if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then
-	  lt_cv_apple_cc_single_mod=yes
-	else
-	  cat conftest.err >&5
-	fi
-	rm -rf libconftest.dylib*
-	rm -f conftest.*
-      fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5
-$as_echo "$lt_cv_apple_cc_single_mod" >&6; }
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5
-$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; }
-if test "${lt_cv_ld_exported_symbols_list+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_ld_exported_symbols_list=no
-      save_LDFLAGS=$LDFLAGS
-      echo "_main" > conftest.sym
-      LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym"
-      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  lt_cv_ld_exported_symbols_list=yes
-else
-  lt_cv_ld_exported_symbols_list=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-	LDFLAGS="$save_LDFLAGS"
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5
-$as_echo "$lt_cv_ld_exported_symbols_list" >&6; }
-    case $host_os in
-    rhapsody* | darwin1.[012])
-      _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;;
-    darwin1.*)
-      _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
-    darwin*) # darwin 5.x on
-      # if running on 10.5 or later, the deployment target defaults
-      # to the OS version, if on x86, and 10.4, the deployment
-      # target defaults to 10.4. Don't you love it?
-      case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
-	10.0,*86*-darwin8*|10.0,*-darwin[91]*)
-	  _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
-	10.[012]*)
-	  _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
-	10.*)
-	  _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
-      esac
-    ;;
-  esac
-    if test "$lt_cv_apple_cc_single_mod" = "yes"; then
-      _lt_dar_single_mod='$single_module'
-    fi
-    if test "$lt_cv_ld_exported_symbols_list" = "yes"; then
-      _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym'
-    else
-      _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}'
-    fi
-    if test "$DSYMUTIL" != ":"; then
-      _lt_dsymutil='~$DSYMUTIL $lib || :'
-    else
-      _lt_dsymutil=
-    fi
-    ;;
-  esac
-
-for ac_header in dlfcn.h
-do :
-  ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default
-"
-if test "x$ac_cv_header_dlfcn_h" = x""yes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_DLFCN_H 1
-_ACEOF
-
-fi
-
-done
-
-
-
-# Set options
-enable_win32_dll=yes
-
-case $host in
-*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-cegcc*)
-  if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args.
-set dummy ${ac_tool_prefix}as; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_AS+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$AS"; then
-  ac_cv_prog_AS="$AS" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_AS="${ac_tool_prefix}as"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-AS=$ac_cv_prog_AS
-if test -n "$AS"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AS" >&5
-$as_echo "$AS" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_AS"; then
-  ac_ct_AS=$AS
-  # Extract the first word of "as", so it can be a program name with args.
-set dummy as; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_AS+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_AS"; then
-  ac_cv_prog_ac_ct_AS="$ac_ct_AS" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_AS="as"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_AS=$ac_cv_prog_ac_ct_AS
-if test -n "$ac_ct_AS"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AS" >&5
-$as_echo "$ac_ct_AS" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_AS" = x; then
-    AS="false"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    AS=$ac_ct_AS
-  fi
-else
-  AS="$ac_cv_prog_AS"
-fi
-
-  if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args.
-set dummy ${ac_tool_prefix}dlltool; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_DLLTOOL+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$DLLTOOL"; then
-  ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-DLLTOOL=$ac_cv_prog_DLLTOOL
-if test -n "$DLLTOOL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5
-$as_echo "$DLLTOOL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_DLLTOOL"; then
-  ac_ct_DLLTOOL=$DLLTOOL
-  # Extract the first word of "dlltool", so it can be a program name with args.
-set dummy dlltool; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_DLLTOOL+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_DLLTOOL"; then
-  ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_DLLTOOL="dlltool"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL
-if test -n "$ac_ct_DLLTOOL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5
-$as_echo "$ac_ct_DLLTOOL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_DLLTOOL" = x; then
-    DLLTOOL="false"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    DLLTOOL=$ac_ct_DLLTOOL
-  fi
-else
-  DLLTOOL="$ac_cv_prog_DLLTOOL"
-fi
-
-  if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args.
-set dummy ${ac_tool_prefix}objdump; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_OBJDUMP+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$OBJDUMP"; then
-  ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-OBJDUMP=$ac_cv_prog_OBJDUMP
-if test -n "$OBJDUMP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5
-$as_echo "$OBJDUMP" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_OBJDUMP"; then
-  ac_ct_OBJDUMP=$OBJDUMP
-  # Extract the first word of "objdump", so it can be a program name with args.
-set dummy objdump; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_OBJDUMP+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_OBJDUMP"; then
-  ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_OBJDUMP="objdump"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP
-if test -n "$ac_ct_OBJDUMP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5
-$as_echo "$ac_ct_OBJDUMP" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_OBJDUMP" = x; then
-    OBJDUMP="false"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    OBJDUMP=$ac_ct_OBJDUMP
-  fi
-else
-  OBJDUMP="$ac_cv_prog_OBJDUMP"
-fi
-
-  ;;
-esac
-
-test -z "$AS" && AS=as
-
-
-
-
-
-test -z "$DLLTOOL" && DLLTOOL=dlltool
-
-
-
-
-
-test -z "$OBJDUMP" && OBJDUMP=objdump
-
-
-
-
-
-
-
-        enable_dlopen=no
-
-
-
-            # Check whether --enable-shared was given.
-if test "${enable_shared+set}" = set; then :
-  enableval=$enable_shared; p=${PACKAGE-default}
-    case $enableval in
-    yes) enable_shared=yes ;;
-    no) enable_shared=no ;;
-    *)
-      enable_shared=no
-      # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
-      for pkg in $enableval; do
-	IFS="$lt_save_ifs"
-	if test "X$pkg" = "X$p"; then
-	  enable_shared=yes
-	fi
-      done
-      IFS="$lt_save_ifs"
-      ;;
-    esac
-else
-  enable_shared=yes
-fi
-
-
-
-
-
-
-
-
-
-  # Check whether --enable-static was given.
-if test "${enable_static+set}" = set; then :
-  enableval=$enable_static; p=${PACKAGE-default}
-    case $enableval in
-    yes) enable_static=yes ;;
-    no) enable_static=no ;;
-    *)
-     enable_static=no
-      # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
-      for pkg in $enableval; do
-	IFS="$lt_save_ifs"
-	if test "X$pkg" = "X$p"; then
-	  enable_static=yes
-	fi
-      done
-      IFS="$lt_save_ifs"
-      ;;
-    esac
-else
-  enable_static=yes
-fi
-
-
-
-
-
-
-
-
-
-
-# Check whether --with-pic was given.
-if test "${with_pic+set}" = set; then :
-  withval=$with_pic; pic_mode="$withval"
-else
-  pic_mode=default
-fi
-
-
-test -z "$pic_mode" && pic_mode=default
-
-
-
-
-
-
-
-  # Check whether --enable-fast-install was given.
-if test "${enable_fast_install+set}" = set; then :
-  enableval=$enable_fast_install; p=${PACKAGE-default}
-    case $enableval in
-    yes) enable_fast_install=yes ;;
-    no) enable_fast_install=no ;;
-    *)
-      enable_fast_install=no
-      # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
-      for pkg in $enableval; do
-	IFS="$lt_save_ifs"
-	if test "X$pkg" = "X$p"; then
-	  enable_fast_install=yes
-	fi
-      done
-      IFS="$lt_save_ifs"
-      ;;
-    esac
-else
-  enable_fast_install=yes
-fi
-
-
-
-
-
-
-
-
-
-
-
-# This can be used to rebuild libtool when needed
-LIBTOOL_DEPS="$ltmain"
-
-# Always use our own libtool.
-LIBTOOL='$(SHELL) $(top_builddir)/libtool'
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-test -z "$LN_S" && LN_S="ln -s"
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-if test -n "${ZSH_VERSION+set}" ; then
-   setopt NO_GLOB_SUBST
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5
-$as_echo_n "checking for objdir... " >&6; }
-if test "${lt_cv_objdir+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  rm -f .libs 2>/dev/null
-mkdir .libs 2>/dev/null
-if test -d .libs; then
-  lt_cv_objdir=.libs
-else
-  # MS-DOS does not allow filenames that begin with a dot.
-  lt_cv_objdir=_libs
-fi
-rmdir .libs 2>/dev/null
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5
-$as_echo "$lt_cv_objdir" >&6; }
-objdir=$lt_cv_objdir
-
-
-
-
-
-cat >>confdefs.h <<_ACEOF
-#define LT_OBJDIR "$lt_cv_objdir/"
-_ACEOF
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-case $host_os in
-aix3*)
-  # AIX sometimes has problems with the GCC collect2 program.  For some
-  # reason, if we set the COLLECT_NAMES environment variable, the problems
-  # vanish in a puff of smoke.
-  if test "X${COLLECT_NAMES+set}" != Xset; then
-    COLLECT_NAMES=
-    export COLLECT_NAMES
-  fi
-  ;;
-esac
-
-# Sed substitution that helps us do robust quoting.  It backslashifies
-# metacharacters that are still active within double-quoted strings.
-sed_quote_subst='s/\(["`$\\]\)/\\\1/g'
-
-# Same as above, but do not quote variable references.
-double_quote_subst='s/\(["`\\]\)/\\\1/g'
-
-# Sed substitution to delay expansion of an escaped shell variable in a
-# double_quote_subst'ed string.
-delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
-
-# Sed substitution to delay expansion of an escaped single quote.
-delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g'
-
-# Sed substitution to avoid accidental globbing in evaled expressions
-no_glob_subst='s/\*/\\\*/g'
-
-# Global variables:
-ofile=libtool
-can_build_shared=yes
-
-# All known linkers require a `.a' archive for static linking (except MSVC,
-# which needs '.lib').
-libext=a
-
-with_gnu_ld="$lt_cv_prog_gnu_ld"
-
-old_CC="$CC"
-old_CFLAGS="$CFLAGS"
-
-# Set sane defaults for various variables
-test -z "$CC" && CC=cc
-test -z "$LTCC" && LTCC=$CC
-test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS
-test -z "$LD" && LD=ld
-test -z "$ac_objext" && ac_objext=o
-
-for cc_temp in $compiler""; do
-  case $cc_temp in
-    compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
-    distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
-    \-*) ;;
-    *) break;;
-  esac
-done
-cc_basename=`$ECHO "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
-
-
-# Only perform the check for file, if the check method requires it
-test -z "$MAGIC_CMD" && MAGIC_CMD=file
-case $deplibs_check_method in
-file_magic*)
-  if test "$file_magic_cmd" = '$MAGIC_CMD'; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5
-$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; }
-if test "${lt_cv_path_MAGIC_CMD+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $MAGIC_CMD in
-[\\/*] |  ?:[\\/]*)
-  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
-  ;;
-*)
-  lt_save_MAGIC_CMD="$MAGIC_CMD"
-  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-  ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
-  for ac_dir in $ac_dummy; do
-    IFS="$lt_save_ifs"
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/${ac_tool_prefix}file; then
-      lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file"
-      if test -n "$file_magic_test_file"; then
-	case $deplibs_check_method in
-	"file_magic "*)
-	  file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
-	  MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
-	  if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
-	    $EGREP "$file_magic_regex" > /dev/null; then
-	    :
-	  else
-	    cat <<_LT_EOF 1>&2
-
-*** Warning: the command libtool uses to detect shared libraries,
-*** $file_magic_cmd, produces output that libtool cannot recognize.
-*** The result is that libtool may fail to recognize shared libraries
-*** as such.  This will affect the creation of libtool libraries that
-*** depend on shared libraries, but programs linked with such libtool
-*** libraries will work regardless of this problem.  Nevertheless, you
-*** may want to report the problem to your system manager and/or to
-*** bug-libtool at gnu.org
-
-_LT_EOF
-	  fi ;;
-	esac
-      fi
-      break
-    fi
-  done
-  IFS="$lt_save_ifs"
-  MAGIC_CMD="$lt_save_MAGIC_CMD"
-  ;;
-esac
-fi
-
-MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
-if test -n "$MAGIC_CMD"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5
-$as_echo "$MAGIC_CMD" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-
-
-
-if test -z "$lt_cv_path_MAGIC_CMD"; then
-  if test -n "$ac_tool_prefix"; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5
-$as_echo_n "checking for file... " >&6; }
-if test "${lt_cv_path_MAGIC_CMD+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $MAGIC_CMD in
-[\\/*] |  ?:[\\/]*)
-  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
-  ;;
-*)
-  lt_save_MAGIC_CMD="$MAGIC_CMD"
-  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-  ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
-  for ac_dir in $ac_dummy; do
-    IFS="$lt_save_ifs"
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/file; then
-      lt_cv_path_MAGIC_CMD="$ac_dir/file"
-      if test -n "$file_magic_test_file"; then
-	case $deplibs_check_method in
-	"file_magic "*)
-	  file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
-	  MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
-	  if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
-	    $EGREP "$file_magic_regex" > /dev/null; then
-	    :
-	  else
-	    cat <<_LT_EOF 1>&2
-
-*** Warning: the command libtool uses to detect shared libraries,
-*** $file_magic_cmd, produces output that libtool cannot recognize.
-*** The result is that libtool may fail to recognize shared libraries
-*** as such.  This will affect the creation of libtool libraries that
-*** depend on shared libraries, but programs linked with such libtool
-*** libraries will work regardless of this problem.  Nevertheless, you
-*** may want to report the problem to your system manager and/or to
-*** bug-libtool at gnu.org
-
-_LT_EOF
-	  fi ;;
-	esac
-      fi
-      break
-    fi
-  done
-  IFS="$lt_save_ifs"
-  MAGIC_CMD="$lt_save_MAGIC_CMD"
-  ;;
-esac
-fi
-
-MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
-if test -n "$MAGIC_CMD"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5
-$as_echo "$MAGIC_CMD" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  else
-    MAGIC_CMD=:
-  fi
-fi
-
-  fi
-  ;;
-esac
-
-# Use C for the default configuration in the libtool script
-
-lt_save_CC="$CC"
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-# Source file extension for C test sources.
-ac_ext=c
-
-# Object file extension for compiled C test sources.
-objext=o
-objext=$objext
-
-# Code to be used in simple compile tests
-lt_simple_compile_test_code="int some_variable = 0;"
-
-# Code to be used in simple link tests
-lt_simple_link_test_code='int main(){return(0);}'
-
-
-
-
-
-
-
-# If no C compiler was specified, use CC.
-LTCC=${LTCC-"$CC"}
-
-# If no C compiler flags were specified, use CFLAGS.
-LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
-
-# Allow CC to be a program name with arguments.
-compiler=$CC
-
-# Save the default compiler, since it gets overwritten when the other
-# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP.
-compiler_DEFAULT=$CC
-
-# save warnings/boilerplate of simple test code
-ac_outfile=conftest.$ac_objext
-echo "$lt_simple_compile_test_code" >conftest.$ac_ext
-eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
-_lt_compiler_boilerplate=`cat conftest.err`
-$RM conftest*
-
-ac_outfile=conftest.$ac_objext
-echo "$lt_simple_link_test_code" >conftest.$ac_ext
-eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
-_lt_linker_boilerplate=`cat conftest.err`
-$RM -r conftest*
-
-
-## CAVEAT EMPTOR:
-## There is no encapsulation within the following macros, do not change
-## the running order or otherwise move them around unless you know exactly
-## what you are doing...
-if test -n "$compiler"; then
-
-lt_prog_compiler_no_builtin_flag=
-
-if test "$GCC" = yes; then
-  lt_prog_compiler_no_builtin_flag=' -fno-builtin'
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
-$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; }
-if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_rtti_exceptions=no
-   ac_outfile=conftest.$ac_objext
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-   lt_compiler_flag="-fno-rtti -fno-exceptions"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   # The option is referenced via a variable to avoid confusing sed.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:8686: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>conftest.err)
-   ac_status=$?
-   cat conftest.err >&5
-   echo "$as_me:8690: \$? = $ac_status" >&5
-   if (exit $ac_status) && test -s "$ac_outfile"; then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings other than the usual output.
-     $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
-     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
-       lt_cv_prog_compiler_rtti_exceptions=yes
-     fi
-   fi
-   $RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
-$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; }
-
-if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then
-    lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions"
-else
-    :
-fi
-
-fi
-
-
-
-
-
-
-  lt_prog_compiler_wl=
-lt_prog_compiler_pic=
-lt_prog_compiler_static=
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
-$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
-
-  if test "$GCC" = yes; then
-    lt_prog_compiler_wl='-Wl,'
-    lt_prog_compiler_static='-static'
-
-    case $host_os in
-      aix*)
-      # All AIX code is PIC.
-      if test "$host_cpu" = ia64; then
-	# AIX 5 now supports IA64 processor
-	lt_prog_compiler_static='-Bstatic'
-      fi
-      ;;
-
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            lt_prog_compiler_pic='-fPIC'
-        ;;
-      m68k)
-            # FIXME: we need at least 68020 code to build shared libraries, but
-            # adding the `-m68020' flag to GCC prevents building anything better,
-            # like `-m68040'.
-            lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4'
-        ;;
-      esac
-      ;;
-
-    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
-      # PIC is the default for these OSes.
-      ;;
-
-    mingw* | cygwin* | pw32* | os2* | cegcc*)
-      # This hack is so that the source file can tell whether it is being
-      # built for inclusion in a dll (and should export symbols for example).
-      # Although the cygwin gcc ignores -fPIC, still need this for old-style
-      # (--disable-auto-import) libraries
-      lt_prog_compiler_pic='-DDLL_EXPORT'
-      ;;
-
-    darwin* | rhapsody*)
-      # PIC is the default on this platform
-      # Common symbols not allowed in MH_DYLIB files
-      lt_prog_compiler_pic='-fno-common'
-      ;;
-
-    hpux*)
-      # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
-      # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
-      # sets the default TLS model and affects inlining.
-      case $host_cpu in
-      hppa*64*)
-	# +Z the default
-	;;
-      *)
-	lt_prog_compiler_pic='-fPIC'
-	;;
-      esac
-      ;;
-
-    interix[3-9]*)
-      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
-      # Instead, we relocate shared libraries at runtime.
-      ;;
-
-    msdosdjgpp*)
-      # Just because we use GCC doesn't mean we suddenly get shared libraries
-      # on systems that don't support them.
-      lt_prog_compiler_can_build_shared=no
-      enable_shared=no
-      ;;
-
-    *nto* | *qnx*)
-      # QNX uses GNU C++, but need to define -shared option too, otherwise
-      # it will coredump.
-      lt_prog_compiler_pic='-fPIC -shared'
-      ;;
-
-    sysv4*MP*)
-      if test -d /usr/nec; then
-	lt_prog_compiler_pic=-Kconform_pic
-      fi
-      ;;
-
-    *)
-      lt_prog_compiler_pic='-fPIC'
-      ;;
-    esac
-  else
-    # PORTME Check for flag to pass linker flags through the system compiler.
-    case $host_os in
-    aix*)
-      lt_prog_compiler_wl='-Wl,'
-      if test "$host_cpu" = ia64; then
-	# AIX 5 now supports IA64 processor
-	lt_prog_compiler_static='-Bstatic'
-      else
-	lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp'
-      fi
-      ;;
-
-    mingw* | cygwin* | pw32* | os2* | cegcc*)
-      # This hack is so that the source file can tell whether it is being
-      # built for inclusion in a dll (and should export symbols for example).
-      lt_prog_compiler_pic='-DDLL_EXPORT'
-      ;;
-
-    hpux9* | hpux10* | hpux11*)
-      lt_prog_compiler_wl='-Wl,'
-      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
-      # not for PA HP-UX.
-      case $host_cpu in
-      hppa*64*|ia64*)
-	# +Z the default
-	;;
-      *)
-	lt_prog_compiler_pic='+Z'
-	;;
-      esac
-      # Is there a better lt_prog_compiler_static that works with the bundled CC?
-      lt_prog_compiler_static='${wl}-a ${wl}archive'
-      ;;
-
-    irix5* | irix6* | nonstopux*)
-      lt_prog_compiler_wl='-Wl,'
-      # PIC (with -KPIC) is the default.
-      lt_prog_compiler_static='-non_shared'
-      ;;
-
-    linux* | k*bsd*-gnu | kopensolaris*-gnu)
-      case $cc_basename in
-      # old Intel for x86_64 which still supported -KPIC.
-      ecc*)
-	lt_prog_compiler_wl='-Wl,'
-	lt_prog_compiler_pic='-KPIC'
-	lt_prog_compiler_static='-static'
-        ;;
-      # icc used to be incompatible with GCC.
-      # ICC 10 doesn't accept -KPIC any more.
-      icc* | ifort*)
-	lt_prog_compiler_wl='-Wl,'
-	lt_prog_compiler_pic='-fPIC'
-	lt_prog_compiler_static='-static'
-        ;;
-      # Lahey Fortran 8.1.
-      lf95*)
-	lt_prog_compiler_wl='-Wl,'
-	lt_prog_compiler_pic='--shared'
-	lt_prog_compiler_static='--static'
-	;;
-      pgcc* | pgf77* | pgf90* | pgf95*)
-        # Portland Group compilers (*not* the Pentium gcc compiler,
-	# which looks to be a dead project)
-	lt_prog_compiler_wl='-Wl,'
-	lt_prog_compiler_pic='-fpic'
-	lt_prog_compiler_static='-Bstatic'
-        ;;
-      ccc*)
-        lt_prog_compiler_wl='-Wl,'
-        # All Alpha code is PIC.
-        lt_prog_compiler_static='-non_shared'
-        ;;
-      xl*)
-	# IBM XL C 8.0/Fortran 10.1 on PPC
-	lt_prog_compiler_wl='-Wl,'
-	lt_prog_compiler_pic='-qpic'
-	lt_prog_compiler_static='-qstaticlink'
-	;;
-      *)
-	case `$CC -V 2>&1 | sed 5q` in
-	*Sun\ C*)
-	  # Sun C 5.9
-	  lt_prog_compiler_pic='-KPIC'
-	  lt_prog_compiler_static='-Bstatic'
-	  lt_prog_compiler_wl='-Wl,'
-	  ;;
-	*Sun\ F*)
-	  # Sun Fortran 8.3 passes all unrecognized flags to the linker
-	  lt_prog_compiler_pic='-KPIC'
-	  lt_prog_compiler_static='-Bstatic'
-	  lt_prog_compiler_wl=''
-	  ;;
-	esac
-	;;
-      esac
-      ;;
-
-    newsos6)
-      lt_prog_compiler_pic='-KPIC'
-      lt_prog_compiler_static='-Bstatic'
-      ;;
-
-    *nto* | *qnx*)
-      # QNX uses GNU C++, but need to define -shared option too, otherwise
-      # it will coredump.
-      lt_prog_compiler_pic='-fPIC -shared'
-      ;;
-
-    osf3* | osf4* | osf5*)
-      lt_prog_compiler_wl='-Wl,'
-      # All OSF/1 code is PIC.
-      lt_prog_compiler_static='-non_shared'
-      ;;
-
-    rdos*)
-      lt_prog_compiler_static='-non_shared'
-      ;;
-
-    solaris*)
-      lt_prog_compiler_pic='-KPIC'
-      lt_prog_compiler_static='-Bstatic'
-      case $cc_basename in
-      f77* | f90* | f95*)
-	lt_prog_compiler_wl='-Qoption ld ';;
-      *)
-	lt_prog_compiler_wl='-Wl,';;
-      esac
-      ;;
-
-    sunos4*)
-      lt_prog_compiler_wl='-Qoption ld '
-      lt_prog_compiler_pic='-PIC'
-      lt_prog_compiler_static='-Bstatic'
-      ;;
-
-    sysv4 | sysv4.2uw2* | sysv4.3*)
-      lt_prog_compiler_wl='-Wl,'
-      lt_prog_compiler_pic='-KPIC'
-      lt_prog_compiler_static='-Bstatic'
-      ;;
-
-    sysv4*MP*)
-      if test -d /usr/nec ;then
-	lt_prog_compiler_pic='-Kconform_pic'
-	lt_prog_compiler_static='-Bstatic'
-      fi
-      ;;
-
-    sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
-      lt_prog_compiler_wl='-Wl,'
-      lt_prog_compiler_pic='-KPIC'
-      lt_prog_compiler_static='-Bstatic'
-      ;;
-
-    unicos*)
-      lt_prog_compiler_wl='-Wl,'
-      lt_prog_compiler_can_build_shared=no
-      ;;
-
-    uts4*)
-      lt_prog_compiler_pic='-pic'
-      lt_prog_compiler_static='-Bstatic'
-      ;;
-
-    *)
-      lt_prog_compiler_can_build_shared=no
-      ;;
-    esac
-  fi
-
-case $host_os in
-  # For platforms which do not support PIC, -DPIC is meaningless:
-  *djgpp*)
-    lt_prog_compiler_pic=
-    ;;
-  *)
-    lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
-    ;;
-esac
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_prog_compiler_pic" >&5
-$as_echo "$lt_prog_compiler_pic" >&6; }
-
-
-
-
-
-
-#
-# Check to make sure the PIC flag actually works.
-#
-if test -n "$lt_prog_compiler_pic"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5
-$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; }
-if test "${lt_cv_prog_compiler_pic_works+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_pic_works=no
-   ac_outfile=conftest.$ac_objext
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-   lt_compiler_flag="$lt_prog_compiler_pic -DPIC"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   # The option is referenced via a variable to avoid confusing sed.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:9025: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>conftest.err)
-   ac_status=$?
-   cat conftest.err >&5
-   echo "$as_me:9029: \$? = $ac_status" >&5
-   if (exit $ac_status) && test -s "$ac_outfile"; then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings other than the usual output.
-     $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
-     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
-       lt_cv_prog_compiler_pic_works=yes
-     fi
-   fi
-   $RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5
-$as_echo "$lt_cv_prog_compiler_pic_works" >&6; }
-
-if test x"$lt_cv_prog_compiler_pic_works" = xyes; then
-    case $lt_prog_compiler_pic in
-     "" | " "*) ;;
-     *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;;
-     esac
-else
-    lt_prog_compiler_pic=
-     lt_prog_compiler_can_build_shared=no
-fi
-
-fi
-
-
-
-
-
-
-#
-# Check to make sure the static flag actually works.
-#
-wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\"
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5
-$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; }
-if test "${lt_cv_prog_compiler_static_works+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_static_works=no
-   save_LDFLAGS="$LDFLAGS"
-   LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
-   echo "$lt_simple_link_test_code" > conftest.$ac_ext
-   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
-     # The linker can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     if test -s conftest.err; then
-       # Append any errors to the config.log.
-       cat conftest.err 1>&5
-       $ECHO "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
-       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-       if diff conftest.exp conftest.er2 >/dev/null; then
-         lt_cv_prog_compiler_static_works=yes
-       fi
-     else
-       lt_cv_prog_compiler_static_works=yes
-     fi
-   fi
-   $RM -r conftest*
-   LDFLAGS="$save_LDFLAGS"
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5
-$as_echo "$lt_cv_prog_compiler_static_works" >&6; }
-
-if test x"$lt_cv_prog_compiler_static_works" = xyes; then
-    :
-else
-    lt_prog_compiler_static=
-fi
-
-
-
-
-
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
-$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
-if test "${lt_cv_prog_compiler_c_o+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_c_o=no
-   $RM -r conftest 2>/dev/null
-   mkdir conftest
-   cd conftest
-   mkdir out
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
-   lt_compiler_flag="-o out/conftest2.$ac_objext"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:9130: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>out/conftest.err)
-   ac_status=$?
-   cat out/conftest.err >&5
-   echo "$as_me:9134: \$? = $ac_status" >&5
-   if (exit $ac_status) && test -s out/conftest2.$ac_objext
-   then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
-     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
-     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
-       lt_cv_prog_compiler_c_o=yes
-     fi
-   fi
-   chmod u+w . 2>&5
-   $RM conftest*
-   # SGI C++ compiler will create directory out/ii_files/ for
-   # template instantiation
-   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
-   $RM out/* && rmdir out
-   cd ..
-   $RM -r conftest
-   $RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
-$as_echo "$lt_cv_prog_compiler_c_o" >&6; }
-
-
-
-
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
-$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
-if test "${lt_cv_prog_compiler_c_o+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_c_o=no
-   $RM -r conftest 2>/dev/null
-   mkdir conftest
-   cd conftest
-   mkdir out
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
-   lt_compiler_flag="-o out/conftest2.$ac_objext"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:9185: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>out/conftest.err)
-   ac_status=$?
-   cat out/conftest.err >&5
-   echo "$as_me:9189: \$? = $ac_status" >&5
-   if (exit $ac_status) && test -s out/conftest2.$ac_objext
-   then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
-     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
-     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
-       lt_cv_prog_compiler_c_o=yes
-     fi
-   fi
-   chmod u+w . 2>&5
-   $RM conftest*
-   # SGI C++ compiler will create directory out/ii_files/ for
-   # template instantiation
-   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
-   $RM out/* && rmdir out
-   cd ..
-   $RM -r conftest
-   $RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
-$as_echo "$lt_cv_prog_compiler_c_o" >&6; }
-
-
-
-
-hard_links="nottested"
-if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then
-  # do not overwrite the value of need_locks provided by the user
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5
-$as_echo_n "checking if we can lock with hard links... " >&6; }
-  hard_links=yes
-  $RM conftest*
-  ln conftest.a conftest.b 2>/dev/null && hard_links=no
-  touch conftest.a
-  ln conftest.a conftest.b 2>&5 || hard_links=no
-  ln conftest.a conftest.b 2>/dev/null && hard_links=no
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5
-$as_echo "$hard_links" >&6; }
-  if test "$hard_links" = no; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
-$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
-    need_locks=warn
-  fi
-else
-  need_locks=no
-fi
-
-
-
-
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
-$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
-
-  runpath_var=
-  allow_undefined_flag=
-  always_export_symbols=no
-  archive_cmds=
-  archive_expsym_cmds=
-  compiler_needs_object=no
-  enable_shared_with_static_runtimes=no
-  export_dynamic_flag_spec=
-  export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
-  hardcode_automatic=no
-  hardcode_direct=no
-  hardcode_direct_absolute=no
-  hardcode_libdir_flag_spec=
-  hardcode_libdir_flag_spec_ld=
-  hardcode_libdir_separator=
-  hardcode_minus_L=no
-  hardcode_shlibpath_var=unsupported
-  inherit_rpath=no
-  link_all_deplibs=unknown
-  module_cmds=
-  module_expsym_cmds=
-  old_archive_from_new_cmds=
-  old_archive_from_expsyms_cmds=
-  thread_safe_flag_spec=
-  whole_archive_flag_spec=
-  # include_expsyms should be a list of space-separated symbols to be *always*
-  # included in the symbol list
-  include_expsyms=
-  # exclude_expsyms can be an extended regexp of symbols to exclude
-  # it will be wrapped by ` (' and `)$', so one must not match beginning or
-  # end of line.  Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
-  # as well as any symbol that contains `d'.
-  exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'
-  # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
-  # platforms (ab)use it in PIC code, but their linkers get confused if
-  # the symbol is explicitly referenced.  Since portable code cannot
-  # rely on this symbol name, it's probably fine to never include it in
-  # preloaded symbol tables.
-  # Exclude shared library initialization/finalization symbols.
-  extract_expsyms_cmds=
-
-  case $host_os in
-  cygwin* | mingw* | pw32* | cegcc*)
-    # FIXME: the MSVC++ port hasn't been tested in a loooong time
-    # When not using gcc, we currently assume that we are using
-    # Microsoft Visual C++.
-    if test "$GCC" != yes; then
-      with_gnu_ld=no
-    fi
-    ;;
-  interix*)
-    # we just hope/assume this is gcc and not c89 (= MSVC++)
-    with_gnu_ld=yes
-    ;;
-  openbsd*)
-    with_gnu_ld=no
-    ;;
-  linux* | k*bsd*-gnu)
-    link_all_deplibs=no
-    ;;
-  esac
-
-  ld_shlibs=yes
-  if test "$with_gnu_ld" = yes; then
-    # If archive_cmds runs LD, not CC, wlarc should be empty
-    wlarc='${wl}'
-
-    # Set some defaults for GNU ld with shared library support. These
-    # are reset later if shared libraries are not supported. Putting them
-    # here allows them to be overridden if necessary.
-    runpath_var=LD_RUN_PATH
-    hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-    export_dynamic_flag_spec='${wl}--export-dynamic'
-    # ancient GNU ld didn't support --whole-archive et. al.
-    if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then
-      whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
-    else
-      whole_archive_flag_spec=
-    fi
-    supports_anon_versioning=no
-    case `$LD -v 2>&1` in
-      *GNU\ gold*) supports_anon_versioning=yes ;;
-      *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
-      *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
-      *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
-      *\ 2.11.*) ;; # other 2.11 versions
-      *) supports_anon_versioning=yes ;;
-    esac
-
-    # See if GNU ld supports shared libraries.
-    case $host_os in
-    aix[3-9]*)
-      # On AIX/PPC, the GNU linker is very broken
-      if test "$host_cpu" != ia64; then
-	ld_shlibs=no
-	cat <<_LT_EOF 1>&2
-
-*** Warning: the GNU linker, at least up to release 2.9.1, is reported
-*** to be unable to reliably create shared libraries on AIX.
-*** Therefore, libtool is disabling shared libraries support.  If you
-*** really care for shared libraries, you may want to modify your PATH
-*** so that a non-GNU linker is found, and then restart.
-
-_LT_EOF
-      fi
-      ;;
-
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-            archive_expsym_cmds=''
-        ;;
-      m68k)
-            archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
-            hardcode_libdir_flag_spec='-L$libdir'
-            hardcode_minus_L=yes
-        ;;
-      esac
-      ;;
-
-    beos*)
-      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	allow_undefined_flag=unsupported
-	# Joseph Beckenbach <jrb3 at best.com> says some releases of gcc
-	# support --undefined.  This deserves some investigation.  FIXME
-	archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-      else
-	ld_shlibs=no
-      fi
-      ;;
-
-    cygwin* | mingw* | pw32* | cegcc*)
-      # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless,
-      # as there is no search path for DLLs.
-      hardcode_libdir_flag_spec='-L$libdir'
-      allow_undefined_flag=unsupported
-      always_export_symbols=no
-      enable_shared_with_static_runtimes=yes
-      export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
-
-      if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
-        archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-	# If the export-symbols file already is a .def file (1st line
-	# is EXPORTS), use it as is; otherwise, prepend...
-	archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-	  cp $export_symbols $output_objdir/$soname.def;
-	else
-	  echo EXPORTS > $output_objdir/$soname.def;
-	  cat $export_symbols >> $output_objdir/$soname.def;
-	fi~
-	$CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-      else
-	ld_shlibs=no
-      fi
-      ;;
-
-    interix[3-9]*)
-      hardcode_direct=no
-      hardcode_shlibpath_var=no
-      hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
-      export_dynamic_flag_spec='${wl}-E'
-      # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
-      # Instead, shared libraries are loaded at an image base (0x10000000 by
-      # default) and relocated if they conflict, which is a slow very memory
-      # consuming and fragmenting process.  To avoid this, we pick a random,
-      # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
-      # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
-      archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-      archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-      ;;
-
-    gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
-      tmp_diet=no
-      if test "$host_os" = linux-dietlibc; then
-	case $cc_basename in
-	  diet\ *) tmp_diet=yes;;	# linux-dietlibc with static linking (!diet-dyn)
-	esac
-      fi
-      if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
-	 && test "$tmp_diet" = no
-      then
-	tmp_addflag=
-	tmp_sharedflag='-shared'
-	case $cc_basename,$host_cpu in
-        pgcc*)				# Portland Group C compiler
-	  whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
-	  tmp_addflag=' $pic_flag'
-	  ;;
-	pgf77* | pgf90* | pgf95*)	# Portland Group f77 and f90 compilers
-	  whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
-	  tmp_addflag=' $pic_flag -Mnomain' ;;
-	ecc*,ia64* | icc*,ia64*)	# Intel C compiler on ia64
-	  tmp_addflag=' -i_dynamic' ;;
-	efc*,ia64* | ifort*,ia64*)	# Intel Fortran compiler on ia64
-	  tmp_addflag=' -i_dynamic -nofor_main' ;;
-	ifc* | ifort*)			# Intel Fortran compiler
-	  tmp_addflag=' -nofor_main' ;;
-	lf95*)				# Lahey Fortran 8.1
-	  whole_archive_flag_spec=
-	  tmp_sharedflag='--shared' ;;
-	xl[cC]*)			# IBM XL C 8.0 on PPC (deal with xlf below)
-	  tmp_sharedflag='-qmkshrobj'
-	  tmp_addflag= ;;
-	esac
-	case `$CC -V 2>&1 | sed 5q` in
-	*Sun\ C*)			# Sun C 5.9
-	  whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
-	  compiler_needs_object=yes
-	  tmp_sharedflag='-G' ;;
-	*Sun\ F*)			# Sun Fortran 8.3
-	  tmp_sharedflag='-G' ;;
-	esac
-	archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-
-        if test "x$supports_anon_versioning" = xyes; then
-          archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
-	    cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-	    echo "local: *; };" >> $output_objdir/$libname.ver~
-	    $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
-        fi
-
-	case $cc_basename in
-	xlf*)
-	  # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
-	  whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive'
-	  hardcode_libdir_flag_spec=
-	  hardcode_libdir_flag_spec_ld='-rpath $libdir'
-	  archive_cmds='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib'
-	  if test "x$supports_anon_versioning" = xyes; then
-	    archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
-	      cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-	      echo "local: *; };" >> $output_objdir/$libname.ver~
-	      $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
-	  fi
-	  ;;
-	esac
-      else
-        ld_shlibs=no
-      fi
-      ;;
-
-    netbsd* | netbsdelf*-gnu)
-      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-	archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
-	wlarc=
-      else
-	archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-      fi
-      ;;
-
-    solaris*)
-      if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then
-	ld_shlibs=no
-	cat <<_LT_EOF 1>&2
-
-*** Warning: The releases 2.8.* of the GNU linker cannot reliably
-*** create shared libraries on Solaris systems.  Therefore, libtool
-*** is disabling shared libraries support.  We urge you to upgrade GNU
-*** binutils to release 2.9.1 or newer.  Another option is to modify
-*** your PATH or compiler configuration so that the native linker is
-*** used, and then restart.
-
-_LT_EOF
-      elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-      else
-	ld_shlibs=no
-      fi
-      ;;
-
-    sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
-      case `$LD -v 2>&1` in
-        *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
-	ld_shlibs=no
-	cat <<_LT_EOF 1>&2
-
-*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
-*** reliably create shared libraries on SCO systems.  Therefore, libtool
-*** is disabling shared libraries support.  We urge you to upgrade GNU
-*** binutils to release 2.16.91.0.3 or newer.  Another option is to modify
-*** your PATH or compiler configuration so that the native linker is
-*** used, and then restart.
-
-_LT_EOF
-	;;
-	*)
-	  # For security reasons, it is highly recommended that you always
-	  # use absolute paths for naming shared libraries, and exclude the
-	  # DT_RUNPATH tag from executables and libraries.  But doing so
-	  # requires that you compile everything twice, which is a pain.
-	  if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	    hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-	    archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	    archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-	  else
-	    ld_shlibs=no
-	  fi
-	;;
-      esac
-      ;;
-
-    sunos4*)
-      archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-      wlarc=
-      hardcode_direct=yes
-      hardcode_shlibpath_var=no
-      ;;
-
-    *)
-      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-      else
-	ld_shlibs=no
-      fi
-      ;;
-    esac
-
-    if test "$ld_shlibs" = no; then
-      runpath_var=
-      hardcode_libdir_flag_spec=
-      export_dynamic_flag_spec=
-      whole_archive_flag_spec=
-    fi
-  else
-    # PORTME fill in a description of your system's linker (not GNU ld)
-    case $host_os in
-    aix3*)
-      allow_undefined_flag=unsupported
-      always_export_symbols=yes
-      archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
-      # Note: this linker hardcodes the directories in LIBPATH if there
-      # are no directories specified by -L.
-      hardcode_minus_L=yes
-      if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
-	# Neither direct hardcoding nor static linking is supported with a
-	# broken collect2.
-	hardcode_direct=unsupported
-      fi
-      ;;
-
-    aix[4-9]*)
-      if test "$host_cpu" = ia64; then
-	# On IA64, the linker does run time linking by default, so we don't
-	# have to do anything special.
-	aix_use_runtimelinking=no
-	exp_sym_flag='-Bexport'
-	no_entry_flag=""
-      else
-	# If we're using GNU nm, then we don't want the "-C" option.
-	# -C means demangle to AIX nm, but means don't demangle with GNU nm
-	if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
-	  export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
-	else
-	  export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
-	fi
-	aix_use_runtimelinking=no
-
-	# Test if we are trying to use run time linking or normal
-	# AIX style linking. If -brtl is somewhere in LDFLAGS, we
-	# need to do runtime linking.
-	case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
-	  for ld_flag in $LDFLAGS; do
-	  if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
-	    aix_use_runtimelinking=yes
-	    break
-	  fi
-	  done
-	  ;;
-	esac
-
-	exp_sym_flag='-bexport'
-	no_entry_flag='-bnoentry'
-      fi
-
-      # When large executables or shared objects are built, AIX ld can
-      # have problems creating the table of contents.  If linking a library
-      # or program results in "error TOC overflow" add -mminimal-toc to
-      # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
-      # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
-
-      archive_cmds=''
-      hardcode_direct=yes
-      hardcode_direct_absolute=yes
-      hardcode_libdir_separator=':'
-      link_all_deplibs=yes
-      file_list_spec='${wl}-f,'
-
-      if test "$GCC" = yes; then
-	case $host_os in aix4.[012]|aix4.[012].*)
-	# We only want to do this on AIX 4.2 and lower, the check
-	# below for broken collect2 doesn't work under 4.3+
-	  collect2name=`${CC} -print-prog-name=collect2`
-	  if test -f "$collect2name" &&
-	   strings "$collect2name" | $GREP resolve_lib_name >/dev/null
-	  then
-	  # We have reworked collect2
-	  :
-	  else
-	  # We have old collect2
-	  hardcode_direct=unsupported
-	  # It fails to find uninstalled libraries when the uninstalled
-	  # path is not listed in the libpath.  Setting hardcode_minus_L
-	  # to unsupported forces relinking
-	  hardcode_minus_L=yes
-	  hardcode_libdir_flag_spec='-L$libdir'
-	  hardcode_libdir_separator=
-	  fi
-	  ;;
-	esac
-	shared_flag='-shared'
-	if test "$aix_use_runtimelinking" = yes; then
-	  shared_flag="$shared_flag "'${wl}-G'
-	fi
-	link_all_deplibs=no
-      else
-	# not using gcc
-	if test "$host_cpu" = ia64; then
-	# VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
-	# chokes on -Wl,-G. The following line is correct:
-	  shared_flag='-G'
-	else
-	  if test "$aix_use_runtimelinking" = yes; then
-	    shared_flag='${wl}-G'
-	  else
-	    shared_flag='${wl}-bM:SRE'
-	  fi
-	fi
-      fi
-
-      export_dynamic_flag_spec='${wl}-bexpall'
-      # It seems that -bexpall does not export symbols beginning with
-      # underscore (_), so it is better to generate a list of symbols to export.
-      always_export_symbols=yes
-      if test "$aix_use_runtimelinking" = yes; then
-	# Warning - without using the other runtime loading flags (-brtl),
-	# -berok will link without error, but may produce a broken library.
-	allow_undefined_flag='-berok'
-        # Determine the default libpath from the value encoded in an
-        # empty executable.
-        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-
-lt_aix_libpath_sed='
-    /Import File Strings/,/^$/ {
-	/^0/ {
-	    s/^0  *\(.*\)$/\1/
-	    p
-	}
-    }'
-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-# Check for a 64-bit object if we didn't find anything.
-if test -z "$aix_libpath"; then
-  aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-fi
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
-
-        hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
-        archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
-      else
-	if test "$host_cpu" = ia64; then
-	  hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
-	  allow_undefined_flag="-z nodefs"
-	  archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
-	else
-	 # Determine the default libpath from the value encoded in an
-	 # empty executable.
-	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-
-lt_aix_libpath_sed='
-    /Import File Strings/,/^$/ {
-	/^0/ {
-	    s/^0  *\(.*\)$/\1/
-	    p
-	}
-    }'
-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-# Check for a 64-bit object if we didn't find anything.
-if test -z "$aix_libpath"; then
-  aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-fi
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
-
-	 hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
-	  # Warning - without using the other run time loading flags,
-	  # -berok will link without error, but may produce a broken library.
-	  no_undefined_flag=' ${wl}-bernotok'
-	  allow_undefined_flag=' ${wl}-berok'
-	  # Exported symbols can be pulled into shared objects from archives
-	  whole_archive_flag_spec='$convenience'
-	  archive_cmds_need_lc=yes
-	  # This is similar to how AIX traditionally builds its shared libraries.
-	  archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
-	fi
-      fi
-      ;;
-
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-            archive_expsym_cmds=''
-        ;;
-      m68k)
-            archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
-            hardcode_libdir_flag_spec='-L$libdir'
-            hardcode_minus_L=yes
-        ;;
-      esac
-      ;;
-
-    bsdi[45]*)
-      export_dynamic_flag_spec=-rdynamic
-      ;;
-
-    cygwin* | mingw* | pw32* | cegcc*)
-      # When not using gcc, we currently assume that we are using
-      # Microsoft Visual C++.
-      # hardcode_libdir_flag_spec is actually meaningless, as there is
-      # no search path for DLLs.
-      hardcode_libdir_flag_spec=' '
-      allow_undefined_flag=unsupported
-      # Tell ltmain to make .lib files, not .a files.
-      libext=lib
-      # Tell ltmain to make .dll files, not .so files.
-      shrext_cmds=".dll"
-      # FIXME: Setting linknames here is a bad hack.
-      archive_cmds='$CC -o $lib $libobjs $compiler_flags `$ECHO "X$deplibs" | $Xsed -e '\''s/ -lc$//'\''` -link -dll~linknames='
-      # The linker will automatically build a .lib file if we build a DLL.
-      old_archive_from_new_cmds='true'
-      # FIXME: Should let the user specify the lib program.
-      old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs'
-      fix_srcfile_path='`cygpath -w "$srcfile"`'
-      enable_shared_with_static_runtimes=yes
-      ;;
-
-    darwin* | rhapsody*)
-
-
-  archive_cmds_need_lc=no
-  hardcode_direct=no
-  hardcode_automatic=yes
-  hardcode_shlibpath_var=unsupported
-  whole_archive_flag_spec=''
-  link_all_deplibs=yes
-  allow_undefined_flag="$_lt_dar_allow_undefined"
-  case $cc_basename in
-     ifort*) _lt_dar_can_shared=yes ;;
-     *) _lt_dar_can_shared=$GCC ;;
-  esac
-  if test "$_lt_dar_can_shared" = "yes"; then
-    output_verbose_link_cmd=echo
-    archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
-    module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
-    archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
-    module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
-
-  else
-  ld_shlibs=no
-  fi
-
-      ;;
-
-    dgux*)
-      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_libdir_flag_spec='-L$libdir'
-      hardcode_shlibpath_var=no
-      ;;
-
-    freebsd1*)
-      ld_shlibs=no
-      ;;
-
-    # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
-    # support.  Future versions do this automatically, but an explicit c++rt0.o
-    # does not break anything, and helps significantly (at the cost of a little
-    # extra space).
-    freebsd2.2*)
-      archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
-      hardcode_libdir_flag_spec='-R$libdir'
-      hardcode_direct=yes
-      hardcode_shlibpath_var=no
-      ;;
-
-    # Unfortunately, older versions of FreeBSD 2 do not have this feature.
-    freebsd2*)
-      archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_direct=yes
-      hardcode_minus_L=yes
-      hardcode_shlibpath_var=no
-      ;;
-
-    # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
-    freebsd* | dragonfly*)
-      archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
-      hardcode_libdir_flag_spec='-R$libdir'
-      hardcode_direct=yes
-      hardcode_shlibpath_var=no
-      ;;
-
-    hpux9*)
-      if test "$GCC" = yes; then
-	archive_cmds='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-      else
-	archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-      fi
-      hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
-      hardcode_libdir_separator=:
-      hardcode_direct=yes
-
-      # hardcode_minus_L: Not really in the search PATH,
-      # but as the default location of the library.
-      hardcode_minus_L=yes
-      export_dynamic_flag_spec='${wl}-E'
-      ;;
-
-    hpux10*)
-      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
-	archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
-      fi
-      if test "$with_gnu_ld" = no; then
-	hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
-	hardcode_libdir_flag_spec_ld='+b $libdir'
-	hardcode_libdir_separator=:
-	hardcode_direct=yes
-	hardcode_direct_absolute=yes
-	export_dynamic_flag_spec='${wl}-E'
-	# hardcode_minus_L: Not really in the search PATH,
-	# but as the default location of the library.
-	hardcode_minus_L=yes
-      fi
-      ;;
-
-    hpux11*)
-      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
-	case $host_cpu in
-	hppa*64*)
-	  archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	ia64*)
-	  archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	*)
-	  archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	esac
-      else
-	case $host_cpu in
-	hppa*64*)
-	  archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	ia64*)
-	  archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	*)
-	  archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	esac
-      fi
-      if test "$with_gnu_ld" = no; then
-	hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
-	hardcode_libdir_separator=:
-
-	case $host_cpu in
-	hppa*64*|ia64*)
-	  hardcode_direct=no
-	  hardcode_shlibpath_var=no
-	  ;;
-	*)
-	  hardcode_direct=yes
-	  hardcode_direct_absolute=yes
-	  export_dynamic_flag_spec='${wl}-E'
-
-	  # hardcode_minus_L: Not really in the search PATH,
-	  # but as the default location of the library.
-	  hardcode_minus_L=yes
-	  ;;
-	esac
-      fi
-      ;;
-
-    irix5* | irix6* | nonstopux*)
-      if test "$GCC" = yes; then
-	archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-	# Try to use the -exported_symbol ld option, if it does not
-	# work, assume that -exports_file does not work either and
-	# implicitly export all symbols.
-        save_LDFLAGS="$LDFLAGS"
-        LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
-        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-int foo(void) {}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
-
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-        LDFLAGS="$save_LDFLAGS"
-      else
-	archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
-	archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
-      fi
-      archive_cmds_need_lc='no'
-      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-      hardcode_libdir_separator=:
-      inherit_rpath=yes
-      link_all_deplibs=yes
-      ;;
-
-    netbsd* | netbsdelf*-gnu)
-      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-	archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
-      else
-	archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
-      fi
-      hardcode_libdir_flag_spec='-R$libdir'
-      hardcode_direct=yes
-      hardcode_shlibpath_var=no
-      ;;
-
-    newsos6)
-      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_direct=yes
-      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-      hardcode_libdir_separator=:
-      hardcode_shlibpath_var=no
-      ;;
-
-    *nto* | *qnx*)
-      ;;
-
-    openbsd*)
-      if test -f /usr/libexec/ld.so; then
-	hardcode_direct=yes
-	hardcode_shlibpath_var=no
-	hardcode_direct_absolute=yes
-	if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-	  archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-	  archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
-	  hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
-	  export_dynamic_flag_spec='${wl}-E'
-	else
-	  case $host_os in
-	   openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
-	     archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-	     hardcode_libdir_flag_spec='-R$libdir'
-	     ;;
-	   *)
-	     archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-	     hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
-	     ;;
-	  esac
-	fi
-      else
-	ld_shlibs=no
-      fi
-      ;;
-
-    os2*)
-      hardcode_libdir_flag_spec='-L$libdir'
-      hardcode_minus_L=yes
-      allow_undefined_flag=unsupported
-      archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$ECHO DATA >> $output_objdir/$libname.def~$ECHO " SINGLE NONSHARED" >> $output_objdir/$libname.def~$ECHO EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
-      old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
-      ;;
-
-    osf3*)
-      if test "$GCC" = yes; then
-	allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
-	archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-      else
-	allow_undefined_flag=' -expect_unresolved \*'
-	archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
-      fi
-      archive_cmds_need_lc='no'
-      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-      hardcode_libdir_separator=:
-      ;;
-
-    osf4* | osf5*)	# as osf3* with the addition of -msym flag
-      if test "$GCC" = yes; then
-	allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
-	archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-	hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-      else
-	allow_undefined_flag=' -expect_unresolved \*'
-	archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
-	archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~
-	$CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp'
-
-	# Both c and cxx compiler support -rpath directly
-	hardcode_libdir_flag_spec='-rpath $libdir'
-      fi
-      archive_cmds_need_lc='no'
-      hardcode_libdir_separator=:
-      ;;
-
-    solaris*)
-      no_undefined_flag=' -z defs'
-      if test "$GCC" = yes; then
-	wlarc='${wl}'
-	archive_cmds='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-	  $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
-      else
-	case `$CC -V 2>&1` in
-	*"Compilers 5.0"*)
-	  wlarc=''
-	  archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	  archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-	  $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
-	  ;;
-	*)
-	  wlarc='${wl}'
-	  archive_cmds='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags'
-	  archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-	  $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
-	  ;;
-	esac
-      fi
-      hardcode_libdir_flag_spec='-R$libdir'
-      hardcode_shlibpath_var=no
-      case $host_os in
-      solaris2.[0-5] | solaris2.[0-5].*) ;;
-      *)
-	# The compiler driver will combine and reorder linker options,
-	# but understands `-z linker_flag'.  GCC discards it without `$wl',
-	# but is careful enough not to reorder.
-	# Supported since Solaris 2.6 (maybe 2.5.1?)
-	if test "$GCC" = yes; then
-	  whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
-	else
-	  whole_archive_flag_spec='-z allextract$convenience -z defaultextract'
-	fi
-	;;
-      esac
-      link_all_deplibs=yes
-      ;;
-
-    sunos4*)
-      if test "x$host_vendor" = xsequent; then
-	# Use $CC to link under sequent, because it throws in some extra .o
-	# files that make .init and .fini sections work.
-	archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
-      fi
-      hardcode_libdir_flag_spec='-L$libdir'
-      hardcode_direct=yes
-      hardcode_minus_L=yes
-      hardcode_shlibpath_var=no
-      ;;
-
-    sysv4)
-      case $host_vendor in
-	sni)
-	  archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	  hardcode_direct=yes # is this really true???
-	;;
-	siemens)
-	  ## LD is ld it makes a PLAMLIB
-	  ## CC just makes a GrossModule.
-	  archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags'
-	  reload_cmds='$CC -r -o $output$reload_objs'
-	  hardcode_direct=no
-        ;;
-	motorola)
-	  archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	  hardcode_direct=no #Motorola manual says yes, but my tests say they lie
-	;;
-      esac
-      runpath_var='LD_RUN_PATH'
-      hardcode_shlibpath_var=no
-      ;;
-
-    sysv4.3*)
-      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_shlibpath_var=no
-      export_dynamic_flag_spec='-Bexport'
-      ;;
-
-    sysv4*MP*)
-      if test -d /usr/nec; then
-	archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	hardcode_shlibpath_var=no
-	runpath_var=LD_RUN_PATH
-	hardcode_runpath_var=yes
-	ld_shlibs=yes
-      fi
-      ;;
-
-    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
-      no_undefined_flag='${wl}-z,text'
-      archive_cmds_need_lc=no
-      hardcode_shlibpath_var=no
-      runpath_var='LD_RUN_PATH'
-
-      if test "$GCC" = yes; then
-	archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      fi
-      ;;
-
-    sysv5* | sco3.2v5* | sco5v6*)
-      # Note: We can NOT use -z defs as we might desire, because we do not
-      # link with -lc, and that would cause any symbols used from libc to
-      # always be unresolved, which means just about no library would
-      # ever link correctly.  If we're not using GNU ld we use -z text
-      # though, which does catch some bad symbols but isn't as heavy-handed
-      # as -z defs.
-      no_undefined_flag='${wl}-z,text'
-      allow_undefined_flag='${wl}-z,nodefs'
-      archive_cmds_need_lc=no
-      hardcode_shlibpath_var=no
-      hardcode_libdir_flag_spec='${wl}-R,$libdir'
-      hardcode_libdir_separator=':'
-      link_all_deplibs=yes
-      export_dynamic_flag_spec='${wl}-Bexport'
-      runpath_var='LD_RUN_PATH'
-
-      if test "$GCC" = yes; then
-	archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      fi
-      ;;
-
-    uts4*)
-      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_libdir_flag_spec='-L$libdir'
-      hardcode_shlibpath_var=no
-      ;;
-
-    *)
-      ld_shlibs=no
-      ;;
-    esac
-
-    if test x$host_vendor = xsni; then
-      case $host in
-      sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
-	export_dynamic_flag_spec='${wl}-Blargedynsym'
-	;;
-      esac
-    fi
-  fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5
-$as_echo "$ld_shlibs" >&6; }
-test "$ld_shlibs" = no && can_build_shared=no
-
-with_gnu_ld=$with_gnu_ld
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-#
-# Do we need to explicitly link libc?
-#
-case "x$archive_cmds_need_lc" in
-x|xyes)
-  # Assume -lc should be added
-  archive_cmds_need_lc=yes
-
-  if test "$enable_shared" = yes && test "$GCC" = yes; then
-    case $archive_cmds in
-    *'~'*)
-      # FIXME: we may have to deal with multi-command sequences.
-      ;;
-    '$CC '*)
-      # Test whether the compiler implicitly links with -lc since on some
-      # systems, -lgcc has to come before -lc. If gcc already passes -lc
-      # to ld, don't add -lc before -lgcc.
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5
-$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; }
-      $RM conftest*
-      echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
-      if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } 2>conftest.err; then
-        soname=conftest
-        lib=conftest
-        libobjs=conftest.$ac_objext
-        deplibs=
-        wl=$lt_prog_compiler_wl
-	pic_flag=$lt_prog_compiler_pic
-        compiler_flags=-v
-        linker_flags=-v
-        verstring=
-        output_objdir=.
-        libname=conftest
-        lt_save_allow_undefined_flag=$allow_undefined_flag
-        allow_undefined_flag=
-        if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5
-  (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-        then
-	  archive_cmds_need_lc=no
-        else
-	  archive_cmds_need_lc=yes
-        fi
-        allow_undefined_flag=$lt_save_allow_undefined_flag
-      else
-        cat conftest.err 1>&5
-      fi
-      $RM conftest*
-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: $archive_cmds_need_lc" >&5
-$as_echo "$archive_cmds_need_lc" >&6; }
-      ;;
-    esac
-  fi
-  ;;
-esac
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
-$as_echo_n "checking dynamic linker characteristics... " >&6; }
-
-if test "$GCC" = yes; then
-  case $host_os in
-    darwin*) lt_awk_arg="/^libraries:/,/LR/" ;;
-    *) lt_awk_arg="/^libraries:/" ;;
-  esac
-  lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"`
-  if $ECHO "$lt_search_path_spec" | $GREP ';' >/dev/null ; then
-    # if the path contains ";" then we assume it to be the separator
-    # otherwise default to the standard path separator (i.e. ":") - it is
-    # assumed that no part of a normal pathname contains ";" but that should
-    # okay in the real world where ";" in dirpaths is itself problematic.
-    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e 's/;/ /g'`
-  else
-    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
-  fi
-  # Ok, now we have the path, separated by spaces, we can step through it
-  # and add multilib dir if necessary.
-  lt_tmp_lt_search_path_spec=
-  lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
-  for lt_sys_path in $lt_search_path_spec; do
-    if test -d "$lt_sys_path/$lt_multi_os_dir"; then
-      lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir"
-    else
-      test -d "$lt_sys_path" && \
-	lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path"
-    fi
-  done
-  lt_search_path_spec=`$ECHO $lt_tmp_lt_search_path_spec | awk '
-BEGIN {RS=" "; FS="/|\n";} {
-  lt_foo="";
-  lt_count=0;
-  for (lt_i = NF; lt_i > 0; lt_i--) {
-    if ($lt_i != "" && $lt_i != ".") {
-      if ($lt_i == "..") {
-        lt_count++;
-      } else {
-        if (lt_count == 0) {
-          lt_foo="/" $lt_i lt_foo;
-        } else {
-          lt_count--;
-        }
-      }
-    }
-  }
-  if (lt_foo != "") { lt_freq[lt_foo]++; }
-  if (lt_freq[lt_foo] == 1) { print lt_foo; }
-}'`
-  sys_lib_search_path_spec=`$ECHO $lt_search_path_spec`
-else
-  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
-fi
-library_names_spec=
-libname_spec='lib$name'
-soname_spec=
-shrext_cmds=".so"
-postinstall_cmds=
-postuninstall_cmds=
-finish_cmds=
-finish_eval=
-shlibpath_var=
-shlibpath_overrides_runpath=unknown
-version_type=none
-dynamic_linker="$host_os ld.so"
-sys_lib_dlsearch_path_spec="/lib /usr/lib"
-need_lib_prefix=unknown
-hardcode_into_libs=no
-
-# when you set need_version to no, make sure it does not cause -set_version
-# flags to be left without arguments
-need_version=unknown
-
-case $host_os in
-aix3*)
-  version_type=linux
-  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
-  shlibpath_var=LIBPATH
-
-  # AIX 3 has no versioning support, so we append a major version to the name.
-  soname_spec='${libname}${release}${shared_ext}$major'
-  ;;
-
-aix[4-9]*)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  hardcode_into_libs=yes
-  if test "$host_cpu" = ia64; then
-    # AIX 5 supports IA64
-    library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
-    shlibpath_var=LD_LIBRARY_PATH
-  else
-    # With GCC up to 2.95.x, collect2 would create an import file
-    # for dependence libraries.  The import file would start with
-    # the line `#! .'.  This would cause the generated library to
-    # depend on `.', always an invalid library.  This was fixed in
-    # development snapshots of GCC prior to 3.0.
-    case $host_os in
-      aix4 | aix4.[01] | aix4.[01].*)
-      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
-	   echo ' yes '
-	   echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then
-	:
-      else
-	can_build_shared=no
-      fi
-      ;;
-    esac
-    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
-    # soname into executable. Probably we can add versioning support to
-    # collect2, so additional links can be useful in future.
-    if test "$aix_use_runtimelinking" = yes; then
-      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
-      # instead of lib<name>.a to let people know that these are not
-      # typical AIX shared libraries.
-      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    else
-      # We preserve .a as extension for shared libraries through AIX4.2
-      # and later when we are not doing run time linking.
-      library_names_spec='${libname}${release}.a $libname.a'
-      soname_spec='${libname}${release}${shared_ext}$major'
-    fi
-    shlibpath_var=LIBPATH
-  fi
-  ;;
-
-amigaos*)
-  case $host_cpu in
-  powerpc)
-    # Since July 2007 AmigaOS4 officially supports .so libraries.
-    # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    ;;
-  m68k)
-    library_names_spec='$libname.ixlibrary $libname.a'
-    # Create ${libname}_ixlibrary.a entries in /sys/libs.
-    finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$ECHO "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
-    ;;
-  esac
-  ;;
-
-beos*)
-  library_names_spec='${libname}${shared_ext}'
-  dynamic_linker="$host_os ld.so"
-  shlibpath_var=LIBRARY_PATH
-  ;;
-
-bsdi[45]*)
-  version_type=linux
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
-  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
-  # the default ld.so.conf also contains /usr/contrib/lib and
-  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
-  # libtool to hard-code these into programs
-  ;;
-
-cygwin* | mingw* | pw32* | cegcc*)
-  version_type=windows
-  shrext_cmds=".dll"
-  need_version=no
-  need_lib_prefix=no
-
-  case $GCC,$host_os in
-  yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*)
-    library_names_spec='$libname.dll.a'
-    # DLL is installed to $(libdir)/../bin by postinstall_cmds
-    postinstall_cmds='base_file=`basename \${file}`~
-      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
-      dldir=$destdir/`dirname \$dlpath`~
-      test -d \$dldir || mkdir -p \$dldir~
-      $install_prog $dir/$dlname \$dldir/$dlname~
-      chmod a+x \$dldir/$dlname~
-      if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
-        eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
-      fi'
-    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
-      dlpath=$dir/\$dldll~
-       $RM \$dlpath'
-    shlibpath_overrides_runpath=yes
-
-    case $host_os in
-    cygwin*)
-      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
-      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-      sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
-      ;;
-    mingw* | cegcc*)
-      # MinGW DLLs use traditional 'lib' prefix
-      soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-      sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
-      if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then
-        # It is most probably a Windows format PATH printed by
-        # mingw gcc, but we are running on Cygwin. Gcc prints its search
-        # path with ; separators, and with drive letters. We can handle the
-        # drive letters (cygwin fileutils understands them), so leave them,
-        # especially as we might pass files found there to a mingw objdump,
-        # which wouldn't understand a cygwinified path. Ahh.
-        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
-      else
-        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
-      fi
-      ;;
-    pw32*)
-      # pw32 DLLs use 'pw' prefix rather than 'lib'
-      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-      ;;
-    esac
-    ;;
-
-  *)
-    library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
-    ;;
-  esac
-  dynamic_linker='Win32 ld.exe'
-  # FIXME: first we should search . and the directory the executable is in
-  shlibpath_var=PATH
-  ;;
-
-darwin* | rhapsody*)
-  dynamic_linker="$host_os dyld"
-  version_type=darwin
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext'
-  soname_spec='${libname}${release}${major}$shared_ext'
-  shlibpath_overrides_runpath=yes
-  shlibpath_var=DYLD_LIBRARY_PATH
-  shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
-
-  sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"
-  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
-  ;;
-
-dgux*)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  ;;
-
-freebsd1*)
-  dynamic_linker=no
-  ;;
-
-freebsd* | dragonfly*)
-  # DragonFly does not have aout.  When/if they implement a new
-  # versioning mechanism, adjust this.
-  if test -x /usr/bin/objformat; then
-    objformat=`/usr/bin/objformat`
-  else
-    case $host_os in
-    freebsd[123]*) objformat=aout ;;
-    *) objformat=elf ;;
-    esac
-  fi
-  version_type=freebsd-$objformat
-  case $version_type in
-    freebsd-elf*)
-      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
-      need_version=no
-      need_lib_prefix=no
-      ;;
-    freebsd-*)
-      library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
-      need_version=yes
-      ;;
-  esac
-  shlibpath_var=LD_LIBRARY_PATH
-  case $host_os in
-  freebsd2*)
-    shlibpath_overrides_runpath=yes
-    ;;
-  freebsd3.[01]* | freebsdelf3.[01]*)
-    shlibpath_overrides_runpath=yes
-    hardcode_into_libs=yes
-    ;;
-  freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
-  freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
-    shlibpath_overrides_runpath=no
-    hardcode_into_libs=yes
-    ;;
-  *) # from 4.6 on, and DragonFly
-    shlibpath_overrides_runpath=yes
-    hardcode_into_libs=yes
-    ;;
-  esac
-  ;;
-
-gnu*)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  hardcode_into_libs=yes
-  ;;
-
-hpux9* | hpux10* | hpux11*)
-  # Give a soname corresponding to the major version so that dld.sl refuses to
-  # link against other versions.
-  version_type=sunos
-  need_lib_prefix=no
-  need_version=no
-  case $host_cpu in
-  ia64*)
-    shrext_cmds='.so'
-    hardcode_into_libs=yes
-    dynamic_linker="$host_os dld.so"
-    shlibpath_var=LD_LIBRARY_PATH
-    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    if test "X$HPUX_IA64_MODE" = X32; then
-      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
-    else
-      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
-    fi
-    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-    ;;
-  hppa*64*)
-    shrext_cmds='.sl'
-    hardcode_into_libs=yes
-    dynamic_linker="$host_os dld.sl"
-    shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
-    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
-    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-    ;;
-  *)
-    shrext_cmds='.sl'
-    dynamic_linker="$host_os dld.sl"
-    shlibpath_var=SHLIB_PATH
-    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    ;;
-  esac
-  # HP-UX runs *really* slowly unless shared libraries are mode 555.
-  postinstall_cmds='chmod 555 $lib'
-  ;;
-
-interix[3-9]*)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
-
-irix5* | irix6* | nonstopux*)
-  case $host_os in
-    nonstopux*) version_type=nonstopux ;;
-    *)
-	if test "$lt_cv_prog_gnu_ld" = yes; then
-		version_type=linux
-	else
-		version_type=irix
-	fi ;;
-  esac
-  need_lib_prefix=no
-  need_version=no
-  soname_spec='${libname}${release}${shared_ext}$major'
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
-  case $host_os in
-  irix5* | nonstopux*)
-    libsuff= shlibsuff=
-    ;;
-  *)
-    case $LD in # libtool.m4 will add one of these switches to LD
-    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
-      libsuff= shlibsuff= libmagic=32-bit;;
-    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
-      libsuff=32 shlibsuff=N32 libmagic=N32;;
-    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
-      libsuff=64 shlibsuff=64 libmagic=64-bit;;
-    *) libsuff= shlibsuff= libmagic=never-match;;
-    esac
-    ;;
-  esac
-  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
-  shlibpath_overrides_runpath=no
-  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
-  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
-  hardcode_into_libs=yes
-  ;;
-
-# No shared lib support for Linux oldld, aout, or coff.
-linux*oldld* | linux*aout* | linux*coff*)
-  dynamic_linker=no
-  ;;
-
-# This must be Linux ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  # Some binutils ld are patched to set DT_RUNPATH
-  save_LDFLAGS=$LDFLAGS
-  save_libdir=$libdir
-  eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \
-       LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\""
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  if  ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then :
-  shlibpath_overrides_runpath=yes
-fi
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-  LDFLAGS=$save_LDFLAGS
-  libdir=$save_libdir
-
-  # This implies no fast_install, which is unacceptable.
-  # Some rework will be needed to allow for fast_install
-  # before this can be enabled.
-  hardcode_into_libs=yes
-
-  # Append ld.so.conf contents to the search path
-  if test -f /etc/ld.so.conf; then
-    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[	 ]*hwcap[	 ]/d;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
-    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
-  fi
-
-  # We used to test for /lib/ld.so.1 and disable shared libraries on
-  # powerpc, because MkLinux only supported shared libraries with the
-  # GNU dynamic linker.  Since this was broken with cross compilers,
-  # most powerpc-linux boxes support dynamic linking these days and
-  # people can always --disable-shared, the test was removed, and we
-  # assume the GNU/Linux dynamic linker is in use.
-  dynamic_linker='GNU/Linux ld.so'
-  ;;
-
-netbsdelf*-gnu)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  dynamic_linker='NetBSD ld.elf_so'
-  ;;
-
-netbsd*)
-  version_type=sunos
-  need_lib_prefix=no
-  need_version=no
-  if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-    dynamic_linker='NetBSD (a.out) ld.so'
-  else
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    dynamic_linker='NetBSD ld.elf_so'
-  fi
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  ;;
-
-newsos6)
-  version_type=linux
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  ;;
-
-*nto* | *qnx*)
-  version_type=qnx
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  dynamic_linker='ldqnx.so'
-  ;;
-
-openbsd*)
-  version_type=sunos
-  sys_lib_dlsearch_path_spec="/usr/lib"
-  need_lib_prefix=no
-  # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
-  case $host_os in
-    openbsd3.3 | openbsd3.3.*)	need_version=yes ;;
-    *)				need_version=no  ;;
-  esac
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-    case $host_os in
-      openbsd2.[89] | openbsd2.[89].*)
-	shlibpath_overrides_runpath=no
-	;;
-      *)
-	shlibpath_overrides_runpath=yes
-	;;
-      esac
-  else
-    shlibpath_overrides_runpath=yes
-  fi
-  ;;
-
-os2*)
-  libname_spec='$name'
-  shrext_cmds=".dll"
-  need_lib_prefix=no
-  library_names_spec='$libname${shared_ext} $libname.a'
-  dynamic_linker='OS/2 ld.exe'
-  shlibpath_var=LIBPATH
-  ;;
-
-osf3* | osf4* | osf5*)
-  version_type=osf
-  need_lib_prefix=no
-  need_version=no
-  soname_spec='${libname}${release}${shared_ext}$major'
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
-  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
-  ;;
-
-rdos*)
-  dynamic_linker=no
-  ;;
-
-solaris*)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  # ldd complains unless libraries are executable
-  postinstall_cmds='chmod +x $lib'
-  ;;
-
-sunos4*)
-  version_type=sunos
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  if test "$with_gnu_ld" = yes; then
-    need_lib_prefix=no
-  fi
-  need_version=yes
-  ;;
-
-sysv4 | sysv4.3*)
-  version_type=linux
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  case $host_vendor in
-    sni)
-      shlibpath_overrides_runpath=no
-      need_lib_prefix=no
-      runpath_var=LD_RUN_PATH
-      ;;
-    siemens)
-      need_lib_prefix=no
-      ;;
-    motorola)
-      need_lib_prefix=no
-      need_version=no
-      shlibpath_overrides_runpath=no
-      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
-      ;;
-  esac
-  ;;
-
-sysv4*MP*)
-  if test -d /usr/nec ;then
-    version_type=linux
-    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
-    soname_spec='$libname${shared_ext}.$major'
-    shlibpath_var=LD_LIBRARY_PATH
-  fi
-  ;;
-
-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
-  version_type=freebsd-elf
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  if test "$with_gnu_ld" = yes; then
-    sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
-  else
-    sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
-    case $host_os in
-      sco3.2v5*)
-        sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
-	;;
-    esac
-  fi
-  sys_lib_dlsearch_path_spec='/usr/lib'
-  ;;
-
-tpf*)
-  # TPF is a cross-target only.  Preferred cross-host = GNU/Linux.
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
-
-uts4*)
-  version_type=linux
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  ;;
-
-*)
-  dynamic_linker=no
-  ;;
-esac
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5
-$as_echo "$dynamic_linker" >&6; }
-test "$dynamic_linker" = no && can_build_shared=no
-
-variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
-if test "$GCC" = yes; then
-  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
-fi
-
-if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
-  sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
-fi
-if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
-  sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
-fi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5
-$as_echo_n "checking how to hardcode library paths into programs... " >&6; }
-hardcode_action=
-if test -n "$hardcode_libdir_flag_spec" ||
-   test -n "$runpath_var" ||
-   test "X$hardcode_automatic" = "Xyes" ; then
-
-  # We can hardcode non-existent directories.
-  if test "$hardcode_direct" != no &&
-     # If the only mechanism to avoid hardcoding is shlibpath_var, we
-     # have to relink, otherwise we might link with an installed library
-     # when we should be linking with a yet-to-be-installed one
-     ## test "$_LT_TAGVAR(hardcode_shlibpath_var, )" != no &&
-     test "$hardcode_minus_L" != no; then
-    # Linking always hardcodes the temporary library directory.
-    hardcode_action=relink
-  else
-    # We can link without hardcoding, and we can hardcode nonexisting dirs.
-    hardcode_action=immediate
-  fi
-else
-  # We cannot hardcode anything, or else we can only hardcode existing
-  # directories.
-  hardcode_action=unsupported
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5
-$as_echo "$hardcode_action" >&6; }
-
-if test "$hardcode_action" = relink ||
-   test "$inherit_rpath" = yes; then
-  # Fast installation is not supported
-  enable_fast_install=no
-elif test "$shlibpath_overrides_runpath" = yes ||
-     test "$enable_shared" = no; then
-  # Fast installation is not necessary
-  enable_fast_install=needless
-fi
-
-
-
-
-
-
-  if test "x$enable_dlopen" != xyes; then
-  enable_dlopen=unknown
-  enable_dlopen_self=unknown
-  enable_dlopen_self_static=unknown
-else
-  lt_cv_dlopen=no
-  lt_cv_dlopen_libs=
-
-  case $host_os in
-  beos*)
-    lt_cv_dlopen="load_add_on"
-    lt_cv_dlopen_libs=
-    lt_cv_dlopen_self=yes
-    ;;
-
-  mingw* | pw32* | cegcc*)
-    lt_cv_dlopen="LoadLibrary"
-    lt_cv_dlopen_libs=
-    ;;
-
-  cygwin*)
-    lt_cv_dlopen="dlopen"
-    lt_cv_dlopen_libs=
-    ;;
-
-  darwin*)
-  # if libdl is installed we need to link against it
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
-$as_echo_n "checking for dlopen in -ldl... " >&6; }
-if test "${ac_cv_lib_dl_dlopen+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldl  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char dlopen ();
-int
-main ()
-{
-return dlopen ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_dl_dlopen=yes
-else
-  ac_cv_lib_dl_dlopen=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
-$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
-if test "x$ac_cv_lib_dl_dlopen" = x""yes; then :
-  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
-else
-
-    lt_cv_dlopen="dyld"
-    lt_cv_dlopen_libs=
-    lt_cv_dlopen_self=yes
-
-fi
-
-    ;;
-
-  *)
-    ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load"
-if test "x$ac_cv_func_shl_load" = x""yes; then :
-  lt_cv_dlopen="shl_load"
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5
-$as_echo_n "checking for shl_load in -ldld... " >&6; }
-if test "${ac_cv_lib_dld_shl_load+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldld  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char shl_load ();
-int
-main ()
-{
-return shl_load ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_dld_shl_load=yes
-else
-  ac_cv_lib_dld_shl_load=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5
-$as_echo "$ac_cv_lib_dld_shl_load" >&6; }
-if test "x$ac_cv_lib_dld_shl_load" = x""yes; then :
-  lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"
-else
-  ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen"
-if test "x$ac_cv_func_dlopen" = x""yes; then :
-  lt_cv_dlopen="dlopen"
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
-$as_echo_n "checking for dlopen in -ldl... " >&6; }
-if test "${ac_cv_lib_dl_dlopen+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldl  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char dlopen ();
-int
-main ()
-{
-return dlopen ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_dl_dlopen=yes
-else
-  ac_cv_lib_dl_dlopen=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
-$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
-if test "x$ac_cv_lib_dl_dlopen" = x""yes; then :
-  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5
-$as_echo_n "checking for dlopen in -lsvld... " >&6; }
-if test "${ac_cv_lib_svld_dlopen+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lsvld  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char dlopen ();
-int
-main ()
-{
-return dlopen ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_svld_dlopen=yes
-else
-  ac_cv_lib_svld_dlopen=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5
-$as_echo "$ac_cv_lib_svld_dlopen" >&6; }
-if test "x$ac_cv_lib_svld_dlopen" = x""yes; then :
-  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5
-$as_echo_n "checking for dld_link in -ldld... " >&6; }
-if test "${ac_cv_lib_dld_dld_link+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldld  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char dld_link ();
-int
-main ()
-{
-return dld_link ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_dld_dld_link=yes
-else
-  ac_cv_lib_dld_dld_link=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5
-$as_echo "$ac_cv_lib_dld_dld_link" >&6; }
-if test "x$ac_cv_lib_dld_dld_link" = x""yes; then :
-  lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"
-fi
-
-
-fi
-
-
-fi
-
-
-fi
-
-
-fi
-
-
-fi
-
-    ;;
-  esac
-
-  if test "x$lt_cv_dlopen" != xno; then
-    enable_dlopen=yes
-  else
-    enable_dlopen=no
-  fi
-
-  case $lt_cv_dlopen in
-  dlopen)
-    save_CPPFLAGS="$CPPFLAGS"
-    test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
-
-    save_LDFLAGS="$LDFLAGS"
-    wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
-
-    save_LIBS="$LIBS"
-    LIBS="$lt_cv_dlopen_libs $LIBS"
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5
-$as_echo_n "checking whether a program can dlopen itself... " >&6; }
-if test "${lt_cv_dlopen_self+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  	  if test "$cross_compiling" = yes; then :
-  lt_cv_dlopen_self=cross
-else
-  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
-  lt_status=$lt_dlunknown
-  cat > conftest.$ac_ext <<_LT_EOF
-#line 11569 "configure"
-#include "confdefs.h"
-
-#if HAVE_DLFCN_H
-#include <dlfcn.h>
-#endif
-
-#include <stdio.h>
-
-#ifdef RTLD_GLOBAL
-#  define LT_DLGLOBAL		RTLD_GLOBAL
-#else
-#  ifdef DL_GLOBAL
-#    define LT_DLGLOBAL		DL_GLOBAL
-#  else
-#    define LT_DLGLOBAL		0
-#  endif
-#endif
-
-/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
-   find out it does not work in some platform. */
-#ifndef LT_DLLAZY_OR_NOW
-#  ifdef RTLD_LAZY
-#    define LT_DLLAZY_OR_NOW		RTLD_LAZY
-#  else
-#    ifdef DL_LAZY
-#      define LT_DLLAZY_OR_NOW		DL_LAZY
-#    else
-#      ifdef RTLD_NOW
-#        define LT_DLLAZY_OR_NOW	RTLD_NOW
-#      else
-#        ifdef DL_NOW
-#          define LT_DLLAZY_OR_NOW	DL_NOW
-#        else
-#          define LT_DLLAZY_OR_NOW	0
-#        endif
-#      endif
-#    endif
-#  endif
-#endif
-
-void fnord() { int i=42;}
-int main ()
-{
-  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-  int status = $lt_dlunknown;
-
-  if (self)
-    {
-      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
-      else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
-      /* dlclose (self); */
-    }
-  else
-    puts (dlerror ());
-
-  return status;
-}
-_LT_EOF
-  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
-  (eval $ac_link) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then
-    (./conftest; exit; ) >&5 2>/dev/null
-    lt_status=$?
-    case x$lt_status in
-      x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;;
-      x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;;
-      x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;;
-    esac
-  else :
-    # compilation failed
-    lt_cv_dlopen_self=no
-  fi
-fi
-rm -fr conftest*
-
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5
-$as_echo "$lt_cv_dlopen_self" >&6; }
-
-    if test "x$lt_cv_dlopen_self" = xyes; then
-      wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5
-$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; }
-if test "${lt_cv_dlopen_self_static+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  	  if test "$cross_compiling" = yes; then :
-  lt_cv_dlopen_self_static=cross
-else
-  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
-  lt_status=$lt_dlunknown
-  cat > conftest.$ac_ext <<_LT_EOF
-#line 11665 "configure"
-#include "confdefs.h"
-
-#if HAVE_DLFCN_H
-#include <dlfcn.h>
-#endif
-
-#include <stdio.h>
-
-#ifdef RTLD_GLOBAL
-#  define LT_DLGLOBAL		RTLD_GLOBAL
-#else
-#  ifdef DL_GLOBAL
-#    define LT_DLGLOBAL		DL_GLOBAL
-#  else
-#    define LT_DLGLOBAL		0
-#  endif
-#endif
-
-/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
-   find out it does not work in some platform. */
-#ifndef LT_DLLAZY_OR_NOW
-#  ifdef RTLD_LAZY
-#    define LT_DLLAZY_OR_NOW		RTLD_LAZY
-#  else
-#    ifdef DL_LAZY
-#      define LT_DLLAZY_OR_NOW		DL_LAZY
-#    else
-#      ifdef RTLD_NOW
-#        define LT_DLLAZY_OR_NOW	RTLD_NOW
-#      else
-#        ifdef DL_NOW
-#          define LT_DLLAZY_OR_NOW	DL_NOW
-#        else
-#          define LT_DLLAZY_OR_NOW	0
-#        endif
-#      endif
-#    endif
-#  endif
-#endif
-
-void fnord() { int i=42;}
-int main ()
-{
-  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-  int status = $lt_dlunknown;
-
-  if (self)
-    {
-      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
-      else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
-      /* dlclose (self); */
-    }
-  else
-    puts (dlerror ());
-
-  return status;
-}
-_LT_EOF
-  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
-  (eval $ac_link) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then
-    (./conftest; exit; ) >&5 2>/dev/null
-    lt_status=$?
-    case x$lt_status in
-      x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;;
-      x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;;
-      x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;;
-    esac
-  else :
-    # compilation failed
-    lt_cv_dlopen_self_static=no
-  fi
-fi
-rm -fr conftest*
-
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5
-$as_echo "$lt_cv_dlopen_self_static" >&6; }
-    fi
-
-    CPPFLAGS="$save_CPPFLAGS"
-    LDFLAGS="$save_LDFLAGS"
-    LIBS="$save_LIBS"
-    ;;
-  esac
-
-  case $lt_cv_dlopen_self in
-  yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
-  *) enable_dlopen_self=unknown ;;
-  esac
-
-  case $lt_cv_dlopen_self_static in
-  yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
-  *) enable_dlopen_self_static=unknown ;;
-  esac
-fi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-striplib=
-old_striplib=
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5
-$as_echo_n "checking whether stripping libraries is possible... " >&6; }
-if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then
-  test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
-  test -z "$striplib" && striplib="$STRIP --strip-unneeded"
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
-# FIXME - insert some real tests, host_os isn't really good enough
-  case $host_os in
-  darwin*)
-    if test -n "$STRIP" ; then
-      striplib="$STRIP -x"
-      old_striplib="$STRIP -S"
-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-    else
-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-    fi
-    ;;
-  *)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-    ;;
-  esac
-fi
-
-
-
-
-
-
-
-
-
-
-
-
-  # Report which library types will actually be built
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5
-$as_echo_n "checking if libtool supports shared libraries... " >&6; }
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5
-$as_echo "$can_build_shared" >&6; }
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5
-$as_echo_n "checking whether to build shared libraries... " >&6; }
-  test "$can_build_shared" = "no" && enable_shared=no
-
-  # On AIX, shared libraries and static libraries use the same namespace, and
-  # are all built from PIC.
-  case $host_os in
-  aix3*)
-    test "$enable_shared" = yes && enable_static=no
-    if test -n "$RANLIB"; then
-      archive_cmds="$archive_cmds~\$RANLIB \$lib"
-      postinstall_cmds='$RANLIB $lib'
-    fi
-    ;;
-
-  aix[4-9]*)
-    if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
-      test "$enable_shared" = yes && enable_static=no
-    fi
-    ;;
-  esac
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5
-$as_echo "$enable_shared" >&6; }
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5
-$as_echo_n "checking whether to build static libraries... " >&6; }
-  # Make sure either enable_shared or enable_static is yes.
-  test "$enable_shared" = yes || enable_static=yes
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5
-$as_echo "$enable_static" >&6; }
-
-
-
-
-fi
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-CC="$lt_save_CC"
-
-
-
-
-
-
-
-
-
-
-
-
-
-        ac_config_commands="$ac_config_commands libtool"
-
-
-
-
-# Only expand once:
-
-
-		if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}windres", so it can be a program name with args.
-set dummy ${ac_tool_prefix}windres; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_RC+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$RC"; then
-  ac_cv_prog_RC="$RC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_RC="${ac_tool_prefix}windres"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-RC=$ac_cv_prog_RC
-if test -n "$RC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RC" >&5
-$as_echo "$RC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_RC"; then
-  ac_ct_RC=$RC
-  # Extract the first word of "windres", so it can be a program name with args.
-set dummy windres; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_RC+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_RC"; then
-  ac_cv_prog_ac_ct_RC="$ac_ct_RC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_RC="windres"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_RC=$ac_cv_prog_ac_ct_RC
-if test -n "$ac_ct_RC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RC" >&5
-$as_echo "$ac_ct_RC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_RC" = x; then
-    RC=""
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    RC=$ac_ct_RC
-  fi
-else
-  RC="$ac_cv_prog_RC"
-fi
-
-
-
-
-# Source file extension for RC test sources.
-ac_ext=rc
-
-# Object file extension for compiled RC test sources.
-objext=o
-objext_RC=$objext
-
-# Code to be used in simple compile tests
-lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }'
-
-# Code to be used in simple link tests
-lt_simple_link_test_code="$lt_simple_compile_test_code"
-
-# ltmain only uses $CC for tagged configurations so make sure $CC is set.
-
-
-
-
-
-
-# If no C compiler was specified, use CC.
-LTCC=${LTCC-"$CC"}
-
-# If no C compiler flags were specified, use CFLAGS.
-LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
-
-# Allow CC to be a program name with arguments.
-compiler=$CC
-
-
-# save warnings/boilerplate of simple test code
-ac_outfile=conftest.$ac_objext
-echo "$lt_simple_compile_test_code" >conftest.$ac_ext
-eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
-_lt_compiler_boilerplate=`cat conftest.err`
-$RM conftest*
-
-ac_outfile=conftest.$ac_objext
-echo "$lt_simple_link_test_code" >conftest.$ac_ext
-eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
-_lt_linker_boilerplate=`cat conftest.err`
-$RM -r conftest*
-
-
-# Allow CC to be a program name with arguments.
-lt_save_CC="$CC"
-lt_save_GCC=$GCC
-GCC=
-CC=${RC-"windres"}
-compiler=$CC
-compiler_RC=$CC
-for cc_temp in $compiler""; do
-  case $cc_temp in
-    compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
-    distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
-    \-*) ;;
-    *) break;;
-  esac
-done
-cc_basename=`$ECHO "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
-
-lt_cv_prog_compiler_c_o_RC=yes
-
-if test -n "$compiler"; then
-  :
-
-
-
-fi
-
-GCC=$lt_save_GCC
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-CC="$lt_save_CC"
-
-
-
-
-
-for ac_prog in xsltproc
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_XSLTPROC+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$XSLTPROC"; then
-  ac_cv_prog_XSLTPROC="$XSLTPROC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_XSLTPROC="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-XSLTPROC=$ac_cv_prog_XSLTPROC
-if test -n "$XSLTPROC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XSLTPROC" >&5
-$as_echo "$XSLTPROC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$XSLTPROC" && break
-done
-
-for ac_prog in git
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_GIT+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$GIT"; then
-  ac_cv_prog_GIT="$GIT" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_GIT="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-GIT=$ac_cv_prog_GIT
-if test -n "$GIT"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GIT" >&5
-$as_echo "$GIT" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$GIT" && break
-done
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking xsl-stylesheets" >&5
-$as_echo_n "checking xsl-stylesheets... " >&6; }
-if test "${xslstylesheetsdir}" = "detect"; then
-	xslstylesheetsdir="no"
-	for f in \
-		/usr/share/xml/docbook/stylesheet/nwalsh \
-		/usr/share/xml/docbook/stylesheet/nwalsh/current \
-		/opt/local/share/xsl/docbook-xsl \
-		/sw/share/xml/xsl/docbook-xsl \
-		/usr/share/sgml/docbook/*; do
-
-		test -e "${f}/html/docbook.xsl" && xslstylesheetsdir="${f}"
-	done
-elif test "${xslstylesheetsdir}" != "no"; then
-	test -e "${xslstylesheetsdir}/html/docbook.xsl" || as_fn_error $? "invalid" "$LINENO" 5
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${xslstylesheetsdir}" >&5
-$as_echo "${xslstylesheetsdir}" >&6; }
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inline" >&5
-$as_echo_n "checking for inline... " >&6; }
-if test "${ac_cv_c_inline+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_cv_c_inline=no
-for ac_kw in inline __inline__ __inline; do
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#ifndef __cplusplus
-typedef int foo_t;
-static $ac_kw foo_t static_foo () {return 0; }
-$ac_kw foo_t foo () {return 0; }
-#endif
-
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_c_inline=$ac_kw
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-  test "$ac_cv_c_inline" != no && break
-done
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5
-$as_echo "$ac_cv_c_inline" >&6; }
-
-case $ac_cv_c_inline in
-  inline | yes) ;;
-  *)
-    case $ac_cv_c_inline in
-      no) ac_val=;;
-      *) ac_val=$ac_cv_c_inline;;
-    esac
-    cat >>confdefs.h <<_ACEOF
-#ifndef __cplusplus
-#define inline $ac_val
-#endif
-_ACEOF
-    ;;
-esac
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
-$as_echo_n "checking for ANSI C header files... " >&6; }
-if test "${ac_cv_header_stdc+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdlib.h>
-#include <stdarg.h>
-#include <string.h>
-#include <float.h>
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_header_stdc=yes
-else
-  ac_cv_header_stdc=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-if test $ac_cv_header_stdc = yes; then
-  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <string.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "memchr" >/dev/null 2>&1; then :
-
-else
-  ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
-  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdlib.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "free" >/dev/null 2>&1; then :
-
-else
-  ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
-  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
-  if test "$cross_compiling" = yes; then :
-  :
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <ctype.h>
-#include <stdlib.h>
-#if ((' ' & 0x0FF) == 0x020)
-# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
-# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
-#else
-# define ISLOWER(c) \
-		   (('a' <= (c) && (c) <= 'i') \
-		     || ('j' <= (c) && (c) <= 'r') \
-		     || ('s' <= (c) && (c) <= 'z'))
-# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
-#endif
-
-#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
-int
-main ()
-{
-  int i;
-  for (i = 0; i < 256; i++)
-    if (XOR (islower (i), ISLOWER (i))
-	|| toupper (i) != TOUPPER (i))
-      return 2;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-
-else
-  ac_cv_header_stdc=no
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
-$as_echo "$ac_cv_header_stdc" >&6; }
-if test $ac_cv_header_stdc = yes; then
-
-$as_echo "#define STDC_HEADERS 1" >>confdefs.h
-
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sys/wait.h that is POSIX.1 compatible" >&5
-$as_echo_n "checking for sys/wait.h that is POSIX.1 compatible... " >&6; }
-if test "${ac_cv_header_sys_wait_h+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <sys/types.h>
-#include <sys/wait.h>
-#ifndef WEXITSTATUS
-# define WEXITSTATUS(stat_val) ((unsigned int) (stat_val) >> 8)
-#endif
-#ifndef WIFEXITED
-# define WIFEXITED(stat_val) (((stat_val) & 255) == 0)
-#endif
-
-int
-main ()
-{
-  int s;
-  wait (&s);
-  s = WIFEXITED (s) ? WEXITSTATUS (s) : 1;
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_header_sys_wait_h=yes
-else
-  ac_cv_header_sys_wait_h=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_sys_wait_h" >&5
-$as_echo "$ac_cv_header_sys_wait_h" >&6; }
-if test $ac_cv_header_sys_wait_h = yes; then
-
-$as_echo "#define HAVE_SYS_WAIT_H 1" >>confdefs.h
-
-fi
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable assertions" >&5
-$as_echo_n "checking whether to enable assertions... " >&6; }
-  # Check whether --enable-assert was given.
-if test "${enable_assert+set}" = set; then :
-  enableval=$enable_assert; ac_enable_assert=$enableval
-     if       test "x$enableval" = xno; then :
-
-$as_echo "#define NDEBUG 1" >>confdefs.h
-
-elif test "x$enableval" != xyes; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: invalid argument supplied to --enable-assert" >&5
-$as_echo "$as_me: WARNING: invalid argument supplied to --enable-assert" >&2;}
-	ac_enable_assert=yes
-fi
-else
-  ac_enable_assert=yes
-fi
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_enable_assert" >&5
-$as_echo "$ac_enable_assert" >&6; }
-
-for ac_header in  \
-	errno.h fcntl.h malloc.h stdlib.h \
-	inttypes.h string.h strings.h \
-	sys/time.h unistd.h getopt.h sys/mman.h
-
-do :
-  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5
-$as_echo_n "checking for an ANSI C-conforming const... " >&6; }
-if test "${ac_cv_c_const+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-/* FIXME: Include the comments suggested by Paul. */
-#ifndef __cplusplus
-  /* Ultrix mips cc rejects this.  */
-  typedef int charset[2];
-  const charset cs;
-  /* SunOS 4.1.1 cc rejects this.  */
-  char const *const *pcpcc;
-  char **ppc;
-  /* NEC SVR4.0.2 mips cc rejects this.  */
-  struct point {int x, y;};
-  static struct point const zero = {0,0};
-  /* AIX XL C 1.02.0.0 rejects this.
-     It does not let you subtract one const X* pointer from another in
-     an arm of an if-expression whose if-part is not a constant
-     expression */
-  const char *g = "string";
-  pcpcc = &g + (g ? g-g : 0);
-  /* HPUX 7.0 cc rejects these. */
-  ++pcpcc;
-  ppc = (char**) pcpcc;
-  pcpcc = (char const *const *) ppc;
-  { /* SCO 3.2v4 cc rejects this.  */
-    char *t;
-    char const *s = 0 ? (char *) 0 : (char const *) 0;
-
-    *t++ = 0;
-    if (s) return 0;
-  }
-  { /* Someone thinks the Sun supposedly-ANSI compiler will reject this.  */
-    int x[] = {25, 17};
-    const int *foo = &x[0];
-    ++foo;
-  }
-  { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */
-    typedef const int *iptr;
-    iptr p = 0;
-    ++p;
-  }
-  { /* AIX XL C 1.02.0.0 rejects this saying
-       "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */
-    struct s { int j; const int *ap[3]; };
-    struct s *b; b->j = 5;
-  }
-  { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */
-    const int foo = 10;
-    if (!foo) return 0;
-  }
-  return !cs[0] && !zero.x;
-#endif
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_c_const=yes
-else
-  ac_cv_c_const=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5
-$as_echo "$ac_cv_c_const" >&6; }
-if test $ac_cv_c_const = no; then
-
-$as_echo "#define const /**/" >>confdefs.h
-
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for uid_t in sys/types.h" >&5
-$as_echo_n "checking for uid_t in sys/types.h... " >&6; }
-if test "${ac_cv_type_uid_t+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <sys/types.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "uid_t" >/dev/null 2>&1; then :
-  ac_cv_type_uid_t=yes
-else
-  ac_cv_type_uid_t=no
-fi
-rm -f conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_uid_t" >&5
-$as_echo "$ac_cv_type_uid_t" >&6; }
-if test $ac_cv_type_uid_t = no; then
-
-$as_echo "#define uid_t int" >>confdefs.h
-
-
-$as_echo "#define gid_t int" >>confdefs.h
-
-fi
-
-ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default"
-if test "x$ac_cv_type_size_t" = x""yes; then :
-
-else
-
-cat >>confdefs.h <<_ACEOF
-#define size_t unsigned int
-_ACEOF
-
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether time.h and sys/time.h may both be included" >&5
-$as_echo_n "checking whether time.h and sys/time.h may both be included... " >&6; }
-if test "${ac_cv_header_time+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <sys/types.h>
-#include <sys/time.h>
-#include <time.h>
-
-int
-main ()
-{
-if ((struct tm *) 0)
-return 0;
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_header_time=yes
-else
-  ac_cv_header_time=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_time" >&5
-$as_echo "$ac_cv_header_time" >&6; }
-if test $ac_cv_header_time = yes; then
-
-$as_echo "#define TIME_WITH_SYS_TIME 1" >>confdefs.h
-
-fi
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for error_at_line" >&5
-$as_echo_n "checking for error_at_line... " >&6; }
-if test "${ac_cv_lib_error_at_line+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <error.h>
-int
-main ()
-{
-error_at_line (0, 0, "", 0, "an error occurred");
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_error_at_line=yes
-else
-  ac_cv_lib_error_at_line=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_error_at_line" >&5
-$as_echo "$ac_cv_lib_error_at_line" >&6; }
-if test $ac_cv_lib_error_at_line = no; then
-  case " $LIBOBJS " in
-  *" error.$ac_objext "* ) ;;
-  *) LIBOBJS="$LIBOBJS error.$ac_objext"
- ;;
-esac
-
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether lstat correctly handles trailing slash" >&5
-$as_echo_n "checking whether lstat correctly handles trailing slash... " >&6; }
-if test "${ac_cv_func_lstat_dereferences_slashed_symlink+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  rm -f conftest.sym conftest.file
-echo >conftest.file
-if test "$as_ln_s" = "ln -s" && ln -s conftest.file conftest.sym; then
-  if test "$cross_compiling" = yes; then :
-  ac_cv_func_lstat_dereferences_slashed_symlink=no
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-struct stat sbuf;
-     /* Linux will dereference the symlink and fail, as required by POSIX.
-	That is better in the sense that it means we will not
-	have to compile and use the lstat wrapper.  */
-     return lstat ("conftest.sym/", &sbuf) == 0;
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  ac_cv_func_lstat_dereferences_slashed_symlink=yes
-else
-  ac_cv_func_lstat_dereferences_slashed_symlink=no
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-else
-  # If the `ln -s' command failed, then we probably don't even
-  # have an lstat function.
-  ac_cv_func_lstat_dereferences_slashed_symlink=no
-fi
-rm -f conftest.sym conftest.file
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_lstat_dereferences_slashed_symlink" >&5
-$as_echo "$ac_cv_func_lstat_dereferences_slashed_symlink" >&6; }
-
-test $ac_cv_func_lstat_dereferences_slashed_symlink = yes &&
-
-cat >>confdefs.h <<_ACEOF
-#define LSTAT_FOLLOWS_SLASHED_SYMLINK 1
-_ACEOF
-
-
-if test "x$ac_cv_func_lstat_dereferences_slashed_symlink" = xno; then
-  case " $LIBOBJS " in
-  *" lstat.$ac_objext "* ) ;;
-  *) LIBOBJS="$LIBOBJS lstat.$ac_objext"
- ;;
-esac
-
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stat accepts an empty string" >&5
-$as_echo_n "checking whether stat accepts an empty string... " >&6; }
-if test "${ac_cv_func_stat_empty_string_bug+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test "$cross_compiling" = yes; then :
-  ac_cv_func_stat_empty_string_bug=yes
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-struct stat sbuf;
-  return stat ("", &sbuf) == 0;
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  ac_cv_func_stat_empty_string_bug=no
-else
-  ac_cv_func_stat_empty_string_bug=yes
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_stat_empty_string_bug" >&5
-$as_echo "$ac_cv_func_stat_empty_string_bug" >&6; }
-if test $ac_cv_func_stat_empty_string_bug = yes; then
-  case " $LIBOBJS " in
-  *" stat.$ac_objext "* ) ;;
-  *) LIBOBJS="$LIBOBJS stat.$ac_objext"
- ;;
-esac
-
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_STAT_EMPTY_STRING_BUG 1
-_ACEOF
-
-fi
-
-for ac_func in vprintf
-do :
-  ac_fn_c_check_func "$LINENO" "vprintf" "ac_cv_func_vprintf"
-if test "x$ac_cv_func_vprintf" = x""yes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_VPRINTF 1
-_ACEOF
-
-ac_fn_c_check_func "$LINENO" "_doprnt" "ac_cv_func__doprnt"
-if test "x$ac_cv_func__doprnt" = x""yes; then :
-
-$as_echo "#define HAVE_DOPRNT 1" >>confdefs.h
-
-fi
-
-fi
-done
-
-
-for ac_func in  \
-	getpass gettimeofday memset mkdir \
-	strdup strerror getopt_long getopt_long_only \
-	strlcpy strlcat
-
-do :
-  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-# The cast to long int works around a bug in the HP C Compiler
-# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
-# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
-# This bug is HP SR number 8606223364.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of void *" >&5
-$as_echo_n "checking size of void *... " >&6; }
-if test "${ac_cv_sizeof_void_p+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (void *))" "ac_cv_sizeof_void_p"        "$ac_includes_default"; then :
-
-else
-  if test "$ac_cv_type_void_p" = yes; then
-     { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error 77 "cannot compute sizeof (void *)
-See \`config.log' for more details" "$LINENO" 5 ; }
-   else
-     ac_cv_sizeof_void_p=0
-   fi
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_void_p" >&5
-$as_echo "$ac_cv_sizeof_void_p" >&6; }
-
-
-
-cat >>confdefs.h <<_ACEOF
-#define SIZEOF_VOID_P $ac_cv_sizeof_void_p
-_ACEOF
-
-
-if test "${ac_cv_sizeof_void_p}" = 8; then
-	LIBRARY_BITNESS="64"
-else
-	LIBRARY_BITNESS="32"
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for socket in -lsocket" >&5
-$as_echo_n "checking for socket in -lsocket... " >&6; }
-if test "${ac_cv_lib_socket_socket+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lsocket  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char socket ();
-int
-main ()
-{
-return socket ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_socket_socket=yes
-else
-  ac_cv_lib_socket_socket=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_socket" >&5
-$as_echo "$ac_cv_lib_socket_socket" >&6; }
-if test "x$ac_cv_lib_socket_socket" = x""yes; then :
-
-		LIBS="${LIBS} -lsocket"
-		{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for res_query in -lresolv" >&5
-$as_echo_n "checking for res_query in -lresolv... " >&6; }
-if test "${ac_cv_lib_resolv_res_query+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lresolv  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char res_query ();
-int
-main ()
-{
-return res_query ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_resolv_res_query=yes
-else
-  ac_cv_lib_resolv_res_query=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_resolv_res_query" >&5
-$as_echo "$ac_cv_lib_resolv_res_query" >&6; }
-if test "x$ac_cv_lib_resolv_res_query" = x""yes; then :
-  LIBS="${LIBS} -lresolv"
-
-fi
-
-
-
-fi
-
-
-if test "${WIN32}" = "no"; then
-		{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
-$as_echo_n "checking for dlopen in -ldl... " >&6; }
-if test "${ac_cv_lib_dl_dlopen+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldl  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char dlopen ();
-int
-main ()
-{
-return dlopen ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_dl_dlopen=yes
-else
-  ac_cv_lib_dl_dlopen=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
-$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
-if test "x$ac_cv_lib_dl_dlopen" = x""yes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBDL 1
-_ACEOF
-
-  LIBS="-ldl $LIBS"
-
-else
-  as_fn_error $? "libdl required" "$LINENO" 5
-
-fi
-
-
-
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-ax_pthread_ok=no
-
-# We used to check for pthread.h first, but this fails if pthread.h
-# requires special compiler flags (e.g. on True64 or Sequent).
-# It gets checked for in the link test anyway.
-
-# First of all, check if the user has set any of the PTHREAD_LIBS,
-# etcetera environment variables, and if threads linking works using
-# them:
-if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then
-        save_CFLAGS="$CFLAGS"
-        CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
-        save_LIBS="$LIBS"
-        LIBS="$PTHREAD_LIBS $LIBS"
-        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS" >&5
-$as_echo_n "checking for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS... " >&6; }
-        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char pthread_join ();
-int
-main ()
-{
-return pthread_join ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ax_pthread_ok=yes
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-        { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_pthread_ok" >&5
-$as_echo "$ax_pthread_ok" >&6; }
-        if test x"$ax_pthread_ok" = xno; then
-                PTHREAD_LIBS=""
-                PTHREAD_CFLAGS=""
-        fi
-        LIBS="$save_LIBS"
-        CFLAGS="$save_CFLAGS"
-fi
-
-# We must check for the threads library under a number of different
-# names; the ordering is very important because some systems
-# (e.g. DEC) have both -lpthread and -lpthreads, where one of the
-# libraries is broken (non-POSIX).
-
-# Create a list of thread flags to try.  Items starting with a "-" are
-# C compiler flags, and other items are library names, except for "none"
-# which indicates that we try without any flags at all, and "pthread-config"
-# which is a program returning the flags for the Pth emulation library.
-
-ax_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config"
-
-# The ordering *is* (sometimes) important.  Some notes on the
-# individual items follow:
-
-# pthreads: AIX (must check this before -lpthread)
-# none: in case threads are in libc; should be tried before -Kthread and
-#       other compiler flags to prevent continual compiler warnings
-# -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h)
-# -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able)
-# lthread: LinuxThreads port on FreeBSD (also preferred to -pthread)
-# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads)
-# -pthreads: Solaris/gcc
-# -mthreads: Mingw32/gcc, Lynx/gcc
-# -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it
-#      doesn't hurt to check since this sometimes defines pthreads too;
-#      also defines -D_REENTRANT)
-#      ... -mt is also the pthreads flag for HP/aCC
-# pthread: Linux, etcetera
-# --thread-safe: KAI C++
-# pthread-config: use pthread-config program (for GNU Pth library)
-
-case ${host_os} in
-        solaris*)
-
-        # On Solaris (at least, for some versions), libc contains stubbed
-        # (non-functional) versions of the pthreads routines, so link-based
-        # tests will erroneously succeed.  (We need to link with -pthreads/-mt/
-        # -lpthread.)  (The stubs are missing pthread_cleanup_push, or rather
-        # a function called by this macro, so we could check for that, but
-        # who knows whether they'll stub that too in a future libc.)  So,
-        # we'll just look for -pthreads and -lpthread first:
-
-        ax_pthread_flags="-pthreads pthread -mt -pthread $ax_pthread_flags"
-        ;;
-
-        darwin*)
-        ax_pthread_flags="-pthread $ax_pthread_flags"
-        ;;
-esac
-
-if test x"$ax_pthread_ok" = xno; then
-for flag in $ax_pthread_flags; do
-
-        case $flag in
-                none)
-                { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pthreads work without any flags" >&5
-$as_echo_n "checking whether pthreads work without any flags... " >&6; }
-                ;;
-
-                -*)
-                { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pthreads work with $flag" >&5
-$as_echo_n "checking whether pthreads work with $flag... " >&6; }
-                PTHREAD_CFLAGS="$flag"
-                ;;
-
-                pthread-config)
-                # Extract the first word of "pthread-config", so it can be a program name with args.
-set dummy pthread-config; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ax_pthread_config+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ax_pthread_config"; then
-  ac_cv_prog_ax_pthread_config="$ax_pthread_config" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ax_pthread_config="yes"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-  test -z "$ac_cv_prog_ax_pthread_config" && ac_cv_prog_ax_pthread_config="no"
-fi
-fi
-ax_pthread_config=$ac_cv_prog_ax_pthread_config
-if test -n "$ax_pthread_config"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_pthread_config" >&5
-$as_echo "$ax_pthread_config" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-                if test x"$ax_pthread_config" = xno; then continue; fi
-                PTHREAD_CFLAGS="`pthread-config --cflags`"
-                PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`"
-                ;;
-
-                *)
-                { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the pthreads library -l$flag" >&5
-$as_echo_n "checking for the pthreads library -l$flag... " >&6; }
-                PTHREAD_LIBS="-l$flag"
-                ;;
-        esac
-
-        save_LIBS="$LIBS"
-        save_CFLAGS="$CFLAGS"
-        LIBS="$PTHREAD_LIBS $LIBS"
-        CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
-
-        # Check for various functions.  We must include pthread.h,
-        # since some functions may be macros.  (On the Sequent, we
-        # need a special flag -Kthread to make this header compile.)
-        # We check for pthread_join because it is in -lpthread on IRIX
-        # while pthread_create is in libc.  We check for pthread_attr_init
-        # due to DEC craziness with -lpthreads.  We check for
-        # pthread_cleanup_push because it is one of the few pthread
-        # functions on Solaris that doesn't have a non-functional libc stub.
-        # We try pthread_create on general principles.
-        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <pthread.h>
-                        static void routine(void *a) { a = 0; }
-                        static void *start_routine(void *a) { return a; }
-int
-main ()
-{
-pthread_t th; pthread_attr_t attr;
-                        pthread_create(&th, 0, start_routine, 0);
-                        pthread_join(th, 0);
-                        pthread_attr_init(&attr);
-                        pthread_cleanup_push(routine, 0);
-                        pthread_cleanup_pop(0) /* ; */
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ax_pthread_ok=yes
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-
-        LIBS="$save_LIBS"
-        CFLAGS="$save_CFLAGS"
-
-        { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_pthread_ok" >&5
-$as_echo "$ax_pthread_ok" >&6; }
-        if test "x$ax_pthread_ok" = xyes; then
-                break;
-        fi
-
-        PTHREAD_LIBS=""
-        PTHREAD_CFLAGS=""
-done
-fi
-
-# Various other checks:
-if test "x$ax_pthread_ok" = xyes; then
-        save_LIBS="$LIBS"
-        LIBS="$PTHREAD_LIBS $LIBS"
-        save_CFLAGS="$CFLAGS"
-        CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
-
-        # Detect AIX lossage: JOINABLE attribute is called UNDETACHED.
-        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for joinable pthread attribute" >&5
-$as_echo_n "checking for joinable pthread attribute... " >&6; }
-        attr_name=unknown
-        for attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do
-            cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <pthread.h>
-int
-main ()
-{
-int attr = $attr; return attr /* ; */
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  attr_name=$attr; break
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-        done
-        { $as_echo "$as_me:${as_lineno-$LINENO}: result: $attr_name" >&5
-$as_echo "$attr_name" >&6; }
-        if test "$attr_name" != PTHREAD_CREATE_JOINABLE; then
-
-cat >>confdefs.h <<_ACEOF
-#define PTHREAD_CREATE_JOINABLE $attr_name
-_ACEOF
-
-        fi
-
-        { $as_echo "$as_me:${as_lineno-$LINENO}: checking if more special flags are required for pthreads" >&5
-$as_echo_n "checking if more special flags are required for pthreads... " >&6; }
-        flag=no
-        case ${host_os} in
-            aix* | freebsd* | darwin*) flag="-D_THREAD_SAFE";;
-            osf* | hpux*) flag="-D_REENTRANT";;
-            solaris*)
-            if test "$GCC" = "yes"; then
-                flag="-D_REENTRANT"
-            else
-                flag="-mt -D_REENTRANT"
-            fi
-            ;;
-        esac
-        { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${flag}" >&5
-$as_echo "${flag}" >&6; }
-        if test "x$flag" != xno; then
-            PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS"
-        fi
-
-        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for PTHREAD_PRIO_INHERIT" >&5
-$as_echo_n "checking for PTHREAD_PRIO_INHERIT... " >&6; }
-if test "${ax_cv_PTHREAD_PRIO_INHERIT+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-
-                cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-                    #include <pthread.h>
-int
-main ()
-{
-int i = PTHREAD_PRIO_INHERIT;
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ax_cv_PTHREAD_PRIO_INHERIT=yes
-else
-  ax_cv_PTHREAD_PRIO_INHERIT=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_PRIO_INHERIT" >&5
-$as_echo "$ax_cv_PTHREAD_PRIO_INHERIT" >&6; }
-        if test "x$ax_cv_PTHREAD_PRIO_INHERIT" = "xyes"; then :
-
-$as_echo "#define HAVE_PTHREAD_PRIO_INHERIT 1" >>confdefs.h
-
-fi
-
-        LIBS="$save_LIBS"
-        CFLAGS="$save_CFLAGS"
-
-        # More AIX lossage: must compile with xlc_r or cc_r
-        if test x"$GCC" != xyes; then
-          for ac_prog in xlc_r cc_r
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_PTHREAD_CC+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$PTHREAD_CC"; then
-  ac_cv_prog_PTHREAD_CC="$PTHREAD_CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_PTHREAD_CC="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-PTHREAD_CC=$ac_cv_prog_PTHREAD_CC
-if test -n "$PTHREAD_CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PTHREAD_CC" >&5
-$as_echo "$PTHREAD_CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$PTHREAD_CC" && break
-done
-test -n "$PTHREAD_CC" || PTHREAD_CC="${CC}"
-
-        else
-          PTHREAD_CC=$CC
-        fi
-else
-        PTHREAD_CC="$CC"
-fi
-
-
-
-
-
-# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
-if test x"$ax_pthread_ok" = xyes; then
-
-$as_echo "#define HAVE_PTHREAD 1" >>confdefs.h
-
-        :
-else
-        ax_pthread_ok=no
-        as_fn_error $? "POSIX thread support required" "$LINENO" 5
-
-fi
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-	CC="${PTHREAD_CC}"
-fi
-
-if test "${enable_minidriver}" = "yes"; then
-		ac_fn_c_check_header_mongrel "$LINENO" "cardmod.h" "ac_cv_header_cardmod_h" "$ac_includes_default"
-if test "x$ac_cv_header_cardmod_h" = x""yes; then :
-
-else
-  as_fn_error $? "cardmod.h is not found and required for minidriver" "$LINENO" 5
-
-fi
-
-
-
-$as_echo "#define ENABLE_MINIDRIVER 1" >>confdefs.h
-
-fi
-
-if test "${enable_sm}" = "yes"; then
-
-$as_echo "#define ENABLE_SM 1" >>confdefs.h
-
-
-	case "${host}" in
-		*-mingw*|*-winnt*|*-cygwin*)
-			DEFAULT_SM_MODULE="smm-local.dll"
-		;;
-		*)
-			DEFAULT_SM_MODULE="libsmm-local.so.3"
-		;;
-	esac
-
-cat >>confdefs.h <<_ACEOF
-#define DEFAULT_SM_MODULE "${DEFAULT_SM_MODULE}"
-_ACEOF
-
-fi
-
-
-
-if test -z "${ZLIB_LIBS}"; then
-	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inflate in -lz" >&5
-$as_echo_n "checking for inflate in -lz... " >&6; }
-if test "${ac_cv_lib_z_inflate+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lz  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char inflate ();
-int
-main ()
-{
-return inflate ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_z_inflate=yes
-else
-  ac_cv_lib_z_inflate=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_z_inflate" >&5
-$as_echo "$ac_cv_lib_z_inflate" >&6; }
-if test "x$ac_cv_lib_z_inflate" = x""yes; then :
-  ZLIB_LIBS="-lz"
-
-fi
-
-fi
-saved_CFLAGS="${CFLAGS}"
-CFLAGS="${CFLAGS} ${ZLIB_CFLAGS}"
-for ac_header in zlib.h
-do :
-  ac_fn_c_check_header_mongrel "$LINENO" "zlib.h" "ac_cv_header_zlib_h" "$ac_includes_default"
-if test "x$ac_cv_header_zlib_h" = x""yes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_ZLIB_H 1
-_ACEOF
-
-fi
-
-done
-
-CFLAGS="${saved_CFLAGS}"
-test -n "${ZLIB_LIBS}" -a "${ac_cv_header_zlib_h}" = "yes" && have_zlib="yes"
-
-case "${enable_zlib}" in
-	no)
-		have_zlib="no"
-	;;
-	detect)
-		if test "${have_zlib}" = "yes"; then
-			enable_zlib="yes"
-		else
-			enable_zlib="no"
-		fi
-	;;
-esac
-
-if test "${enable_zlib}" = "yes"; then
-	if test "${have_zlib}" = "yes"; then
-
-$as_echo "#define ENABLE_ZLIB 1" >>confdefs.h
-
-	else
-		as_fn_error $? "zlib linkage required, but no zlib was found" "$LINENO" 5
-	fi
-fi
-
-
-
-if test -z "${READLINE_LIBS}"; then
-	for l in "" -lncurses -ltermcap; do
-		unset ac_cv_lib_readline_readline
-		{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for readline in -lreadline" >&5
-$as_echo_n "checking for readline in -lreadline... " >&6; }
-if test "${ac_cv_lib_readline_readline+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lreadline "${l}"
-		 $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char readline ();
-int
-main ()
-{
-return readline ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_readline_readline=yes
-else
-  ac_cv_lib_readline_readline=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_readline_readline" >&5
-$as_echo "$ac_cv_lib_readline_readline" >&6; }
-if test "x$ac_cv_lib_readline_readline" = x""yes; then :
-  READLINE_LIBS="-lreadline ${l}"
-fi
-
-		test -n "${READLINE_LIBS}" && break;
-	done
-fi
-saved_CFLAGS="${CFLAGS}"
-CFLAGS="${CFLAGS} ${READLINE_CFLAGS}"
-for ac_header in readline/readline.h
-do :
-  ac_fn_c_check_header_mongrel "$LINENO" "readline/readline.h" "ac_cv_header_readline_readline_h" "$ac_includes_default"
-if test "x$ac_cv_header_readline_readline_h" = x""yes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_READLINE_READLINE_H 1
-_ACEOF
-
-fi
-
-done
-
-CFLAGS="${saved_CFLAGS}"
-test -n "${READLINE_LIBS}" -a "${ac_cv_header_readline_readline_h}" = "yes" && have_readline="yes"
-
-case "${enable_readline}" in
-	no)
-		have_readline="no"
-	;;
-	detect)
-		if test "${have_readline}" = "yes"; then
-			enable_readline="yes"
-		else
-			enable_readline="no"
-		fi
-	;;
-esac
-
-if test "${enable_readline}" = "yes"; then
-	if test "${have_readline}" = "yes"; then
-
-$as_echo "#define ENABLE_READLINE 1" >>confdefs.h
-
-	else
-		as_fn_error $? "readline linkage required, but no readline was found" "$LINENO" 5
-	fi
-fi
-
-
-pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for OPENSSL" >&5
-$as_echo_n "checking for OPENSSL... " >&6; }
-
-if test -n "$OPENSSL_CFLAGS"; then
-    pkg_cv_OPENSSL_CFLAGS="$OPENSSL_CFLAGS"
- elif test -n "$PKG_CONFIG"; then
-    if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libcrypto >= 0.9.7\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "libcrypto >= 0.9.7") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-  pkg_cv_OPENSSL_CFLAGS=`$PKG_CONFIG --cflags "libcrypto >= 0.9.7" 2>/dev/null`
-else
-  pkg_failed=yes
-fi
- else
-    pkg_failed=untried
-fi
-if test -n "$OPENSSL_LIBS"; then
-    pkg_cv_OPENSSL_LIBS="$OPENSSL_LIBS"
- elif test -n "$PKG_CONFIG"; then
-    if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libcrypto >= 0.9.7\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "libcrypto >= 0.9.7") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-  pkg_cv_OPENSSL_LIBS=`$PKG_CONFIG --libs "libcrypto >= 0.9.7" 2>/dev/null`
-else
-  pkg_failed=yes
-fi
- else
-    pkg_failed=untried
-fi
-
-
-
-if test $pkg_failed = yes; then
-   	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-
-if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
-        _pkg_short_errors_supported=yes
-else
-        _pkg_short_errors_supported=no
-fi
-        if test $_pkg_short_errors_supported = yes; then
-	        OPENSSL_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "libcrypto >= 0.9.7" 2>&1`
-        else
-	        OPENSSL_PKG_ERRORS=`$PKG_CONFIG --print-errors "libcrypto >= 0.9.7" 2>&1`
-        fi
-	# Put the nasty error message in config.log where it belongs
-	echo "$OPENSSL_PKG_ERRORS" >&5
-
-
-pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for OPENSSL" >&5
-$as_echo_n "checking for OPENSSL... " >&6; }
-
-if test -n "$OPENSSL_CFLAGS"; then
-    pkg_cv_OPENSSL_CFLAGS="$OPENSSL_CFLAGS"
- elif test -n "$PKG_CONFIG"; then
-    if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"openssl >= 0.9.7\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "openssl >= 0.9.7") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-  pkg_cv_OPENSSL_CFLAGS=`$PKG_CONFIG --cflags "openssl >= 0.9.7" 2>/dev/null`
-else
-  pkg_failed=yes
-fi
- else
-    pkg_failed=untried
-fi
-if test -n "$OPENSSL_LIBS"; then
-    pkg_cv_OPENSSL_LIBS="$OPENSSL_LIBS"
- elif test -n "$PKG_CONFIG"; then
-    if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"openssl >= 0.9.7\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "openssl >= 0.9.7") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-  pkg_cv_OPENSSL_LIBS=`$PKG_CONFIG --libs "openssl >= 0.9.7" 2>/dev/null`
-else
-  pkg_failed=yes
-fi
- else
-    pkg_failed=untried
-fi
-
-
-
-if test $pkg_failed = yes; then
-   	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-
-if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
-        _pkg_short_errors_supported=yes
-else
-        _pkg_short_errors_supported=no
-fi
-        if test $_pkg_short_errors_supported = yes; then
-	        OPENSSL_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "openssl >= 0.9.7" 2>&1`
-        else
-	        OPENSSL_PKG_ERRORS=`$PKG_CONFIG --print-errors "openssl >= 0.9.7" 2>&1`
-        fi
-	# Put the nasty error message in config.log where it belongs
-	echo "$OPENSSL_PKG_ERRORS" >&5
-
-	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for RSA_version in -lcrypto" >&5
-$as_echo_n "checking for RSA_version in -lcrypto... " >&6; }
-if test "${ac_cv_lib_crypto_RSA_version+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lcrypto  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char RSA_version ();
-int
-main ()
-{
-return RSA_version ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_crypto_RSA_version=yes
-else
-  ac_cv_lib_crypto_RSA_version=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_crypto_RSA_version" >&5
-$as_echo "$ac_cv_lib_crypto_RSA_version" >&6; }
-if test "x$ac_cv_lib_crypto_RSA_version" = x""yes; then :
-
-				have_openssl="yes"
-				OPENSSL_LIBS="-lcrypto"
-
-else
-  have_openssl="no"
-
-fi
-
-
-elif test $pkg_failed = untried; then
-     	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for RSA_version in -lcrypto" >&5
-$as_echo_n "checking for RSA_version in -lcrypto... " >&6; }
-if test "${ac_cv_lib_crypto_RSA_version+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lcrypto  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char RSA_version ();
-int
-main ()
-{
-return RSA_version ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_crypto_RSA_version=yes
-else
-  ac_cv_lib_crypto_RSA_version=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_crypto_RSA_version" >&5
-$as_echo "$ac_cv_lib_crypto_RSA_version" >&6; }
-if test "x$ac_cv_lib_crypto_RSA_version" = x""yes; then :
-
-				have_openssl="yes"
-				OPENSSL_LIBS="-lcrypto"
-
-else
-  have_openssl="no"
-
-fi
-
-
-else
-	OPENSSL_CFLAGS=$pkg_cv_OPENSSL_CFLAGS
-	OPENSSL_LIBS=$pkg_cv_OPENSSL_LIBS
-        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-	have_openssl="yes"
-fi
-
-elif test $pkg_failed = untried; then
-     	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-
-pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for OPENSSL" >&5
-$as_echo_n "checking for OPENSSL... " >&6; }
-
-if test -n "$OPENSSL_CFLAGS"; then
-    pkg_cv_OPENSSL_CFLAGS="$OPENSSL_CFLAGS"
- elif test -n "$PKG_CONFIG"; then
-    if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"openssl >= 0.9.7\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "openssl >= 0.9.7") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-  pkg_cv_OPENSSL_CFLAGS=`$PKG_CONFIG --cflags "openssl >= 0.9.7" 2>/dev/null`
-else
-  pkg_failed=yes
-fi
- else
-    pkg_failed=untried
-fi
-if test -n "$OPENSSL_LIBS"; then
-    pkg_cv_OPENSSL_LIBS="$OPENSSL_LIBS"
- elif test -n "$PKG_CONFIG"; then
-    if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"openssl >= 0.9.7\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "openssl >= 0.9.7") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-  pkg_cv_OPENSSL_LIBS=`$PKG_CONFIG --libs "openssl >= 0.9.7" 2>/dev/null`
-else
-  pkg_failed=yes
-fi
- else
-    pkg_failed=untried
-fi
-
-
-
-if test $pkg_failed = yes; then
-   	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-
-if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
-        _pkg_short_errors_supported=yes
-else
-        _pkg_short_errors_supported=no
-fi
-        if test $_pkg_short_errors_supported = yes; then
-	        OPENSSL_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "openssl >= 0.9.7" 2>&1`
-        else
-	        OPENSSL_PKG_ERRORS=`$PKG_CONFIG --print-errors "openssl >= 0.9.7" 2>&1`
-        fi
-	# Put the nasty error message in config.log where it belongs
-	echo "$OPENSSL_PKG_ERRORS" >&5
-
-	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for RSA_version in -lcrypto" >&5
-$as_echo_n "checking for RSA_version in -lcrypto... " >&6; }
-if test "${ac_cv_lib_crypto_RSA_version+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lcrypto  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char RSA_version ();
-int
-main ()
-{
-return RSA_version ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_crypto_RSA_version=yes
-else
-  ac_cv_lib_crypto_RSA_version=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_crypto_RSA_version" >&5
-$as_echo "$ac_cv_lib_crypto_RSA_version" >&6; }
-if test "x$ac_cv_lib_crypto_RSA_version" = x""yes; then :
-
-				have_openssl="yes"
-				OPENSSL_LIBS="-lcrypto"
-
-else
-  have_openssl="no"
-
-fi
-
-
-elif test $pkg_failed = untried; then
-     	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for RSA_version in -lcrypto" >&5
-$as_echo_n "checking for RSA_version in -lcrypto... " >&6; }
-if test "${ac_cv_lib_crypto_RSA_version+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lcrypto  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char RSA_version ();
-int
-main ()
-{
-return RSA_version ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_crypto_RSA_version=yes
-else
-  ac_cv_lib_crypto_RSA_version=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_crypto_RSA_version" >&5
-$as_echo "$ac_cv_lib_crypto_RSA_version" >&6; }
-if test "x$ac_cv_lib_crypto_RSA_version" = x""yes; then :
-
-				have_openssl="yes"
-				OPENSSL_LIBS="-lcrypto"
-
-else
-  have_openssl="no"
-
-fi
-
-
-else
-	OPENSSL_CFLAGS=$pkg_cv_OPENSSL_CFLAGS
-	OPENSSL_LIBS=$pkg_cv_OPENSSL_LIBS
-        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-	have_openssl="yes"
-fi
-
-else
-	OPENSSL_CFLAGS=$pkg_cv_OPENSSL_CFLAGS
-	OPENSSL_LIBS=$pkg_cv_OPENSSL_LIBS
-        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-	have_openssl="yes"
-fi
-
-case "${enable_openssl}" in
-	no)
-		have_openssl="no"
-	;;
-	detect)
-		if test "${have_openssl}" = "yes"; then
-			enable_openssl="yes"
-		else
-			enable_openssl="no"
-		fi
-	;;
-esac
-
-if test "${enable_openssl}" = "yes"; then
-	if test "${have_openssl}" = "yes"; then
-
-$as_echo "#define ENABLE_OPENSSL 1" >>confdefs.h
-
-	else
-		as_fn_error $? "OpenSSL linkage required, but no OpenSSL was found" "$LINENO" 5
-	fi
-fi
-
-if test "${enable_openct}" = "yes"; then
-
-pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for OPENCT" >&5
-$as_echo_n "checking for OPENCT... " >&6; }
-
-if test -n "$OPENCT_CFLAGS"; then
-    pkg_cv_OPENCT_CFLAGS="$OPENCT_CFLAGS"
- elif test -n "$PKG_CONFIG"; then
-    if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libopenct\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "libopenct") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-  pkg_cv_OPENCT_CFLAGS=`$PKG_CONFIG --cflags "libopenct" 2>/dev/null`
-else
-  pkg_failed=yes
-fi
- else
-    pkg_failed=untried
-fi
-if test -n "$OPENCT_LIBS"; then
-    pkg_cv_OPENCT_LIBS="$OPENCT_LIBS"
- elif test -n "$PKG_CONFIG"; then
-    if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libopenct\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "libopenct") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-  pkg_cv_OPENCT_LIBS=`$PKG_CONFIG --libs "libopenct" 2>/dev/null`
-else
-  pkg_failed=yes
-fi
- else
-    pkg_failed=untried
-fi
-
-
-
-if test $pkg_failed = yes; then
-   	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-
-if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
-        _pkg_short_errors_supported=yes
-else
-        _pkg_short_errors_supported=no
-fi
-        if test $_pkg_short_errors_supported = yes; then
-	        OPENCT_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "libopenct" 2>&1`
-        else
-	        OPENCT_PKG_ERRORS=`$PKG_CONFIG --print-errors "libopenct" 2>&1`
-        fi
-	# Put the nasty error message in config.log where it belongs
-	echo "$OPENCT_PKG_ERRORS" >&5
-
-	as_fn_error $? "openct requested but not available" "$LINENO" 5
-
-elif test $pkg_failed = untried; then
-     	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-	as_fn_error $? "openct requested but not available" "$LINENO" 5
-
-else
-	OPENCT_CFLAGS=$pkg_cv_OPENCT_CFLAGS
-	OPENCT_LIBS=$pkg_cv_OPENCT_LIBS
-        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-
-$as_echo "#define ENABLE_OPENCT 1" >>confdefs.h
-
-fi
-fi
-
-if test "${enable_ctapi}" = "yes"; then
-
-$as_echo "#define ENABLE_CTAPI 1" >>confdefs.h
-
-fi
-
-if test "${enable_pcsc}" = "yes"; then
-	if test "${WIN32}" != "yes"; then
-		if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libpcsclite\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "libpcsclite") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-
-pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for PCSC" >&5
-$as_echo_n "checking for PCSC... " >&6; }
-
-if test -n "$PCSC_CFLAGS"; then
-    pkg_cv_PCSC_CFLAGS="$PCSC_CFLAGS"
- elif test -n "$PKG_CONFIG"; then
-    if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libpcsclite\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "libpcsclite") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-  pkg_cv_PCSC_CFLAGS=`$PKG_CONFIG --cflags "libpcsclite" 2>/dev/null`
-else
-  pkg_failed=yes
-fi
- else
-    pkg_failed=untried
-fi
-if test -n "$PCSC_LIBS"; then
-    pkg_cv_PCSC_LIBS="$PCSC_LIBS"
- elif test -n "$PKG_CONFIG"; then
-    if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libpcsclite\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "libpcsclite") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-  pkg_cv_PCSC_LIBS=`$PKG_CONFIG --libs "libpcsclite" 2>/dev/null`
-else
-  pkg_failed=yes
-fi
- else
-    pkg_failed=untried
-fi
-
-
-
-if test $pkg_failed = yes; then
-   	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-
-if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
-        _pkg_short_errors_supported=yes
-else
-        _pkg_short_errors_supported=no
-fi
-        if test $_pkg_short_errors_supported = yes; then
-	        PCSC_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "libpcsclite" 2>&1`
-        else
-	        PCSC_PKG_ERRORS=`$PKG_CONFIG --print-errors "libpcsclite" 2>&1`
-        fi
-	# Put the nasty error message in config.log where it belongs
-	echo "$PCSC_PKG_ERRORS" >&5
-
-	as_fn_error $? "Package requirements (libpcsclite) were not met:
-
-$PCSC_PKG_ERRORS
-
-Consider adjusting the PKG_CONFIG_PATH environment variable if you
-installed software in a non-standard prefix.
-
-Alternatively, you may set the environment variables PCSC_CFLAGS
-and PCSC_LIBS to avoid the need to call pkg-config.
-See the pkg-config man page for more details." "$LINENO" 5
-elif test $pkg_failed = untried; then
-     	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-	{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "The pkg-config script could not be found or is too old.  Make sure it
-is in your PATH or set the PKG_CONFIG environment variable to the full
-path to pkg-config.
-
-Alternatively, you may set the environment variables PCSC_CFLAGS
-and PCSC_LIBS to avoid the need to call pkg-config.
-See the pkg-config man page for more details.
-
-To get pkg-config, see <http://pkg-config.freedesktop.org/>.
-See \`config.log' for more details" "$LINENO" 5 ; }
-else
-	PCSC_CFLAGS=$pkg_cv_PCSC_CFLAGS
-	PCSC_LIBS=$pkg_cv_PCSC_LIBS
-        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-
-fi
-
-fi
-		if test -z "${PCSC_CFLAGS}"; then
-			case "${host}" in
-				*-*-darwin*)
-					PCSC_CFLAGS="-I/System/Library/Frameworks/PCSC.framework/Headers"
-				;;
-				*)
-					PCSC_CFLAGS="-I/usr/include/PCSC"
-				;;
-			esac
-		fi
-	fi
-
-	saved_CFLAGS="${CFLAGS}"
-	CFLAGS="${CFLAGS} ${PCSC_CFLAGS}"
-	# We must cope with mingw32 that does not have winscard.h mingw64 has it.
-	for ac_header in winscard.h
-do :
-  ac_fn_c_check_header_mongrel "$LINENO" "winscard.h" "ac_cv_header_winscard_h" "$ac_includes_default"
-if test "x$ac_cv_header_winscard_h" = x""yes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_WINSCARD_H 1
-_ACEOF
-
-else
-  test "${WIN32}" != "yes" && as_fn_error $? "winscard.h is required for pcsc" "$LINENO" 5
-fi
-
-done
-
-	CFLAGS="${saved_CFLAGS}"
-
-	if test "${with_pcsc_provider}" = "detect"; then
-		case "${host}" in
-			*-*-darwin*)
-				DEFAULT_PCSC_PROVIDER="/System/Library/Frameworks/PCSC.framework/PCSC"
-			;;
-			*-mingw*|*-winnt*|*-cygwin*)
-				DEFAULT_PCSC_PROVIDER="winscard.dll"
-			;;
-			*)
-				DEFAULT_PCSC_PROVIDER="libpcsclite.so.1"
-			;;
-		esac
-	else
-		DEFAULT_PCSC_PROVIDER="${with_pcsc_provider}"
-	fi
-
-cat >>confdefs.h <<_ACEOF
-#define DEFAULT_PCSC_PROVIDER "${DEFAULT_PCSC_PROVIDER}"
-_ACEOF
-
-
-$as_echo "#define ENABLE_PCSC 1" >>confdefs.h
-
-fi
-
-if test "${enable_man}" = "detect"; then
-	if test "${WIN32}" = "yes"; then
-		enable_man="no"
-	elif test -n "${XSLTPROC}" -a "${xslstylesheetsdir}" != "no"; then
-		enable_man="yes"
-	else
-		enable_man="no"
-	fi
-fi
-
-if test "${enable_man}" = "yes" -o "${enable_doc}" = "yes"; then
-	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking XSLTPROC requirement" >&5
-$as_echo_n "checking XSLTPROC requirement... " >&6; }
-	test -n "${XSLTPROC}" || as_fn_error $? "Missing XSLTPROC" "$LINENO" 5
-	test "${xslstylesheetsdir}" != "no" || as_fn_error $? "Missing xslstylesheetsdir" "$LINENO" 5
-	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5
-$as_echo "ok" >&6; }
-fi
-
-OPENSC_FEATURES=""
-if test "${enable_zlib}" = "yes"; then
-	OPENSC_FEATURES="${OPENSC_FEATURES} zlib"
-	OPTIONAL_ZLIB_CFLAGS="${ZLIB_CFLAGS}"
-	OPTIONAL_ZLIB_LIBS="${ZLIB_LIBS}"
-fi
-if test "${enable_readline}" = "yes"; then
-	OPENSC_FEATURES="${OPENSC_FEATURES} readline"
-	OPTIONAL_READLINE_CFLAGS="${READLINE_CFLAGS}"
-	OPTIONAL_READLINE_LIBS="${READLINE_LIBS}"
-fi
-if test "${enable_openssl}" = "yes"; then
-	OPENSC_FEATURES="${OPENSC_FEATURES} openssl"
-	OPTIONAL_OPENSSL_CFLAGS="${OPENSSL_CFLAGS}"
-	OPTIONAL_OPENSSL_LIBS="${OPENSSL_LIBS}"
-fi
-if test "${enable_openct}" = "yes"; then
-	OPENSC_FEATURES="${OPENSC_FEATURES} openct"
-	OPTIONAL_OPENCT_CFLAGS="${OPENCT_CFLAGS}"
-	OPTIONAL_OPENCT_LIBS="${OPENCT_LIBS}"
-fi
-if test "${enable_pcsc}" = "yes"; then
-	OPENSC_FEATURES="${OPENSC_FEATURES} pcsc(${DEFAULT_PCSC_PROVIDER})"
-	OPTIONAL_PCSC_CFLAGS="${PCSC_CFLAGS}"
-fi
-if test "${enable_ctapi}" = "yes"; then
-	OPENSC_FEATURES="${OPENSC_FEATURES} ctapi"
-fi
-
-
-cat >>confdefs.h <<_ACEOF
-#define OPENSC_VERSION_MAJOR ${OPENSC_VERSION_MAJOR}
-_ACEOF
-
-
-cat >>confdefs.h <<_ACEOF
-#define OPENSC_VERSION_MINOR ${OPENSC_VERSION_MINOR}
-_ACEOF
-
-
-cat >>confdefs.h <<_ACEOF
-#define OPENSC_VERSION_FIX ${OPENSC_VERSION_FIX}
-_ACEOF
-
-
-cat >>confdefs.h <<_ACEOF
-#define OPENSC_FEATURES "${OPENSC_FEATURES}"
-_ACEOF
-
-
-pkcs11dir="\$(libdir)/pkcs11"
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- if test "${enable_man}" = "yes"; then
-  ENABLE_MAN_TRUE=
-  ENABLE_MAN_FALSE='#'
-else
-  ENABLE_MAN_TRUE='#'
-  ENABLE_MAN_FALSE=
-fi
-
- if test "${enable_zlib}" = "yes"; then
-  ENABLE_ZLIB_TRUE=
-  ENABLE_ZLIB_FALSE='#'
-else
-  ENABLE_ZLIB_TRUE='#'
-  ENABLE_ZLIB_FALSE=
-fi
-
- if test "${enable_readline}" = "yes"; then
-  ENABLE_READLINE_TRUE=
-  ENABLE_READLINE_FALSE='#'
-else
-  ENABLE_READLINE_TRUE='#'
-  ENABLE_READLINE_FALSE=
-fi
-
- if test "${enable_openssl}" = "yes"; then
-  ENABLE_OPENSSL_TRUE=
-  ENABLE_OPENSSL_FALSE='#'
-else
-  ENABLE_OPENSSL_TRUE='#'
-  ENABLE_OPENSSL_FALSE=
-fi
-
- if test "${enable_openct}" = "yes"; then
-  ENABLE_OPENCT_TRUE=
-  ENABLE_OPENCT_FALSE='#'
-else
-  ENABLE_OPENCT_TRUE='#'
-  ENABLE_OPENCT_FALSE=
-fi
-
- if test "${enable_doc}" = "yes"; then
-  ENABLE_DOC_TRUE=
-  ENABLE_DOC_FALSE='#'
-else
-  ENABLE_DOC_TRUE='#'
-  ENABLE_DOC_FALSE=
-fi
-
- if test "${WIN32}" = "yes"; then
-  WIN32_TRUE=
-  WIN32_FALSE='#'
-else
-  WIN32_TRUE='#'
-  WIN32_FALSE=
-fi
-
- if test "${CYGWIN}" = "yes"; then
-  CYGWIN_TRUE=
-  CYGWIN_FALSE='#'
-else
-  CYGWIN_TRUE='#'
-  CYGWIN_FALSE=
-fi
-
- if test "${enable_minidriver}" = "yes"; then
-  ENABLE_MINIDRIVER_TRUE=
-  ENABLE_MINIDRIVER_FALSE='#'
-else
-  ENABLE_MINIDRIVER_TRUE='#'
-  ENABLE_MINIDRIVER_FALSE=
-fi
-
- if test "${enable_sm}" = "yes"; then
-  ENABLE_SM_TRUE=
-  ENABLE_SM_FALSE='#'
-else
-  ENABLE_SM_TRUE='#'
-  ENABLE_SM_FALSE=
-fi
-
-
-if test "${enable_pedantic}" = "yes"; then
-	enable_strict="yes";
-	CFLAGS="${CFLAGS} -pedantic"
-fi
-if test "${enable_strict}" = "yes"; then
-	CFLAGS="${CFLAGS} -Wall -Wextra"
-fi
-if test "$GCC" = "yes"; then
-	# This should be resolved not ignored.
-	CFLAGS="-fno-strict-aliasing ${CFLAGS}"
-fi
-
-ac_config_files="$ac_config_files Makefile doc/Makefile doc/tools/Makefile etc/Makefile src/Makefile src/common/Makefile src/libopensc/Makefile src/libopensc/libopensc.pc src/pkcs11/Makefile src/pkcs15init/Makefile src/scconf/Makefile src/tests/Makefile src/tests/regression/Makefile src/tools/Makefile src/sm/Makefile src/minidriver/Makefile src/minidriver/opensc-minidriver.inf win32/Makefile win32/versioninfo.rc win32/winconfig.h win32/OpenSC.iss win32/OpenSC.wxs MacOSX/Makefile MacOSX/b [...]
-
-cat >confcache <<\_ACEOF
-# This file is a shell script that caches the results of configure
-# tests run on this system so they can be shared between configure
-# scripts and configure runs, see configure's option --config-cache.
-# It is not useful on other systems.  If it contains results you don't
-# want to keep, you may remove or edit it.
-#
-# config.status only pays attention to the cache file if you give it
-# the --recheck option to rerun configure.
-#
-# `ac_cv_env_foo' variables (set or unset) will be overridden when
-# loading this file, other *unset* `ac_cv_foo' will be assigned the
-# following values.
-
-_ACEOF
-
-# The following way of writing the cache mishandles newlines in values,
-# but we know of no workaround that is simple, portable, and efficient.
-# So, we kill variables containing newlines.
-# Ultrix sh set writes to stderr and can't be redirected directly,
-# and sets the high bit in the cache file unless we assign to the vars.
-(
-  for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
-    eval ac_val=\$$ac_var
-    case $ac_val in #(
-    *${as_nl}*)
-      case $ac_var in #(
-      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
-$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
-      esac
-      case $ac_var in #(
-      _ | IFS | as_nl) ;; #(
-      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
-      *) { eval $ac_var=; unset $ac_var;} ;;
-      esac ;;
-    esac
-  done
-
-  (set) 2>&1 |
-    case $as_nl`(ac_space=' '; set) 2>&1` in #(
-    *${as_nl}ac_space=\ *)
-      # `set' does not quote correctly, so add quotes: double-quote
-      # substitution turns \\\\ into \\, and sed turns \\ into \.
-      sed -n \
-	"s/'/'\\\\''/g;
-	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
-      ;; #(
-    *)
-      # `set' quotes correctly as required by POSIX, so do not add quotes.
-      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
-      ;;
-    esac |
-    sort
-) |
-  sed '
-     /^ac_cv_env_/b end
-     t clear
-     :clear
-     s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
-     t end
-     s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
-     :end' >>confcache
-if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
-  if test -w "$cache_file"; then
-    test "x$cache_file" != "x/dev/null" &&
-      { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
-$as_echo "$as_me: updating cache $cache_file" >&6;}
-    cat confcache >$cache_file
-  else
-    { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
-$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
-  fi
-fi
-rm -f confcache
-
-test "x$prefix" = xNONE && prefix=$ac_default_prefix
-# Let make expand exec_prefix.
-test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
-
-DEFS=-DHAVE_CONFIG_H
-
-ac_libobjs=
-ac_ltlibobjs=
-U=
-for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
-  # 1. Remove the extension, and $U if already installed.
-  ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
-  ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
-  # 2. Prepend LIBOBJDIR.  When used with automake>=1.10 LIBOBJDIR
-  #    will be set to the directory where LIBOBJS objects are built.
-  as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"
-  as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo'
-done
-LIBOBJS=$ac_libobjs
-
-LTLIBOBJS=$ac_ltlibobjs
-
-
- if test -n "$EXEEXT"; then
-  am__EXEEXT_TRUE=
-  am__EXEEXT_FALSE='#'
-else
-  am__EXEEXT_TRUE='#'
-  am__EXEEXT_FALSE=
-fi
-
-if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
-  as_fn_error $? "conditional \"AMDEP\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
-  as_fn_error $? "conditional \"am__fastdepCC\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-
-if test -z "${ENABLE_MAN_TRUE}" && test -z "${ENABLE_MAN_FALSE}"; then
-  as_fn_error $? "conditional \"ENABLE_MAN\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${ENABLE_ZLIB_TRUE}" && test -z "${ENABLE_ZLIB_FALSE}"; then
-  as_fn_error $? "conditional \"ENABLE_ZLIB\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${ENABLE_READLINE_TRUE}" && test -z "${ENABLE_READLINE_FALSE}"; then
-  as_fn_error $? "conditional \"ENABLE_READLINE\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${ENABLE_OPENSSL_TRUE}" && test -z "${ENABLE_OPENSSL_FALSE}"; then
-  as_fn_error $? "conditional \"ENABLE_OPENSSL\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${ENABLE_OPENCT_TRUE}" && test -z "${ENABLE_OPENCT_FALSE}"; then
-  as_fn_error $? "conditional \"ENABLE_OPENCT\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${ENABLE_DOC_TRUE}" && test -z "${ENABLE_DOC_FALSE}"; then
-  as_fn_error $? "conditional \"ENABLE_DOC\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${WIN32_TRUE}" && test -z "${WIN32_FALSE}"; then
-  as_fn_error $? "conditional \"WIN32\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${CYGWIN_TRUE}" && test -z "${CYGWIN_FALSE}"; then
-  as_fn_error $? "conditional \"CYGWIN\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${ENABLE_MINIDRIVER_TRUE}" && test -z "${ENABLE_MINIDRIVER_FALSE}"; then
-  as_fn_error $? "conditional \"ENABLE_MINIDRIVER\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${ENABLE_SM_TRUE}" && test -z "${ENABLE_SM_FALSE}"; then
-  as_fn_error $? "conditional \"ENABLE_SM\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-
-: ${CONFIG_STATUS=./config.status}
-ac_write_fail=0
-ac_clean_files_save=$ac_clean_files
-ac_clean_files="$ac_clean_files $CONFIG_STATUS"
-{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
-$as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
-as_write_fail=0
-cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1
-#! $SHELL
-# Generated by $as_me.
-# Run this file to recreate the current configuration.
-# Compiler output produced by configure, useful for debugging
-# configure, is in config.log if it exists.
-
-debug=false
-ac_cs_recheck=false
-ac_cs_silent=false
-
-SHELL=\${CONFIG_SHELL-$SHELL}
-export SHELL
-_ASEOF
-cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1
-## -------------------- ##
-## M4sh Initialization. ##
-## -------------------- ##
-
-# Be more Bourne compatible
-DUALCASE=1; export DUALCASE # for MKS sh
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
-  emulate sh
-  NULLCMD=:
-  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
-  # is contrary to our usage.  Disable this feature.
-  alias -g '${1+"$@"}'='"$@"'
-  setopt NO_GLOB_SUBST
-else
-  case `(set -o) 2>/dev/null` in #(
-  *posix*) :
-    set -o posix ;; #(
-  *) :
-     ;;
-esac
-fi
-
-
-as_nl='
-'
-export as_nl
-# Printing a long string crashes Solaris 7 /usr/bin/printf.
-as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
-# Prefer a ksh shell builtin over an external printf program on Solaris,
-# but without wasting forks for bash or zsh.
-if test -z "$BASH_VERSION$ZSH_VERSION" \
-    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
-  as_echo='print -r --'
-  as_echo_n='print -rn --'
-elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
-  as_echo='printf %s\n'
-  as_echo_n='printf %s'
-else
-  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
-    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
-    as_echo_n='/usr/ucb/echo -n'
-  else
-    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
-    as_echo_n_body='eval
-      arg=$1;
-      case $arg in #(
-      *"$as_nl"*)
-	expr "X$arg" : "X\\(.*\\)$as_nl";
-	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
-      esac;
-      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
-    '
-    export as_echo_n_body
-    as_echo_n='sh -c $as_echo_n_body as_echo'
-  fi
-  export as_echo_body
-  as_echo='sh -c $as_echo_body as_echo'
-fi
-
-# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
-  PATH_SEPARATOR=:
-  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
-    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
-      PATH_SEPARATOR=';'
-  }
-fi
-
-
-# IFS
-# We need space, tab and new line, in precisely that order.  Quoting is
-# there to prevent editors from complaining about space-tab.
-# (If _AS_PATH_WALK were called with IFS unset, it would disable word
-# splitting by setting IFS to empty value.)
-IFS=" ""	$as_nl"
-
-# Find who we are.  Look in the path if we contain no directory separator.
-case $0 in #((
-  *[\\/]* ) as_myself=$0 ;;
-  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
-  done
-IFS=$as_save_IFS
-
-     ;;
-esac
-# We did not find ourselves, most probably we were run as `sh COMMAND'
-# in which case we are not to be found in the path.
-if test "x$as_myself" = x; then
-  as_myself=$0
-fi
-if test ! -f "$as_myself"; then
-  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
-  exit 1
-fi
-
-# Unset variables that we do not need and which cause bugs (e.g. in
-# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
-# suppresses any "Segmentation fault" message there.  '((' could
-# trigger a bug in pdksh 5.2.14.
-for as_var in BASH_ENV ENV MAIL MAILPATH
-do eval test x\${$as_var+set} = xset \
-  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
-done
-PS1='$ '
-PS2='> '
-PS4='+ '
-
-# NLS nuisances.
-LC_ALL=C
-export LC_ALL
-LANGUAGE=C
-export LANGUAGE
-
-# CDPATH.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-
-# as_fn_error STATUS ERROR [LINENO LOG_FD]
-# ----------------------------------------
-# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
-# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
-# script with STATUS, using 1 if that was 0.
-as_fn_error ()
-{
-  as_status=$1; test $as_status -eq 0 && as_status=1
-  if test "$4"; then
-    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
-  fi
-  $as_echo "$as_me: error: $2" >&2
-  as_fn_exit $as_status
-} # as_fn_error
-
-
-# as_fn_set_status STATUS
-# -----------------------
-# Set $? to STATUS, without forking.
-as_fn_set_status ()
-{
-  return $1
-} # as_fn_set_status
-
-# as_fn_exit STATUS
-# -----------------
-# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
-as_fn_exit ()
-{
-  set +e
-  as_fn_set_status $1
-  exit $1
-} # as_fn_exit
-
-# as_fn_unset VAR
-# ---------------
-# Portably unset VAR.
-as_fn_unset ()
-{
-  { eval $1=; unset $1;}
-}
-as_unset=as_fn_unset
-# as_fn_append VAR VALUE
-# ----------------------
-# Append the text in VALUE to the end of the definition contained in VAR. Take
-# advantage of any shell optimizations that allow amortized linear growth over
-# repeated appends, instead of the typical quadratic growth present in naive
-# implementations.
-if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
-  eval 'as_fn_append ()
-  {
-    eval $1+=\$2
-  }'
-else
-  as_fn_append ()
-  {
-    eval $1=\$$1\$2
-  }
-fi # as_fn_append
-
-# as_fn_arith ARG...
-# ------------------
-# Perform arithmetic evaluation on the ARGs, and store the result in the
-# global $as_val. Take advantage of shells that can avoid forks. The arguments
-# must be portable across $(()) and expr.
-if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
-  eval 'as_fn_arith ()
-  {
-    as_val=$(( $* ))
-  }'
-else
-  as_fn_arith ()
-  {
-    as_val=`expr "$@" || test $? -eq 1`
-  }
-fi # as_fn_arith
-
-
-if expr a : '\(a\)' >/dev/null 2>&1 &&
-   test "X`expr 00001 : '.*\(...\)'`" = X001; then
-  as_expr=expr
-else
-  as_expr=false
-fi
-
-if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
-  as_basename=basename
-else
-  as_basename=false
-fi
-
-if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
-  as_dirname=dirname
-else
-  as_dirname=false
-fi
-
-as_me=`$as_basename -- "$0" ||
-$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
-	 X"$0" : 'X\(//\)$' \| \
-	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X/"$0" |
-    sed '/^.*\/\([^/][^/]*\)\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\/\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\/\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`
-
-# Avoid depending upon Character Ranges.
-as_cr_letters='abcdefghijklmnopqrstuvwxyz'
-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-as_cr_Letters=$as_cr_letters$as_cr_LETTERS
-as_cr_digits='0123456789'
-as_cr_alnum=$as_cr_Letters$as_cr_digits
-
-ECHO_C= ECHO_N= ECHO_T=
-case `echo -n x` in #(((((
--n*)
-  case `echo 'xy\c'` in
-  *c*) ECHO_T='	';;	# ECHO_T is single tab character.
-  xy)  ECHO_C='\c';;
-  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
-       ECHO_T='	';;
-  esac;;
-*)
-  ECHO_N='-n';;
-esac
-
-rm -f conf$$ conf$$.exe conf$$.file
-if test -d conf$$.dir; then
-  rm -f conf$$.dir/conf$$.file
-else
-  rm -f conf$$.dir
-  mkdir conf$$.dir 2>/dev/null
-fi
-if (echo >conf$$.file) 2>/dev/null; then
-  if ln -s conf$$.file conf$$ 2>/dev/null; then
-    as_ln_s='ln -s'
-    # ... but there are two gotchas:
-    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
-    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
-    # In both cases, we have to default to `cp -p'.
-    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
-      as_ln_s='cp -p'
-  elif ln conf$$.file conf$$ 2>/dev/null; then
-    as_ln_s=ln
-  else
-    as_ln_s='cp -p'
-  fi
-else
-  as_ln_s='cp -p'
-fi
-rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
-rmdir conf$$.dir 2>/dev/null
-
-
-# as_fn_mkdir_p
-# -------------
-# Create "$as_dir" as a directory, including parents if necessary.
-as_fn_mkdir_p ()
-{
-
-  case $as_dir in #(
-  -*) as_dir=./$as_dir;;
-  esac
-  test -d "$as_dir" || eval $as_mkdir_p || {
-    as_dirs=
-    while :; do
-      case $as_dir in #(
-      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
-      *) as_qdir=$as_dir;;
-      esac
-      as_dirs="'$as_qdir' $as_dirs"
-      as_dir=`$as_dirname -- "$as_dir" ||
-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$as_dir" : 'X\(//\)[^/]' \| \
-	 X"$as_dir" : 'X\(//\)$' \| \
-	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_dir" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)[^/].*/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`
-      test -d "$as_dir" && break
-    done
-    test -z "$as_dirs" || eval "mkdir $as_dirs"
-  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
-
-
-} # as_fn_mkdir_p
-if mkdir -p . 2>/dev/null; then
-  as_mkdir_p='mkdir -p "$as_dir"'
-else
-  test -d ./-p && rmdir ./-p
-  as_mkdir_p=false
-fi
-
-if test -x / >/dev/null 2>&1; then
-  as_test_x='test -x'
-else
-  if ls -dL / >/dev/null 2>&1; then
-    as_ls_L_option=L
-  else
-    as_ls_L_option=
-  fi
-  as_test_x='
-    eval sh -c '\''
-      if test -d "$1"; then
-	test -d "$1/.";
-      else
-	case $1 in #(
-	-*)set "./$1";;
-	esac;
-	case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
-	???[sx]*):;;*)false;;esac;fi
-    '\'' sh
-  '
-fi
-as_executable_p=$as_test_x
-
-# Sed expression to map a string onto a valid CPP name.
-as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
-
-# Sed expression to map a string onto a valid variable name.
-as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
-
-
-exec 6>&1
-## ----------------------------------- ##
-## Main body of $CONFIG_STATUS script. ##
-## ----------------------------------- ##
-_ASEOF
-test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-# Save the log message, to keep $0 and so on meaningful, and to
-# report actual input values of CONFIG_FILES etc. instead of their
-# values after options handling.
-ac_log="
-This file was extended by opensc $as_me 0.13.0, which was
-generated by GNU Autoconf 2.67.  Invocation command line was
-
-  CONFIG_FILES    = $CONFIG_FILES
-  CONFIG_HEADERS  = $CONFIG_HEADERS
-  CONFIG_LINKS    = $CONFIG_LINKS
-  CONFIG_COMMANDS = $CONFIG_COMMANDS
-  $ $0 $@
-
-on `(hostname || uname -n) 2>/dev/null | sed 1q`
-"
-
-_ACEOF
-
-case $ac_config_files in *"
-"*) set x $ac_config_files; shift; ac_config_files=$*;;
-esac
-
-case $ac_config_headers in *"
-"*) set x $ac_config_headers; shift; ac_config_headers=$*;;
-esac
-
-
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-# Files that config.status was made for.
-config_files="$ac_config_files"
-config_headers="$ac_config_headers"
-config_commands="$ac_config_commands"
-
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-ac_cs_usage="\
-\`$as_me' instantiates files and other configuration actions
-from templates according to the current configuration.  Unless the files
-and actions are specified as TAGs, all are instantiated by default.
-
-Usage: $0 [OPTION]... [TAG]...
-
-  -h, --help       print this help, then exit
-  -V, --version    print version number and configuration settings, then exit
-      --config     print configuration, then exit
-  -q, --quiet, --silent
-                   do not print progress messages
-  -d, --debug      don't remove temporary files
-      --recheck    update $as_me by reconfiguring in the same conditions
-      --file=FILE[:TEMPLATE]
-                   instantiate the configuration file FILE
-      --header=FILE[:TEMPLATE]
-                   instantiate the configuration header FILE
-
-Configuration files:
-$config_files
-
-Configuration headers:
-$config_headers
-
-Configuration commands:
-$config_commands
-
-Report bugs to the package provider."
-
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
-ac_cs_version="\\
-opensc config.status 0.13.0
-configured by $0, generated by GNU Autoconf 2.67,
-  with options \\"\$ac_cs_config\\"
-
-Copyright (C) 2010 Free Software Foundation, Inc.
-This config.status script is free software; the Free Software Foundation
-gives unlimited permission to copy, distribute and modify it."
-
-ac_pwd='$ac_pwd'
-srcdir='$srcdir'
-INSTALL='$INSTALL'
-MKDIR_P='$MKDIR_P'
-AWK='$AWK'
-test -n "\$AWK" || AWK=awk
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-# The default lists apply if the user does not specify any file.
-ac_need_defaults=:
-while test $# != 0
-do
-  case $1 in
-  --*=?*)
-    ac_option=`expr "X$1" : 'X\([^=]*\)='`
-    ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
-    ac_shift=:
-    ;;
-  --*=)
-    ac_option=`expr "X$1" : 'X\([^=]*\)='`
-    ac_optarg=
-    ac_shift=:
-    ;;
-  *)
-    ac_option=$1
-    ac_optarg=$2
-    ac_shift=shift
-    ;;
-  esac
-
-  case $ac_option in
-  # Handling of the options.
-  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
-    ac_cs_recheck=: ;;
-  --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
-    $as_echo "$ac_cs_version"; exit ;;
-  --config | --confi | --conf | --con | --co | --c )
-    $as_echo "$ac_cs_config"; exit ;;
-  --debug | --debu | --deb | --de | --d | -d )
-    debug=: ;;
-  --file | --fil | --fi | --f )
-    $ac_shift
-    case $ac_optarg in
-    *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
-    '') as_fn_error $? "missing file argument" ;;
-    esac
-    as_fn_append CONFIG_FILES " '$ac_optarg'"
-    ac_need_defaults=false;;
-  --header | --heade | --head | --hea )
-    $ac_shift
-    case $ac_optarg in
-    *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
-    esac
-    as_fn_append CONFIG_HEADERS " '$ac_optarg'"
-    ac_need_defaults=false;;
-  --he | --h)
-    # Conflict between --help and --header
-    as_fn_error $? "ambiguous option: \`$1'
-Try \`$0 --help' for more information.";;
-  --help | --hel | -h )
-    $as_echo "$ac_cs_usage"; exit ;;
-  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
-  | -silent | --silent | --silen | --sile | --sil | --si | --s)
-    ac_cs_silent=: ;;
-
-  # This is an error.
-  -*) as_fn_error $? "unrecognized option: \`$1'
-Try \`$0 --help' for more information." ;;
-
-  *) as_fn_append ac_config_targets " $1"
-     ac_need_defaults=false ;;
-
-  esac
-  shift
-done
-
-ac_configure_extra_args=
-
-if $ac_cs_silent; then
-  exec 6>/dev/null
-  ac_configure_extra_args="$ac_configure_extra_args --silent"
-fi
-
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-if \$ac_cs_recheck; then
-  set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
-  shift
-  \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
-  CONFIG_SHELL='$SHELL'
-  export CONFIG_SHELL
-  exec "\$@"
-fi
-
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-exec 5>>config.log
-{
-  echo
-  sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
-## Running $as_me. ##
-_ASBOX
-  $as_echo "$ac_log"
-} >&5
-
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-#
-# INIT-COMMANDS
-#
-AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
-
-
-# The HP-UX ksh and POSIX shell print the target directory to stdout
-# if CDPATH is set.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-sed_quote_subst='$sed_quote_subst'
-double_quote_subst='$double_quote_subst'
-delay_variable_subst='$delay_variable_subst'
-macro_version='`$ECHO "X$macro_version" | $Xsed -e "$delay_single_quote_subst"`'
-macro_revision='`$ECHO "X$macro_revision" | $Xsed -e "$delay_single_quote_subst"`'
-AS='`$ECHO "X$AS" | $Xsed -e "$delay_single_quote_subst"`'
-DLLTOOL='`$ECHO "X$DLLTOOL" | $Xsed -e "$delay_single_quote_subst"`'
-OBJDUMP='`$ECHO "X$OBJDUMP" | $Xsed -e "$delay_single_quote_subst"`'
-enable_shared='`$ECHO "X$enable_shared" | $Xsed -e "$delay_single_quote_subst"`'
-enable_static='`$ECHO "X$enable_static" | $Xsed -e "$delay_single_quote_subst"`'
-pic_mode='`$ECHO "X$pic_mode" | $Xsed -e "$delay_single_quote_subst"`'
-enable_fast_install='`$ECHO "X$enable_fast_install" | $Xsed -e "$delay_single_quote_subst"`'
-host_alias='`$ECHO "X$host_alias" | $Xsed -e "$delay_single_quote_subst"`'
-host='`$ECHO "X$host" | $Xsed -e "$delay_single_quote_subst"`'
-host_os='`$ECHO "X$host_os" | $Xsed -e "$delay_single_quote_subst"`'
-build_alias='`$ECHO "X$build_alias" | $Xsed -e "$delay_single_quote_subst"`'
-build='`$ECHO "X$build" | $Xsed -e "$delay_single_quote_subst"`'
-build_os='`$ECHO "X$build_os" | $Xsed -e "$delay_single_quote_subst"`'
-SED='`$ECHO "X$SED" | $Xsed -e "$delay_single_quote_subst"`'
-Xsed='`$ECHO "X$Xsed" | $Xsed -e "$delay_single_quote_subst"`'
-GREP='`$ECHO "X$GREP" | $Xsed -e "$delay_single_quote_subst"`'
-EGREP='`$ECHO "X$EGREP" | $Xsed -e "$delay_single_quote_subst"`'
-FGREP='`$ECHO "X$FGREP" | $Xsed -e "$delay_single_quote_subst"`'
-LD='`$ECHO "X$LD" | $Xsed -e "$delay_single_quote_subst"`'
-NM='`$ECHO "X$NM" | $Xsed -e "$delay_single_quote_subst"`'
-LN_S='`$ECHO "X$LN_S" | $Xsed -e "$delay_single_quote_subst"`'
-max_cmd_len='`$ECHO "X$max_cmd_len" | $Xsed -e "$delay_single_quote_subst"`'
-ac_objext='`$ECHO "X$ac_objext" | $Xsed -e "$delay_single_quote_subst"`'
-exeext='`$ECHO "X$exeext" | $Xsed -e "$delay_single_quote_subst"`'
-lt_unset='`$ECHO "X$lt_unset" | $Xsed -e "$delay_single_quote_subst"`'
-lt_SP2NL='`$ECHO "X$lt_SP2NL" | $Xsed -e "$delay_single_quote_subst"`'
-lt_NL2SP='`$ECHO "X$lt_NL2SP" | $Xsed -e "$delay_single_quote_subst"`'
-reload_flag='`$ECHO "X$reload_flag" | $Xsed -e "$delay_single_quote_subst"`'
-reload_cmds='`$ECHO "X$reload_cmds" | $Xsed -e "$delay_single_quote_subst"`'
-deplibs_check_method='`$ECHO "X$deplibs_check_method" | $Xsed -e "$delay_single_quote_subst"`'
-file_magic_cmd='`$ECHO "X$file_magic_cmd" | $Xsed -e "$delay_single_quote_subst"`'
-AR='`$ECHO "X$AR" | $Xsed -e "$delay_single_quote_subst"`'
-AR_FLAGS='`$ECHO "X$AR_FLAGS" | $Xsed -e "$delay_single_quote_subst"`'
-STRIP='`$ECHO "X$STRIP" | $Xsed -e "$delay_single_quote_subst"`'
-RANLIB='`$ECHO "X$RANLIB" | $Xsed -e "$delay_single_quote_subst"`'
-old_postinstall_cmds='`$ECHO "X$old_postinstall_cmds" | $Xsed -e "$delay_single_quote_subst"`'
-old_postuninstall_cmds='`$ECHO "X$old_postuninstall_cmds" | $Xsed -e "$delay_single_quote_subst"`'
-old_archive_cmds='`$ECHO "X$old_archive_cmds" | $Xsed -e "$delay_single_quote_subst"`'
-CC='`$ECHO "X$CC" | $Xsed -e "$delay_single_quote_subst"`'
-CFLAGS='`$ECHO "X$CFLAGS" | $Xsed -e "$delay_single_quote_subst"`'
-compiler='`$ECHO "X$compiler" | $Xsed -e "$delay_single_quote_subst"`'
-GCC='`$ECHO "X$GCC" | $Xsed -e "$delay_single_quote_subst"`'
-lt_cv_sys_global_symbol_pipe='`$ECHO "X$lt_cv_sys_global_symbol_pipe" | $Xsed -e "$delay_single_quote_subst"`'
-lt_cv_sys_global_symbol_to_cdecl='`$ECHO "X$lt_cv_sys_global_symbol_to_cdecl" | $Xsed -e "$delay_single_quote_subst"`'
-lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "X$lt_cv_sys_global_symbol_to_c_name_address" | $Xsed -e "$delay_single_quote_subst"`'
-lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "X$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $Xsed -e "$delay_single_quote_subst"`'
-objdir='`$ECHO "X$objdir" | $Xsed -e "$delay_single_quote_subst"`'
-SHELL='`$ECHO "X$SHELL" | $Xsed -e "$delay_single_quote_subst"`'
-ECHO='`$ECHO "X$ECHO" | $Xsed -e "$delay_single_quote_subst"`'
-MAGIC_CMD='`$ECHO "X$MAGIC_CMD" | $Xsed -e "$delay_single_quote_subst"`'
-lt_prog_compiler_no_builtin_flag='`$ECHO "X$lt_prog_compiler_no_builtin_flag" | $Xsed -e "$delay_single_quote_subst"`'
-lt_prog_compiler_wl='`$ECHO "X$lt_prog_compiler_wl" | $Xsed -e "$delay_single_quote_subst"`'
-lt_prog_compiler_pic='`$ECHO "X$lt_prog_compiler_pic" | $Xsed -e "$delay_single_quote_subst"`'
-lt_prog_compiler_static='`$ECHO "X$lt_prog_compiler_static" | $Xsed -e "$delay_single_quote_subst"`'
-lt_cv_prog_compiler_c_o='`$ECHO "X$lt_cv_prog_compiler_c_o" | $Xsed -e "$delay_single_quote_subst"`'
-need_locks='`$ECHO "X$need_locks" | $Xsed -e "$delay_single_quote_subst"`'
-DSYMUTIL='`$ECHO "X$DSYMUTIL" | $Xsed -e "$delay_single_quote_subst"`'
-NMEDIT='`$ECHO "X$NMEDIT" | $Xsed -e "$delay_single_quote_subst"`'
-LIPO='`$ECHO "X$LIPO" | $Xsed -e "$delay_single_quote_subst"`'
-OTOOL='`$ECHO "X$OTOOL" | $Xsed -e "$delay_single_quote_subst"`'
-OTOOL64='`$ECHO "X$OTOOL64" | $Xsed -e "$delay_single_quote_subst"`'
-libext='`$ECHO "X$libext" | $Xsed -e "$delay_single_quote_subst"`'
-shrext_cmds='`$ECHO "X$shrext_cmds" | $Xsed -e "$delay_single_quote_subst"`'
-extract_expsyms_cmds='`$ECHO "X$extract_expsyms_cmds" | $Xsed -e "$delay_single_quote_subst"`'
-archive_cmds_need_lc='`$ECHO "X$archive_cmds_need_lc" | $Xsed -e "$delay_single_quote_subst"`'
-enable_shared_with_static_runtimes='`$ECHO "X$enable_shared_with_static_runtimes" | $Xsed -e "$delay_single_quote_subst"`'
-export_dynamic_flag_spec='`$ECHO "X$export_dynamic_flag_spec" | $Xsed -e "$delay_single_quote_subst"`'
-whole_archive_flag_spec='`$ECHO "X$whole_archive_flag_spec" | $Xsed -e "$delay_single_quote_subst"`'
-compiler_needs_object='`$ECHO "X$compiler_needs_object" | $Xsed -e "$delay_single_quote_subst"`'
-old_archive_from_new_cmds='`$ECHO "X$old_archive_from_new_cmds" | $Xsed -e "$delay_single_quote_subst"`'
-old_archive_from_expsyms_cmds='`$ECHO "X$old_archive_from_expsyms_cmds" | $Xsed -e "$delay_single_quote_subst"`'
-archive_cmds='`$ECHO "X$archive_cmds" | $Xsed -e "$delay_single_quote_subst"`'
-archive_expsym_cmds='`$ECHO "X$archive_expsym_cmds" | $Xsed -e "$delay_single_quote_subst"`'
-module_cmds='`$ECHO "X$module_cmds" | $Xsed -e "$delay_single_quote_subst"`'
-module_expsym_cmds='`$ECHO "X$module_expsym_cmds" | $Xsed -e "$delay_single_quote_subst"`'
-with_gnu_ld='`$ECHO "X$with_gnu_ld" | $Xsed -e "$delay_single_quote_subst"`'
-allow_undefined_flag='`$ECHO "X$allow_undefined_flag" | $Xsed -e "$delay_single_quote_subst"`'
-no_undefined_flag='`$ECHO "X$no_undefined_flag" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_libdir_flag_spec='`$ECHO "X$hardcode_libdir_flag_spec" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_libdir_flag_spec_ld='`$ECHO "X$hardcode_libdir_flag_spec_ld" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_libdir_separator='`$ECHO "X$hardcode_libdir_separator" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_direct='`$ECHO "X$hardcode_direct" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_direct_absolute='`$ECHO "X$hardcode_direct_absolute" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_minus_L='`$ECHO "X$hardcode_minus_L" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_shlibpath_var='`$ECHO "X$hardcode_shlibpath_var" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_automatic='`$ECHO "X$hardcode_automatic" | $Xsed -e "$delay_single_quote_subst"`'
-inherit_rpath='`$ECHO "X$inherit_rpath" | $Xsed -e "$delay_single_quote_subst"`'
-link_all_deplibs='`$ECHO "X$link_all_deplibs" | $Xsed -e "$delay_single_quote_subst"`'
-fix_srcfile_path='`$ECHO "X$fix_srcfile_path" | $Xsed -e "$delay_single_quote_subst"`'
-always_export_symbols='`$ECHO "X$always_export_symbols" | $Xsed -e "$delay_single_quote_subst"`'
-export_symbols_cmds='`$ECHO "X$export_symbols_cmds" | $Xsed -e "$delay_single_quote_subst"`'
-exclude_expsyms='`$ECHO "X$exclude_expsyms" | $Xsed -e "$delay_single_quote_subst"`'
-include_expsyms='`$ECHO "X$include_expsyms" | $Xsed -e "$delay_single_quote_subst"`'
-prelink_cmds='`$ECHO "X$prelink_cmds" | $Xsed -e "$delay_single_quote_subst"`'
-file_list_spec='`$ECHO "X$file_list_spec" | $Xsed -e "$delay_single_quote_subst"`'
-variables_saved_for_relink='`$ECHO "X$variables_saved_for_relink" | $Xsed -e "$delay_single_quote_subst"`'
-need_lib_prefix='`$ECHO "X$need_lib_prefix" | $Xsed -e "$delay_single_quote_subst"`'
-need_version='`$ECHO "X$need_version" | $Xsed -e "$delay_single_quote_subst"`'
-version_type='`$ECHO "X$version_type" | $Xsed -e "$delay_single_quote_subst"`'
-runpath_var='`$ECHO "X$runpath_var" | $Xsed -e "$delay_single_quote_subst"`'
-shlibpath_var='`$ECHO "X$shlibpath_var" | $Xsed -e "$delay_single_quote_subst"`'
-shlibpath_overrides_runpath='`$ECHO "X$shlibpath_overrides_runpath" | $Xsed -e "$delay_single_quote_subst"`'
-libname_spec='`$ECHO "X$libname_spec" | $Xsed -e "$delay_single_quote_subst"`'
-library_names_spec='`$ECHO "X$library_names_spec" | $Xsed -e "$delay_single_quote_subst"`'
-soname_spec='`$ECHO "X$soname_spec" | $Xsed -e "$delay_single_quote_subst"`'
-postinstall_cmds='`$ECHO "X$postinstall_cmds" | $Xsed -e "$delay_single_quote_subst"`'
-postuninstall_cmds='`$ECHO "X$postuninstall_cmds" | $Xsed -e "$delay_single_quote_subst"`'
-finish_cmds='`$ECHO "X$finish_cmds" | $Xsed -e "$delay_single_quote_subst"`'
-finish_eval='`$ECHO "X$finish_eval" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_into_libs='`$ECHO "X$hardcode_into_libs" | $Xsed -e "$delay_single_quote_subst"`'
-sys_lib_search_path_spec='`$ECHO "X$sys_lib_search_path_spec" | $Xsed -e "$delay_single_quote_subst"`'
-sys_lib_dlsearch_path_spec='`$ECHO "X$sys_lib_dlsearch_path_spec" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_action='`$ECHO "X$hardcode_action" | $Xsed -e "$delay_single_quote_subst"`'
-enable_dlopen='`$ECHO "X$enable_dlopen" | $Xsed -e "$delay_single_quote_subst"`'
-enable_dlopen_self='`$ECHO "X$enable_dlopen_self" | $Xsed -e "$delay_single_quote_subst"`'
-enable_dlopen_self_static='`$ECHO "X$enable_dlopen_self_static" | $Xsed -e "$delay_single_quote_subst"`'
-old_striplib='`$ECHO "X$old_striplib" | $Xsed -e "$delay_single_quote_subst"`'
-striplib='`$ECHO "X$striplib" | $Xsed -e "$delay_single_quote_subst"`'
-LD_RC='`$ECHO "X$LD_RC" | $Xsed -e "$delay_single_quote_subst"`'
-old_archive_cmds_RC='`$ECHO "X$old_archive_cmds_RC" | $Xsed -e "$delay_single_quote_subst"`'
-compiler_RC='`$ECHO "X$compiler_RC" | $Xsed -e "$delay_single_quote_subst"`'
-GCC_RC='`$ECHO "X$GCC_RC" | $Xsed -e "$delay_single_quote_subst"`'
-lt_prog_compiler_no_builtin_flag_RC='`$ECHO "X$lt_prog_compiler_no_builtin_flag_RC" | $Xsed -e "$delay_single_quote_subst"`'
-lt_prog_compiler_wl_RC='`$ECHO "X$lt_prog_compiler_wl_RC" | $Xsed -e "$delay_single_quote_subst"`'
-lt_prog_compiler_pic_RC='`$ECHO "X$lt_prog_compiler_pic_RC" | $Xsed -e "$delay_single_quote_subst"`'
-lt_prog_compiler_static_RC='`$ECHO "X$lt_prog_compiler_static_RC" | $Xsed -e "$delay_single_quote_subst"`'
-lt_cv_prog_compiler_c_o_RC='`$ECHO "X$lt_cv_prog_compiler_c_o_RC" | $Xsed -e "$delay_single_quote_subst"`'
-archive_cmds_need_lc_RC='`$ECHO "X$archive_cmds_need_lc_RC" | $Xsed -e "$delay_single_quote_subst"`'
-enable_shared_with_static_runtimes_RC='`$ECHO "X$enable_shared_with_static_runtimes_RC" | $Xsed -e "$delay_single_quote_subst"`'
-export_dynamic_flag_spec_RC='`$ECHO "X$export_dynamic_flag_spec_RC" | $Xsed -e "$delay_single_quote_subst"`'
-whole_archive_flag_spec_RC='`$ECHO "X$whole_archive_flag_spec_RC" | $Xsed -e "$delay_single_quote_subst"`'
-compiler_needs_object_RC='`$ECHO "X$compiler_needs_object_RC" | $Xsed -e "$delay_single_quote_subst"`'
-old_archive_from_new_cmds_RC='`$ECHO "X$old_archive_from_new_cmds_RC" | $Xsed -e "$delay_single_quote_subst"`'
-old_archive_from_expsyms_cmds_RC='`$ECHO "X$old_archive_from_expsyms_cmds_RC" | $Xsed -e "$delay_single_quote_subst"`'
-archive_cmds_RC='`$ECHO "X$archive_cmds_RC" | $Xsed -e "$delay_single_quote_subst"`'
-archive_expsym_cmds_RC='`$ECHO "X$archive_expsym_cmds_RC" | $Xsed -e "$delay_single_quote_subst"`'
-module_cmds_RC='`$ECHO "X$module_cmds_RC" | $Xsed -e "$delay_single_quote_subst"`'
-module_expsym_cmds_RC='`$ECHO "X$module_expsym_cmds_RC" | $Xsed -e "$delay_single_quote_subst"`'
-with_gnu_ld_RC='`$ECHO "X$with_gnu_ld_RC" | $Xsed -e "$delay_single_quote_subst"`'
-allow_undefined_flag_RC='`$ECHO "X$allow_undefined_flag_RC" | $Xsed -e "$delay_single_quote_subst"`'
-no_undefined_flag_RC='`$ECHO "X$no_undefined_flag_RC" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_libdir_flag_spec_RC='`$ECHO "X$hardcode_libdir_flag_spec_RC" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_libdir_flag_spec_ld_RC='`$ECHO "X$hardcode_libdir_flag_spec_ld_RC" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_libdir_separator_RC='`$ECHO "X$hardcode_libdir_separator_RC" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_direct_RC='`$ECHO "X$hardcode_direct_RC" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_direct_absolute_RC='`$ECHO "X$hardcode_direct_absolute_RC" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_minus_L_RC='`$ECHO "X$hardcode_minus_L_RC" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_shlibpath_var_RC='`$ECHO "X$hardcode_shlibpath_var_RC" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_automatic_RC='`$ECHO "X$hardcode_automatic_RC" | $Xsed -e "$delay_single_quote_subst"`'
-inherit_rpath_RC='`$ECHO "X$inherit_rpath_RC" | $Xsed -e "$delay_single_quote_subst"`'
-link_all_deplibs_RC='`$ECHO "X$link_all_deplibs_RC" | $Xsed -e "$delay_single_quote_subst"`'
-fix_srcfile_path_RC='`$ECHO "X$fix_srcfile_path_RC" | $Xsed -e "$delay_single_quote_subst"`'
-always_export_symbols_RC='`$ECHO "X$always_export_symbols_RC" | $Xsed -e "$delay_single_quote_subst"`'
-export_symbols_cmds_RC='`$ECHO "X$export_symbols_cmds_RC" | $Xsed -e "$delay_single_quote_subst"`'
-exclude_expsyms_RC='`$ECHO "X$exclude_expsyms_RC" | $Xsed -e "$delay_single_quote_subst"`'
-include_expsyms_RC='`$ECHO "X$include_expsyms_RC" | $Xsed -e "$delay_single_quote_subst"`'
-prelink_cmds_RC='`$ECHO "X$prelink_cmds_RC" | $Xsed -e "$delay_single_quote_subst"`'
-file_list_spec_RC='`$ECHO "X$file_list_spec_RC" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_action_RC='`$ECHO "X$hardcode_action_RC" | $Xsed -e "$delay_single_quote_subst"`'
-
-LTCC='$LTCC'
-LTCFLAGS='$LTCFLAGS'
-compiler='$compiler_DEFAULT'
-
-# Quote evaled strings.
-for var in SED \
-GREP \
-EGREP \
-FGREP \
-LD \
-NM \
-LN_S \
-lt_SP2NL \
-lt_NL2SP \
-reload_flag \
-deplibs_check_method \
-file_magic_cmd \
-AR \
-AR_FLAGS \
-STRIP \
-RANLIB \
-CC \
-CFLAGS \
-compiler \
-lt_cv_sys_global_symbol_pipe \
-lt_cv_sys_global_symbol_to_cdecl \
-lt_cv_sys_global_symbol_to_c_name_address \
-lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \
-SHELL \
-ECHO \
-lt_prog_compiler_no_builtin_flag \
-lt_prog_compiler_wl \
-lt_prog_compiler_pic \
-lt_prog_compiler_static \
-lt_cv_prog_compiler_c_o \
-need_locks \
-DSYMUTIL \
-NMEDIT \
-LIPO \
-OTOOL \
-OTOOL64 \
-shrext_cmds \
-export_dynamic_flag_spec \
-whole_archive_flag_spec \
-compiler_needs_object \
-with_gnu_ld \
-allow_undefined_flag \
-no_undefined_flag \
-hardcode_libdir_flag_spec \
-hardcode_libdir_flag_spec_ld \
-hardcode_libdir_separator \
-fix_srcfile_path \
-exclude_expsyms \
-include_expsyms \
-file_list_spec \
-variables_saved_for_relink \
-libname_spec \
-library_names_spec \
-soname_spec \
-finish_eval \
-old_striplib \
-striplib \
-LD_RC \
-compiler_RC \
-lt_prog_compiler_no_builtin_flag_RC \
-lt_prog_compiler_wl_RC \
-lt_prog_compiler_pic_RC \
-lt_prog_compiler_static_RC \
-lt_cv_prog_compiler_c_o_RC \
-export_dynamic_flag_spec_RC \
-whole_archive_flag_spec_RC \
-compiler_needs_object_RC \
-with_gnu_ld_RC \
-allow_undefined_flag_RC \
-no_undefined_flag_RC \
-hardcode_libdir_flag_spec_RC \
-hardcode_libdir_flag_spec_ld_RC \
-hardcode_libdir_separator_RC \
-fix_srcfile_path_RC \
-exclude_expsyms_RC \
-include_expsyms_RC \
-file_list_spec_RC; do
-    case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in
-    *[\\\\\\\`\\"\\\$]*)
-      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$sed_quote_subst\\"\\\`\\\\\\""
-      ;;
-    *)
-      eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
-      ;;
-    esac
-done
-
-# Double-quote double-evaled strings.
-for var in reload_cmds \
-old_postinstall_cmds \
-old_postuninstall_cmds \
-old_archive_cmds \
-extract_expsyms_cmds \
-old_archive_from_new_cmds \
-old_archive_from_expsyms_cmds \
-archive_cmds \
-archive_expsym_cmds \
-module_cmds \
-module_expsym_cmds \
-export_symbols_cmds \
-prelink_cmds \
-postinstall_cmds \
-postuninstall_cmds \
-finish_cmds \
-sys_lib_search_path_spec \
-sys_lib_dlsearch_path_spec \
-old_archive_cmds_RC \
-old_archive_from_new_cmds_RC \
-old_archive_from_expsyms_cmds_RC \
-archive_cmds_RC \
-archive_expsym_cmds_RC \
-module_cmds_RC \
-module_expsym_cmds_RC \
-export_symbols_cmds_RC \
-prelink_cmds_RC; do
-    case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in
-    *[\\\\\\\`\\"\\\$]*)
-      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\""
-      ;;
-    *)
-      eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
-      ;;
-    esac
-done
-
-# Fix-up fallback echo if it was mangled by the above quoting rules.
-case \$lt_ECHO in
-*'\\\$0 --fallback-echo"')  lt_ECHO=\`\$ECHO "X\$lt_ECHO" | \$Xsed -e 's/\\\\\\\\\\\\\\\$0 --fallback-echo"\$/\$0 --fallback-echo"/'\`
-  ;;
-esac
-
-ac_aux_dir='$ac_aux_dir'
-xsi_shell='$xsi_shell'
-lt_shell_append='$lt_shell_append'
-
-# See if we are running on zsh, and set the options which allow our
-# commands through without removal of \ escapes INIT.
-if test -n "\${ZSH_VERSION+set}" ; then
-   setopt NO_GLOB_SUBST
-fi
-
-
-    PACKAGE='$PACKAGE'
-    VERSION='$VERSION'
-    TIMESTAMP='$TIMESTAMP'
-    RM='$RM'
-    ofile='$ofile'
-
-
-
-
-
-
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-
-# Handling of arguments.
-for ac_config_target in $ac_config_targets
-do
-  case $ac_config_target in
-    "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;
-    "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
-    "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;;
-    "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
-    "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;;
-    "doc/tools/Makefile") CONFIG_FILES="$CONFIG_FILES doc/tools/Makefile" ;;
-    "etc/Makefile") CONFIG_FILES="$CONFIG_FILES etc/Makefile" ;;
-    "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;;
-    "src/common/Makefile") CONFIG_FILES="$CONFIG_FILES src/common/Makefile" ;;
-    "src/libopensc/Makefile") CONFIG_FILES="$CONFIG_FILES src/libopensc/Makefile" ;;
-    "src/libopensc/libopensc.pc") CONFIG_FILES="$CONFIG_FILES src/libopensc/libopensc.pc" ;;
-    "src/pkcs11/Makefile") CONFIG_FILES="$CONFIG_FILES src/pkcs11/Makefile" ;;
-    "src/pkcs15init/Makefile") CONFIG_FILES="$CONFIG_FILES src/pkcs15init/Makefile" ;;
-    "src/scconf/Makefile") CONFIG_FILES="$CONFIG_FILES src/scconf/Makefile" ;;
-    "src/tests/Makefile") CONFIG_FILES="$CONFIG_FILES src/tests/Makefile" ;;
-    "src/tests/regression/Makefile") CONFIG_FILES="$CONFIG_FILES src/tests/regression/Makefile" ;;
-    "src/tools/Makefile") CONFIG_FILES="$CONFIG_FILES src/tools/Makefile" ;;
-    "src/sm/Makefile") CONFIG_FILES="$CONFIG_FILES src/sm/Makefile" ;;
-    "src/minidriver/Makefile") CONFIG_FILES="$CONFIG_FILES src/minidriver/Makefile" ;;
-    "src/minidriver/opensc-minidriver.inf") CONFIG_FILES="$CONFIG_FILES src/minidriver/opensc-minidriver.inf" ;;
-    "win32/Makefile") CONFIG_FILES="$CONFIG_FILES win32/Makefile" ;;
-    "win32/versioninfo.rc") CONFIG_FILES="$CONFIG_FILES win32/versioninfo.rc" ;;
-    "win32/winconfig.h") CONFIG_FILES="$CONFIG_FILES win32/winconfig.h" ;;
-    "win32/OpenSC.iss") CONFIG_FILES="$CONFIG_FILES win32/OpenSC.iss" ;;
-    "win32/OpenSC.wxs") CONFIG_FILES="$CONFIG_FILES win32/OpenSC.wxs" ;;
-    "MacOSX/Makefile") CONFIG_FILES="$CONFIG_FILES MacOSX/Makefile" ;;
-    "MacOSX/build-package") CONFIG_FILES="$CONFIG_FILES MacOSX/build-package" ;;
-    "MacOSX/10.5/resources/ReadMe.html") CONFIG_FILES="$CONFIG_FILES MacOSX/10.5/resources/ReadMe.html" ;;
-    "MacOSX/10.6/resources/ReadMe.html") CONFIG_FILES="$CONFIG_FILES MacOSX/10.6/resources/ReadMe.html" ;;
-
-  *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5 ;;
-  esac
-done
-
-
-# If the user did not use the arguments to specify the items to instantiate,
-# then the envvar interface is used.  Set only those that are not.
-# We use the long form for the default assignment because of an extremely
-# bizarre bug on SunOS 4.1.3.
-if $ac_need_defaults; then
-  test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
-  test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
-  test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
-fi
-
-# Have a temporary directory for convenience.  Make it in the build tree
-# simply because there is no reason against having it here, and in addition,
-# creating and moving files from /tmp can sometimes cause problems.
-# Hook for its removal unless debugging.
-# Note that there is a small window in which the directory will not be cleaned:
-# after its creation but before its name has been assigned to `$tmp'.
-$debug ||
-{
-  tmp=
-  trap 'exit_status=$?
-  { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status
-' 0
-  trap 'as_fn_exit 1' 1 2 13 15
-}
-# Create a (secure) tmp directory for tmp files.
-
-{
-  tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
-  test -n "$tmp" && test -d "$tmp"
-}  ||
-{
-  tmp=./conf$$-$RANDOM
-  (umask 077 && mkdir "$tmp")
-} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5
-
-# Set up the scripts for CONFIG_FILES section.
-# No need to generate them if there are no CONFIG_FILES.
-# This happens for instance with `./config.status config.h'.
-if test -n "$CONFIG_FILES"; then
-
-
-ac_cr=`echo X | tr X '\015'`
-# On cygwin, bash can eat \r inside `` if the user requested igncr.
-# But we know of no other shell where ac_cr would be empty at this
-# point, so we can use a bashism as a fallback.
-if test "x$ac_cr" = x; then
-  eval ac_cr=\$\'\\r\'
-fi
-ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
-if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
-  ac_cs_awk_cr='\\r'
-else
-  ac_cs_awk_cr=$ac_cr
-fi
-
-echo 'BEGIN {' >"$tmp/subs1.awk" &&
-_ACEOF
-
-
-{
-  echo "cat >conf$$subs.awk <<_ACEOF" &&
-  echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
-  echo "_ACEOF"
-} >conf$$subs.sh ||
-  as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
-ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'`
-ac_delim='%!_!# '
-for ac_last_try in false false false false false :; do
-  . ./conf$$subs.sh ||
-    as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
-
-  ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
-  if test $ac_delim_n = $ac_delim_num; then
-    break
-  elif $ac_last_try; then
-    as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
-  else
-    ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
-  fi
-done
-rm -f conf$$subs.sh
-
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-cat >>"\$tmp/subs1.awk" <<\\_ACAWK &&
-_ACEOF
-sed -n '
-h
-s/^/S["/; s/!.*/"]=/
-p
-g
-s/^[^!]*!//
-:repl
-t repl
-s/'"$ac_delim"'$//
-t delim
-:nl
-h
-s/\(.\{148\}\)..*/\1/
-t more1
-s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/
-p
-n
-b repl
-:more1
-s/["\\]/\\&/g; s/^/"/; s/$/"\\/
-p
-g
-s/.\{148\}//
-t nl
-:delim
-h
-s/\(.\{148\}\)..*/\1/
-t more2
-s/["\\]/\\&/g; s/^/"/; s/$/"/
-p
-b
-:more2
-s/["\\]/\\&/g; s/^/"/; s/$/"\\/
-p
-g
-s/.\{148\}//
-t delim
-' <conf$$subs.awk | sed '
-/^[^""]/{
-  N
-  s/\n//
-}
-' >>$CONFIG_STATUS || ac_write_fail=1
-rm -f conf$$subs.awk
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-_ACAWK
-cat >>"\$tmp/subs1.awk" <<_ACAWK &&
-  for (key in S) S_is_set[key] = 1
-  FS = ""
-
-}
-{
-  line = $ 0
-  nfields = split(line, field, "@")
-  substed = 0
-  len = length(field[1])
-  for (i = 2; i < nfields; i++) {
-    key = field[i]
-    keylen = length(key)
-    if (S_is_set[key]) {
-      value = S[key]
-      line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3)
-      len += length(value) + length(field[++i])
-      substed = 1
-    } else
-      len += 1 + keylen
-  }
-
-  print line
-}
-
-_ACAWK
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
-  sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
-else
-  cat
-fi < "$tmp/subs1.awk" > "$tmp/subs.awk" \
-  || as_fn_error $? "could not setup config files machinery" "$LINENO" 5
-_ACEOF
-
-# VPATH may cause trouble with some makes, so we remove sole $(srcdir),
-# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and
-# trailing colons and then remove the whole line if VPATH becomes empty
-# (actually we leave an empty line to preserve line numbers).
-if test "x$srcdir" = x.; then
-  ac_vpsub='/^[	 ]*VPATH[	 ]*=[	 ]*/{
-h
-s///
-s/^/:/
-s/[	 ]*$/:/
-s/:\$(srcdir):/:/g
-s/:\${srcdir}:/:/g
-s/:@srcdir@:/:/g
-s/^:*//
-s/:*$//
-x
-s/\(=[	 ]*\).*/\1/
-G
-s/\n//
-s/^[^=]*=[	 ]*$//
-}'
-fi
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-fi # test -n "$CONFIG_FILES"
-
-# Set up the scripts for CONFIG_HEADERS section.
-# No need to generate them if there are no CONFIG_HEADERS.
-# This happens for instance with `./config.status Makefile'.
-if test -n "$CONFIG_HEADERS"; then
-cat >"$tmp/defines.awk" <<\_ACAWK ||
-BEGIN {
-_ACEOF
-
-# Transform confdefs.h into an awk script `defines.awk', embedded as
-# here-document in config.status, that substitutes the proper values into
-# config.h.in to produce config.h.
-
-# Create a delimiter string that does not exist in confdefs.h, to ease
-# handling of long lines.
-ac_delim='%!_!# '
-for ac_last_try in false false :; do
-  ac_t=`sed -n "/$ac_delim/p" confdefs.h`
-  if test -z "$ac_t"; then
-    break
-  elif $ac_last_try; then
-    as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5
-  else
-    ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
-  fi
-done
-
-# For the awk script, D is an array of macro values keyed by name,
-# likewise P contains macro parameters if any.  Preserve backslash
-# newline sequences.
-
-ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]*
-sed -n '
-s/.\{148\}/&'"$ac_delim"'/g
-t rset
-:rset
-s/^[	 ]*#[	 ]*define[	 ][	 ]*/ /
-t def
-d
-:def
-s/\\$//
-t bsnl
-s/["\\]/\\&/g
-s/^ \('"$ac_word_re"'\)\(([^()]*)\)[	 ]*\(.*\)/P["\1"]="\2"\
-D["\1"]=" \3"/p
-s/^ \('"$ac_word_re"'\)[	 ]*\(.*\)/D["\1"]=" \2"/p
-d
-:bsnl
-s/["\\]/\\&/g
-s/^ \('"$ac_word_re"'\)\(([^()]*)\)[	 ]*\(.*\)/P["\1"]="\2"\
-D["\1"]=" \3\\\\\\n"\\/p
-t cont
-s/^ \('"$ac_word_re"'\)[	 ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p
-t cont
-d
-:cont
-n
-s/.\{148\}/&'"$ac_delim"'/g
-t clear
-:clear
-s/\\$//
-t bsnlc
-s/["\\]/\\&/g; s/^/"/; s/$/"/p
-d
-:bsnlc
-s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p
-b cont
-' <confdefs.h | sed '
-s/'"$ac_delim"'/"\\\
-"/g' >>$CONFIG_STATUS || ac_write_fail=1
-
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-  for (key in D) D_is_set[key] = 1
-  FS = ""
-}
-/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ {
-  line = \$ 0
-  split(line, arg, " ")
-  if (arg[1] == "#") {
-    defundef = arg[2]
-    mac1 = arg[3]
-  } else {
-    defundef = substr(arg[1], 2)
-    mac1 = arg[2]
-  }
-  split(mac1, mac2, "(") #)
-  macro = mac2[1]
-  prefix = substr(line, 1, index(line, defundef) - 1)
-  if (D_is_set[macro]) {
-    # Preserve the white space surrounding the "#".
-    print prefix "define", macro P[macro] D[macro]
-    next
-  } else {
-    # Replace #undef with comments.  This is necessary, for example,
-    # in the case of _POSIX_SOURCE, which is predefined and required
-    # on some systems where configure will not decide to define it.
-    if (defundef == "undef") {
-      print "/*", prefix defundef, macro, "*/"
-      next
-    }
-  }
-}
-{ print }
-_ACAWK
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-  as_fn_error $? "could not setup config headers machinery" "$LINENO" 5
-fi # test -n "$CONFIG_HEADERS"
-
-
-eval set X "  :F $CONFIG_FILES  :H $CONFIG_HEADERS    :C $CONFIG_COMMANDS"
-shift
-for ac_tag
-do
-  case $ac_tag in
-  :[FHLC]) ac_mode=$ac_tag; continue;;
-  esac
-  case $ac_mode$ac_tag in
-  :[FHL]*:*);;
-  :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5 ;;
-  :[FH]-) ac_tag=-:-;;
-  :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
-  esac
-  ac_save_IFS=$IFS
-  IFS=:
-  set x $ac_tag
-  IFS=$ac_save_IFS
-  shift
-  ac_file=$1
-  shift
-
-  case $ac_mode in
-  :L) ac_source=$1;;
-  :[FH])
-    ac_file_inputs=
-    for ac_f
-    do
-      case $ac_f in
-      -) ac_f="$tmp/stdin";;
-      *) # Look for the file first in the build tree, then in the source tree
-	 # (if the path is not absolute).  The absolute path cannot be DOS-style,
-	 # because $ac_f cannot contain `:'.
-	 test -f "$ac_f" ||
-	   case $ac_f in
-	   [\\/$]*) false;;
-	   *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
-	   esac ||
-	   as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5 ;;
-      esac
-      case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
-      as_fn_append ac_file_inputs " '$ac_f'"
-    done
-
-    # Let's still pretend it is `configure' which instantiates (i.e., don't
-    # use $as_me), people would be surprised to read:
-    #    /* config.h.  Generated by config.status.  */
-    configure_input='Generated from '`
-	  $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
-	`' by configure.'
-    if test x"$ac_file" != x-; then
-      configure_input="$ac_file.  $configure_input"
-      { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
-$as_echo "$as_me: creating $ac_file" >&6;}
-    fi
-    # Neutralize special characters interpreted by sed in replacement strings.
-    case $configure_input in #(
-    *\&* | *\|* | *\\* )
-       ac_sed_conf_input=`$as_echo "$configure_input" |
-       sed 's/[\\\\&|]/\\\\&/g'`;; #(
-    *) ac_sed_conf_input=$configure_input;;
-    esac
-
-    case $ac_tag in
-    *:-:* | *:-) cat >"$tmp/stdin" \
-      || as_fn_error $? "could not create $ac_file" "$LINENO" 5  ;;
-    esac
-    ;;
-  esac
-
-  ac_dir=`$as_dirname -- "$ac_file" ||
-$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$ac_file" : 'X\(//\)[^/]' \| \
-	 X"$ac_file" : 'X\(//\)$' \| \
-	 X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$ac_file" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)[^/].*/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`
-  as_dir="$ac_dir"; as_fn_mkdir_p
-  ac_builddir=.
-
-case "$ac_dir" in
-.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
-*)
-  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
-  # A ".." for each directory in $ac_dir_suffix.
-  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
-  case $ac_top_builddir_sub in
-  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
-  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
-  esac ;;
-esac
-ac_abs_top_builddir=$ac_pwd
-ac_abs_builddir=$ac_pwd$ac_dir_suffix
-# for backward compatibility:
-ac_top_builddir=$ac_top_build_prefix
-
-case $srcdir in
-  .)  # We are building in place.
-    ac_srcdir=.
-    ac_top_srcdir=$ac_top_builddir_sub
-    ac_abs_top_srcdir=$ac_pwd ;;
-  [\\/]* | ?:[\\/]* )  # Absolute name.
-    ac_srcdir=$srcdir$ac_dir_suffix;
-    ac_top_srcdir=$srcdir
-    ac_abs_top_srcdir=$srcdir ;;
-  *) # Relative name.
-    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
-    ac_top_srcdir=$ac_top_build_prefix$srcdir
-    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
-esac
-ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
-
-
-  case $ac_mode in
-  :F)
-  #
-  # CONFIG_FILE
-  #
-
-  case $INSTALL in
-  [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
-  *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
-  esac
-  ac_MKDIR_P=$MKDIR_P
-  case $MKDIR_P in
-  [\\/$]* | ?:[\\/]* ) ;;
-  */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;;
-  esac
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-# If the template does not know about datarootdir, expand it.
-# FIXME: This hack should be removed a few years after 2.60.
-ac_datarootdir_hack=; ac_datarootdir_seen=
-ac_sed_dataroot='
-/datarootdir/ {
-  p
-  q
-}
-/@datadir@/p
-/@docdir@/p
-/@infodir@/p
-/@localedir@/p
-/@mandir@/p'
-case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
-*datarootdir*) ac_datarootdir_seen=yes;;
-*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
-$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-  ac_datarootdir_hack='
-  s&@datadir@&$datadir&g
-  s&@docdir@&$docdir&g
-  s&@infodir@&$infodir&g
-  s&@localedir@&$localedir&g
-  s&@mandir@&$mandir&g
-  s&\\\${datarootdir}&$datarootdir&g' ;;
-esac
-_ACEOF
-
-# Neutralize VPATH when `$srcdir' = `.'.
-# Shell code in configure.ac might set extrasub.
-# FIXME: do we really want to maintain this feature?
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-ac_sed_extra="$ac_vpsub
-$extrasub
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-:t
-/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
-s|@configure_input@|$ac_sed_conf_input|;t t
-s&@top_builddir@&$ac_top_builddir_sub&;t t
-s&@top_build_prefix@&$ac_top_build_prefix&;t t
-s&@srcdir@&$ac_srcdir&;t t
-s&@abs_srcdir@&$ac_abs_srcdir&;t t
-s&@top_srcdir@&$ac_top_srcdir&;t t
-s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
-s&@builddir@&$ac_builddir&;t t
-s&@abs_builddir@&$ac_abs_builddir&;t t
-s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
-s&@INSTALL@&$ac_INSTALL&;t t
-s&@MKDIR_P@&$ac_MKDIR_P&;t t
-$ac_datarootdir_hack
-"
-eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$tmp/subs.awk" >$tmp/out \
-  || as_fn_error $? "could not create $ac_file" "$LINENO" 5
-
-test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
-  { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } &&
-  { ac_out=`sed -n '/^[	 ]*datarootdir[	 ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } &&
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
-which seems to be undefined.  Please make sure it is defined" >&5
-$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
-which seems to be undefined.  Please make sure it is defined" >&2;}
-
-  rm -f "$tmp/stdin"
-  case $ac_file in
-  -) cat "$tmp/out" && rm -f "$tmp/out";;
-  *) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";;
-  esac \
-  || as_fn_error $? "could not create $ac_file" "$LINENO" 5
- ;;
-  :H)
-  #
-  # CONFIG_HEADER
-  #
-  if test x"$ac_file" != x-; then
-    {
-      $as_echo "/* $configure_input  */" \
-      && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs"
-    } >"$tmp/config.h" \
-      || as_fn_error $? "could not create $ac_file" "$LINENO" 5
-    if diff "$ac_file" "$tmp/config.h" >/dev/null 2>&1; then
-      { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5
-$as_echo "$as_me: $ac_file is unchanged" >&6;}
-    else
-      rm -f "$ac_file"
-      mv "$tmp/config.h" "$ac_file" \
-	|| as_fn_error $? "could not create $ac_file" "$LINENO" 5
-    fi
-  else
-    $as_echo "/* $configure_input  */" \
-      && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" \
-      || as_fn_error $? "could not create -" "$LINENO" 5
-  fi
-# Compute "$ac_file"'s index in $config_headers.
-_am_arg="$ac_file"
-_am_stamp_count=1
-for _am_header in $config_headers :; do
-  case $_am_header in
-    $_am_arg | $_am_arg:* )
-      break ;;
-    * )
-      _am_stamp_count=`expr $_am_stamp_count + 1` ;;
-  esac
-done
-echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" ||
-$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$_am_arg" : 'X\(//\)[^/]' \| \
-	 X"$_am_arg" : 'X\(//\)$' \| \
-	 X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$_am_arg" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)[^/].*/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`/stamp-h$_am_stamp_count
- ;;
-
-  :C)  { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5
-$as_echo "$as_me: executing $ac_file commands" >&6;}
- ;;
-  esac
-
-
-  case $ac_file$ac_mode in
-    "depfiles":C) test x"$AMDEP_TRUE" != x"" || {
-  # Autoconf 2.62 quotes --file arguments for eval, but not when files
-  # are listed without --file.  Let's play safe and only enable the eval
-  # if we detect the quoting.
-  case $CONFIG_FILES in
-  *\'*) eval set x "$CONFIG_FILES" ;;
-  *)   set x $CONFIG_FILES ;;
-  esac
-  shift
-  for mf
-  do
-    # Strip MF so we end up with the name of the file.
-    mf=`echo "$mf" | sed -e 's/:.*$//'`
-    # Check whether this is an Automake generated Makefile or not.
-    # We used to match only the files named `Makefile.in', but
-    # some people rename them; so instead we look at the file content.
-    # Grep'ing the first line is not enough: some people post-process
-    # each Makefile.in and add a new line on top of each file to say so.
-    # Grep'ing the whole file is not good either: AIX grep has a line
-    # limit of 2048, but all sed's we know have understand at least 4000.
-    if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
-      dirpart=`$as_dirname -- "$mf" ||
-$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$mf" : 'X\(//\)[^/]' \| \
-	 X"$mf" : 'X\(//\)$' \| \
-	 X"$mf" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$mf" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)[^/].*/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`
-    else
-      continue
-    fi
-    # Extract the definition of DEPDIR, am__include, and am__quote
-    # from the Makefile without running `make'.
-    DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
-    test -z "$DEPDIR" && continue
-    am__include=`sed -n 's/^am__include = //p' < "$mf"`
-    test -z "am__include" && continue
-    am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
-    # When using ansi2knr, U may be empty or an underscore; expand it
-    U=`sed -n 's/^U = //p' < "$mf"`
-    # Find all dependency output files, they are included files with
-    # $(DEPDIR) in their names.  We invoke sed twice because it is the
-    # simplest approach to changing $(DEPDIR) to its actual value in the
-    # expansion.
-    for file in `sed -n "
-      s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
-	 sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
-      # Make sure the directory exists.
-      test -f "$dirpart/$file" && continue
-      fdir=`$as_dirname -- "$file" ||
-$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$file" : 'X\(//\)[^/]' \| \
-	 X"$file" : 'X\(//\)$' \| \
-	 X"$file" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$file" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)[^/].*/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`
-      as_dir=$dirpart/$fdir; as_fn_mkdir_p
-      # echo "creating $dirpart/$file"
-      echo '# dummy' > "$dirpart/$file"
-    done
-  done
-}
- ;;
-    "libtool":C)
-
-    # See if we are running on zsh, and set the options which allow our
-    # commands through without removal of \ escapes.
-    if test -n "${ZSH_VERSION+set}" ; then
-      setopt NO_GLOB_SUBST
-    fi
-
-    cfgfile="${ofile}T"
-    trap "$RM \"$cfgfile\"; exit 1" 1 2 15
-    $RM "$cfgfile"
-
-    cat <<_LT_EOF >> "$cfgfile"
-#! $SHELL
-
-# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
-# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION
-# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
-# NOTE: Changes made to this file will be lost: look at ltmain.sh.
-#
-#   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
-#                 2006, 2007, 2008 Free Software Foundation, Inc.
-#   Written by Gordon Matzigkeit, 1996
-#
-#   This file is part of GNU Libtool.
-#
-# GNU Libtool is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License as
-# published by the Free Software Foundation; either version 2 of
-# the License, or (at your option) any later version.
-#
-# As a special exception to the GNU General Public License,
-# if you distribute this file as part of a program or library that
-# is built using GNU Libtool, you may include this file under the
-# same distribution terms that you use for the rest of that program.
-#
-# GNU Libtool is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GNU Libtool; see the file COPYING.  If not, a copy
-# can be downloaded from http://www.gnu.org/licenses/gpl.html, or
-# obtained by writing to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-
-
-# The names of the tagged configurations supported by this script.
-available_tags="RC "
-
-# ### BEGIN LIBTOOL CONFIG
-
-# Which release of libtool.m4 was used?
-macro_version=$macro_version
-macro_revision=$macro_revision
-
-# Assembler program.
-AS=$AS
-
-# DLL creation program.
-DLLTOOL=$DLLTOOL
-
-# Object dumper program.
-OBJDUMP=$OBJDUMP
-
-# Whether or not to build shared libraries.
-build_libtool_libs=$enable_shared
-
-# Whether or not to build static libraries.
-build_old_libs=$enable_static
-
-# What type of objects to build.
-pic_mode=$pic_mode
-
-# Whether or not to optimize for fast installation.
-fast_install=$enable_fast_install
-
-# The host system.
-host_alias=$host_alias
-host=$host
-host_os=$host_os
-
-# The build system.
-build_alias=$build_alias
-build=$build
-build_os=$build_os
-
-# A sed program that does not truncate output.
-SED=$lt_SED
-
-# Sed that helps us avoid accidentally triggering echo(1) options like -n.
-Xsed="\$SED -e 1s/^X//"
-
-# A grep program that handles long lines.
-GREP=$lt_GREP
-
-# An ERE matcher.
-EGREP=$lt_EGREP
-
-# A literal string matcher.
-FGREP=$lt_FGREP
-
-# A BSD- or MS-compatible name lister.
-NM=$lt_NM
-
-# Whether we need soft or hard links.
-LN_S=$lt_LN_S
-
-# What is the maximum length of a command?
-max_cmd_len=$max_cmd_len
-
-# Object file suffix (normally "o").
-objext=$ac_objext
-
-# Executable file suffix (normally "").
-exeext=$exeext
-
-# whether the shell understands "unset".
-lt_unset=$lt_unset
-
-# turn spaces into newlines.
-SP2NL=$lt_lt_SP2NL
-
-# turn newlines into spaces.
-NL2SP=$lt_lt_NL2SP
-
-# How to create reloadable object files.
-reload_flag=$lt_reload_flag
-reload_cmds=$lt_reload_cmds
-
-# Method to check whether dependent libraries are shared objects.
-deplibs_check_method=$lt_deplibs_check_method
-
-# Command to use when deplibs_check_method == "file_magic".
-file_magic_cmd=$lt_file_magic_cmd
-
-# The archiver.
-AR=$lt_AR
-AR_FLAGS=$lt_AR_FLAGS
-
-# A symbol stripping program.
-STRIP=$lt_STRIP
-
-# Commands used to install an old-style archive.
-RANLIB=$lt_RANLIB
-old_postinstall_cmds=$lt_old_postinstall_cmds
-old_postuninstall_cmds=$lt_old_postuninstall_cmds
-
-# A C compiler.
-LTCC=$lt_CC
-
-# LTCC compiler flags.
-LTCFLAGS=$lt_CFLAGS
-
-# Take the output of nm and produce a listing of raw symbols and C names.
-global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
-
-# Transform the output of nm in a proper C declaration.
-global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
-
-# Transform the output of nm in a C name address pair.
-global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
-
-# Transform the output of nm in a C name address pair when lib prefix is needed.
-global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix
-
-# The name of the directory that contains temporary libtool files.
-objdir=$objdir
-
-# Shell to use when invoking shell scripts.
-SHELL=$lt_SHELL
-
-# An echo program that does not interpret backslashes.
-ECHO=$lt_ECHO
-
-# Used to examine libraries when file_magic_cmd begins with "file".
-MAGIC_CMD=$MAGIC_CMD
-
-# Must we lock files when doing compilation?
-need_locks=$lt_need_locks
-
-# Tool to manipulate archived DWARF debug symbol files on Mac OS X.
-DSYMUTIL=$lt_DSYMUTIL
-
-# Tool to change global to local symbols on Mac OS X.
-NMEDIT=$lt_NMEDIT
-
-# Tool to manipulate fat objects and archives on Mac OS X.
-LIPO=$lt_LIPO
-
-# ldd/readelf like tool for Mach-O binaries on Mac OS X.
-OTOOL=$lt_OTOOL
-
-# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4.
-OTOOL64=$lt_OTOOL64
-
-# Old archive suffix (normally "a").
-libext=$libext
-
-# Shared library suffix (normally ".so").
-shrext_cmds=$lt_shrext_cmds
-
-# The commands to extract the exported symbol list from a shared archive.
-extract_expsyms_cmds=$lt_extract_expsyms_cmds
-
-# Variables whose values should be saved in libtool wrapper scripts and
-# restored at link time.
-variables_saved_for_relink=$lt_variables_saved_for_relink
-
-# Do we need the "lib" prefix for modules?
-need_lib_prefix=$need_lib_prefix
-
-# Do we need a version for libraries?
-need_version=$need_version
-
-# Library versioning type.
-version_type=$version_type
-
-# Shared library runtime path variable.
-runpath_var=$runpath_var
-
-# Shared library path variable.
-shlibpath_var=$shlibpath_var
-
-# Is shlibpath searched before the hard-coded library search path?
-shlibpath_overrides_runpath=$shlibpath_overrides_runpath
-
-# Format of library name prefix.
-libname_spec=$lt_libname_spec
-
-# List of archive names.  First name is the real one, the rest are links.
-# The last name is the one that the linker finds with -lNAME
-library_names_spec=$lt_library_names_spec
-
-# The coded name of the library, if different from the real name.
-soname_spec=$lt_soname_spec
-
-# Command to use after installation of a shared archive.
-postinstall_cmds=$lt_postinstall_cmds
-
-# Command to use after uninstallation of a shared archive.
-postuninstall_cmds=$lt_postuninstall_cmds
-
-# Commands used to finish a libtool library installation in a directory.
-finish_cmds=$lt_finish_cmds
-
-# As "finish_cmds", except a single script fragment to be evaled but
-# not shown.
-finish_eval=$lt_finish_eval
-
-# Whether we should hardcode library paths into libraries.
-hardcode_into_libs=$hardcode_into_libs
-
-# Compile-time system search path for libraries.
-sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
-
-# Run-time system search path for libraries.
-sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
-
-# Whether dlopen is supported.
-dlopen_support=$enable_dlopen
-
-# Whether dlopen of programs is supported.
-dlopen_self=$enable_dlopen_self
-
-# Whether dlopen of statically linked programs is supported.
-dlopen_self_static=$enable_dlopen_self_static
-
-# Commands to strip libraries.
-old_striplib=$lt_old_striplib
-striplib=$lt_striplib
-
-
-# The linker used to build libraries.
-LD=$lt_LD
-
-# Commands used to build an old-style archive.
-old_archive_cmds=$lt_old_archive_cmds
-
-# A language specific compiler.
-CC=$lt_compiler
-
-# Is the compiler the GNU compiler?
-with_gcc=$GCC
-
-# Compiler flag to turn off builtin functions.
-no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
-
-# How to pass a linker flag through the compiler.
-wl=$lt_lt_prog_compiler_wl
-
-# Additional compiler flags for building library objects.
-pic_flag=$lt_lt_prog_compiler_pic
-
-# Compiler flag to prevent dynamic linking.
-link_static_flag=$lt_lt_prog_compiler_static
-
-# Does compiler simultaneously support -c and -o options?
-compiler_c_o=$lt_lt_cv_prog_compiler_c_o
-
-# Whether or not to add -lc for building shared libraries.
-build_libtool_need_lc=$archive_cmds_need_lc
-
-# Whether or not to disallow shared libs when runtime libs are static.
-allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes
-
-# Compiler flag to allow reflexive dlopens.
-export_dynamic_flag_spec=$lt_export_dynamic_flag_spec
-
-# Compiler flag to generate shared objects directly from archives.
-whole_archive_flag_spec=$lt_whole_archive_flag_spec
-
-# Whether the compiler copes with passing no objects directly.
-compiler_needs_object=$lt_compiler_needs_object
-
-# Create an old-style archive from a shared archive.
-old_archive_from_new_cmds=$lt_old_archive_from_new_cmds
-
-# Create a temporary old-style archive to link instead of a shared archive.
-old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds
-
-# Commands used to build a shared archive.
-archive_cmds=$lt_archive_cmds
-archive_expsym_cmds=$lt_archive_expsym_cmds
-
-# Commands used to build a loadable module if different from building
-# a shared archive.
-module_cmds=$lt_module_cmds
-module_expsym_cmds=$lt_module_expsym_cmds
-
-# Whether we are building with GNU ld or not.
-with_gnu_ld=$lt_with_gnu_ld
-
-# Flag that allows shared libraries with undefined symbols to be built.
-allow_undefined_flag=$lt_allow_undefined_flag
-
-# Flag that enforces no undefined symbols.
-no_undefined_flag=$lt_no_undefined_flag
-
-# Flag to hardcode \$libdir into a binary during linking.
-# This must work even if \$libdir does not exist
-hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec
-
-# If ld is used when linking, flag to hardcode \$libdir into a binary
-# during linking.  This must work even if \$libdir does not exist.
-hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld
-
-# Whether we need a single "-rpath" flag with a separated argument.
-hardcode_libdir_separator=$lt_hardcode_libdir_separator
-
-# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
-# DIR into the resulting binary.
-hardcode_direct=$hardcode_direct
-
-# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
-# DIR into the resulting binary and the resulting library dependency is
-# "absolute",i.e impossible to change by setting \${shlibpath_var} if the
-# library is relocated.
-hardcode_direct_absolute=$hardcode_direct_absolute
-
-# Set to "yes" if using the -LDIR flag during linking hardcodes DIR
-# into the resulting binary.
-hardcode_minus_L=$hardcode_minus_L
-
-# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
-# into the resulting binary.
-hardcode_shlibpath_var=$hardcode_shlibpath_var
-
-# Set to "yes" if building a shared library automatically hardcodes DIR
-# into the library and all subsequent libraries and executables linked
-# against it.
-hardcode_automatic=$hardcode_automatic
-
-# Set to yes if linker adds runtime paths of dependent libraries
-# to runtime path list.
-inherit_rpath=$inherit_rpath
-
-# Whether libtool must link a program against all its dependency libraries.
-link_all_deplibs=$link_all_deplibs
-
-# Fix the shell variable \$srcfile for the compiler.
-fix_srcfile_path=$lt_fix_srcfile_path
-
-# Set to "yes" if exported symbols are required.
-always_export_symbols=$always_export_symbols
-
-# The commands to list exported symbols.
-export_symbols_cmds=$lt_export_symbols_cmds
-
-# Symbols that should not be listed in the preloaded symbols.
-exclude_expsyms=$lt_exclude_expsyms
-
-# Symbols that must always be exported.
-include_expsyms=$lt_include_expsyms
-
-# Commands necessary for linking programs (against libraries) with templates.
-prelink_cmds=$lt_prelink_cmds
-
-# Specify filename containing input files.
-file_list_spec=$lt_file_list_spec
-
-# How to hardcode a shared library path into an executable.
-hardcode_action=$hardcode_action
-
-# ### END LIBTOOL CONFIG
-
-_LT_EOF
-
-  case $host_os in
-  aix3*)
-    cat <<\_LT_EOF >> "$cfgfile"
-# AIX sometimes has problems with the GCC collect2 program.  For some
-# reason, if we set the COLLECT_NAMES environment variable, the problems
-# vanish in a puff of smoke.
-if test "X${COLLECT_NAMES+set}" != Xset; then
-  COLLECT_NAMES=
-  export COLLECT_NAMES
-fi
-_LT_EOF
-    ;;
-  esac
-
-
-ltmain="$ac_aux_dir/ltmain.sh"
-
-
-  # We use sed instead of cat because bash on DJGPP gets confused if
-  # if finds mixed CR/LF and LF-only lines.  Since sed operates in
-  # text mode, it properly converts lines to CR/LF.  This bash problem
-  # is reportedly fixed, but why not run on old versions too?
-  sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \
-    || (rm -f "$cfgfile"; exit 1)
-
-  case $xsi_shell in
-  yes)
-    cat << \_LT_EOF >> "$cfgfile"
-
-# func_dirname file append nondir_replacement
-# Compute the dirname of FILE.  If nonempty, add APPEND to the result,
-# otherwise set result to NONDIR_REPLACEMENT.
-func_dirname ()
-{
-  case ${1} in
-    */*) func_dirname_result="${1%/*}${2}" ;;
-    *  ) func_dirname_result="${3}" ;;
-  esac
-}
-
-# func_basename file
-func_basename ()
-{
-  func_basename_result="${1##*/}"
-}
-
-# func_dirname_and_basename file append nondir_replacement
-# perform func_basename and func_dirname in a single function
-# call:
-#   dirname:  Compute the dirname of FILE.  If nonempty,
-#             add APPEND to the result, otherwise set result
-#             to NONDIR_REPLACEMENT.
-#             value returned in "$func_dirname_result"
-#   basename: Compute filename of FILE.
-#             value retuned in "$func_basename_result"
-# Implementation must be kept synchronized with func_dirname
-# and func_basename. For efficiency, we do not delegate to
-# those functions but instead duplicate the functionality here.
-func_dirname_and_basename ()
-{
-  case ${1} in
-    */*) func_dirname_result="${1%/*}${2}" ;;
-    *  ) func_dirname_result="${3}" ;;
-  esac
-  func_basename_result="${1##*/}"
-}
-
-# func_stripname prefix suffix name
-# strip PREFIX and SUFFIX off of NAME.
-# PREFIX and SUFFIX must not contain globbing or regex special
-# characters, hashes, percent signs, but SUFFIX may contain a leading
-# dot (in which case that matches only a dot).
-func_stripname ()
-{
-  # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
-  # positional parameters, so assign one to ordinary parameter first.
-  func_stripname_result=${3}
-  func_stripname_result=${func_stripname_result#"${1}"}
-  func_stripname_result=${func_stripname_result%"${2}"}
-}
-
-# func_opt_split
-func_opt_split ()
-{
-  func_opt_split_opt=${1%%=*}
-  func_opt_split_arg=${1#*=}
-}
-
-# func_lo2o object
-func_lo2o ()
-{
-  case ${1} in
-    *.lo) func_lo2o_result=${1%.lo}.${objext} ;;
-    *)    func_lo2o_result=${1} ;;
-  esac
-}
-
-# func_xform libobj-or-source
-func_xform ()
-{
-  func_xform_result=${1%.*}.lo
-}
-
-# func_arith arithmetic-term...
-func_arith ()
-{
-  func_arith_result=$(( $* ))
-}
-
-# func_len string
-# STRING may not start with a hyphen.
-func_len ()
-{
-  func_len_result=${#1}
-}
-
-_LT_EOF
-    ;;
-  *) # Bourne compatible functions.
-    cat << \_LT_EOF >> "$cfgfile"
-
-# func_dirname file append nondir_replacement
-# Compute the dirname of FILE.  If nonempty, add APPEND to the result,
-# otherwise set result to NONDIR_REPLACEMENT.
-func_dirname ()
-{
-  # Extract subdirectory from the argument.
-  func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"`
-  if test "X$func_dirname_result" = "X${1}"; then
-    func_dirname_result="${3}"
-  else
-    func_dirname_result="$func_dirname_result${2}"
-  fi
-}
-
-# func_basename file
-func_basename ()
-{
-  func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"`
-}
-
-
-# func_stripname prefix suffix name
-# strip PREFIX and SUFFIX off of NAME.
-# PREFIX and SUFFIX must not contain globbing or regex special
-# characters, hashes, percent signs, but SUFFIX may contain a leading
-# dot (in which case that matches only a dot).
-# func_strip_suffix prefix name
-func_stripname ()
-{
-  case ${2} in
-    .*) func_stripname_result=`$ECHO "X${3}" \
-           | $Xsed -e "s%^${1}%%" -e "s%\\\\${2}\$%%"`;;
-    *)  func_stripname_result=`$ECHO "X${3}" \
-           | $Xsed -e "s%^${1}%%" -e "s%${2}\$%%"`;;
-  esac
-}
-
-# sed scripts:
-my_sed_long_opt='1s/^\(-[^=]*\)=.*/\1/;q'
-my_sed_long_arg='1s/^-[^=]*=//'
-
-# func_opt_split
-func_opt_split ()
-{
-  func_opt_split_opt=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_opt"`
-  func_opt_split_arg=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_arg"`
-}
-
-# func_lo2o object
-func_lo2o ()
-{
-  func_lo2o_result=`$ECHO "X${1}" | $Xsed -e "$lo2o"`
-}
-
-# func_xform libobj-or-source
-func_xform ()
-{
-  func_xform_result=`$ECHO "X${1}" | $Xsed -e 's/\.[^.]*$/.lo/'`
-}
-
-# func_arith arithmetic-term...
-func_arith ()
-{
-  func_arith_result=`expr "$@"`
-}
-
-# func_len string
-# STRING may not start with a hyphen.
-func_len ()
-{
-  func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len`
-}
-
-_LT_EOF
-esac
-
-case $lt_shell_append in
-  yes)
-    cat << \_LT_EOF >> "$cfgfile"
-
-# func_append var value
-# Append VALUE to the end of shell variable VAR.
-func_append ()
-{
-  eval "$1+=\$2"
-}
-_LT_EOF
-    ;;
-  *)
-    cat << \_LT_EOF >> "$cfgfile"
-
-# func_append var value
-# Append VALUE to the end of shell variable VAR.
-func_append ()
-{
-  eval "$1=\$$1\$2"
-}
-
-_LT_EOF
-    ;;
-  esac
-
-
-  sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \
-    || (rm -f "$cfgfile"; exit 1)
-
-  mv -f "$cfgfile" "$ofile" ||
-    (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
-  chmod +x "$ofile"
-
-
-    cat <<_LT_EOF >> "$ofile"
-
-# ### BEGIN LIBTOOL TAG CONFIG: RC
-
-# The linker used to build libraries.
-LD=$lt_LD_RC
-
-# Commands used to build an old-style archive.
-old_archive_cmds=$lt_old_archive_cmds_RC
-
-# A language specific compiler.
-CC=$lt_compiler_RC
-
-# Is the compiler the GNU compiler?
-with_gcc=$GCC_RC
-
-# Compiler flag to turn off builtin functions.
-no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_RC
-
-# How to pass a linker flag through the compiler.
-wl=$lt_lt_prog_compiler_wl_RC
-
-# Additional compiler flags for building library objects.
-pic_flag=$lt_lt_prog_compiler_pic_RC
-
-# Compiler flag to prevent dynamic linking.
-link_static_flag=$lt_lt_prog_compiler_static_RC
-
-# Does compiler simultaneously support -c and -o options?
-compiler_c_o=$lt_lt_cv_prog_compiler_c_o_RC
-
-# Whether or not to add -lc for building shared libraries.
-build_libtool_need_lc=$archive_cmds_need_lc_RC
-
-# Whether or not to disallow shared libs when runtime libs are static.
-allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_RC
-
-# Compiler flag to allow reflexive dlopens.
-export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_RC
-
-# Compiler flag to generate shared objects directly from archives.
-whole_archive_flag_spec=$lt_whole_archive_flag_spec_RC
-
-# Whether the compiler copes with passing no objects directly.
-compiler_needs_object=$lt_compiler_needs_object_RC
-
-# Create an old-style archive from a shared archive.
-old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_RC
-
-# Create a temporary old-style archive to link instead of a shared archive.
-old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_RC
-
-# Commands used to build a shared archive.
-archive_cmds=$lt_archive_cmds_RC
-archive_expsym_cmds=$lt_archive_expsym_cmds_RC
-
-# Commands used to build a loadable module if different from building
-# a shared archive.
-module_cmds=$lt_module_cmds_RC
-module_expsym_cmds=$lt_module_expsym_cmds_RC
-
-# Whether we are building with GNU ld or not.
-with_gnu_ld=$lt_with_gnu_ld_RC
-
-# Flag that allows shared libraries with undefined symbols to be built.
-allow_undefined_flag=$lt_allow_undefined_flag_RC
-
-# Flag that enforces no undefined symbols.
-no_undefined_flag=$lt_no_undefined_flag_RC
-
-# Flag to hardcode \$libdir into a binary during linking.
-# This must work even if \$libdir does not exist
-hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_RC
-
-# If ld is used when linking, flag to hardcode \$libdir into a binary
-# during linking.  This must work even if \$libdir does not exist.
-hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_RC
-
-# Whether we need a single "-rpath" flag with a separated argument.
-hardcode_libdir_separator=$lt_hardcode_libdir_separator_RC
-
-# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
-# DIR into the resulting binary.
-hardcode_direct=$hardcode_direct_RC
-
-# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
-# DIR into the resulting binary and the resulting library dependency is
-# "absolute",i.e impossible to change by setting \${shlibpath_var} if the
-# library is relocated.
-hardcode_direct_absolute=$hardcode_direct_absolute_RC
-
-# Set to "yes" if using the -LDIR flag during linking hardcodes DIR
-# into the resulting binary.
-hardcode_minus_L=$hardcode_minus_L_RC
-
-# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
-# into the resulting binary.
-hardcode_shlibpath_var=$hardcode_shlibpath_var_RC
-
-# Set to "yes" if building a shared library automatically hardcodes DIR
-# into the library and all subsequent libraries and executables linked
-# against it.
-hardcode_automatic=$hardcode_automatic_RC
-
-# Set to yes if linker adds runtime paths of dependent libraries
-# to runtime path list.
-inherit_rpath=$inherit_rpath_RC
-
-# Whether libtool must link a program against all its dependency libraries.
-link_all_deplibs=$link_all_deplibs_RC
-
-# Fix the shell variable \$srcfile for the compiler.
-fix_srcfile_path=$lt_fix_srcfile_path_RC
-
-# Set to "yes" if exported symbols are required.
-always_export_symbols=$always_export_symbols_RC
-
-# The commands to list exported symbols.
-export_symbols_cmds=$lt_export_symbols_cmds_RC
-
-# Symbols that should not be listed in the preloaded symbols.
-exclude_expsyms=$lt_exclude_expsyms_RC
-
-# Symbols that must always be exported.
-include_expsyms=$lt_include_expsyms_RC
-
-# Commands necessary for linking programs (against libraries) with templates.
-prelink_cmds=$lt_prelink_cmds_RC
-
-# Specify filename containing input files.
-file_list_spec=$lt_file_list_spec_RC
-
-# How to hardcode a shared library path into an executable.
-hardcode_action=$hardcode_action_RC
-
-# ### END LIBTOOL TAG CONFIG: RC
-_LT_EOF
-
- ;;
-
-  esac
-done # for ac_tag
-
-
-as_fn_exit 0
-_ACEOF
-ac_clean_files=$ac_clean_files_save
-
-test $ac_write_fail = 0 ||
-  as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5
-
-
-# configure is writing to config.log, and then calls config.status.
-# config.status does its own redirection, appending to config.log.
-# Unfortunately, on DOS this fails, as config.log is still kept open
-# by configure, so config.status won't be able to write to it; its
-# output is simply discarded.  So we exec the FD to /dev/null,
-# effectively closing config.log, so it can be properly (re)opened and
-# appended to by config.status.  When coming back to configure, we
-# need to make the FD available again.
-if test "$no_create" != yes; then
-  ac_cs_success=:
-  ac_config_status_args=
-  test "$silent" = yes &&
-    ac_config_status_args="$ac_config_status_args --quiet"
-  exec 5>/dev/null
-  $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
-  exec 5>>config.log
-  # Use ||, not &&, to avoid exiting from the if with $? = 1, which
-  # would make configure fail if this is the last instruction.
-  $ac_cs_success || as_fn_exit 1
-fi
-if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
-$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
-fi
-
-
-cat <<EOF
-
-OpenSC has been configured with the following options:
-
-
-Version:                 ${PACKAGE_VERSION}
-User binaries:           $(eval eval eval echo "${bindir}")
-Configuration files:     $(eval eval eval echo "${sysconfdir}")
-XSL stylesheets:         ${xslstylesheetsdir}
-
-man support:             ${enable_man}
-doc support:             ${enable_doc}
-zlib support:            ${enable_zlib}
-readline support:        ${enable_readline}
-OpenSSL support:         ${enable_openssl}
-PC/SC support:           ${enable_pcsc}
-OpenCT support:          ${enable_openct}
-CT-API support:          ${enable_ctapi}
-minidriver support:      ${enable_minidriver}
-SM support:              ${enable_sm}
-SM default module:       ${DEFAULT_SM_MODULE}
-Debug file:              ${DEBUG_FILE}
-
-PC/SC default provider:  ${DEFAULT_PCSC_PROVIDER}
-
-Host:                    ${host}
-Compiler:                ${CC}
-Preprocessor flags:      ${CPPFLAGS}
-Compiler flags:          ${CFLAGS}
-Linker flags:            ${LDFLAGS}
-Libraries:               ${LIBS}
-
-READLINE_CFLAGS:         ${READLINE_CFLAGS}
-READLINE_LIBS:           ${READLINE_LIBS}
-ZLIB_CFLAGS:             ${ZLIB_CFLAGS}
-ZLIB_LIBS:               ${ZLIB_LIBS}
-OPENSSL_CFLAGS:          ${OPENSSL_CFLAGS}
-OPENSSL_LIBS:            ${OPENSSL_LIBS}
-OPENCT_CFLAGS:           ${OPENCT_CFLAGS}
-OPENCT_LIBS:             ${OPENCT_LIBS}
-PCSC_CFLAGS:             ${PCSC_CFLAGS}
-
-EOF
-
diff --git a/configure.ac b/configure.ac
index 8fb12b7..133cff9 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2,12 +2,24 @@ dnl -*- mode: m4; -*-
 
 AC_PREREQ(2.60)
 
+define([PRODUCT_NAME], [OpenSC])
+define([PRODUCT_TARNAME], [opensc])
+define([PRODUCT_BUGREPORT], [opensc-devel at lists.sourceforge.net])
 define([PACKAGE_VERSION_MAJOR], [0])
-define([PACKAGE_VERSION_MINOR], [13])
+define([PACKAGE_VERSION_MINOR], [14])
 define([PACKAGE_VERSION_FIX], [0])
 define([PACKAGE_SUFFIX], [])
+define([PACKAGE_VERSION_REVISION], [0])
 
-AC_INIT([opensc],[PACKAGE_VERSION_MAJOR.PACKAGE_VERSION_MINOR.PACKAGE_VERSION_FIX[]PACKAGE_SUFFIX])
+define([VS_FF_LEGAL_COPYRIGHT], [OpenSC Project])
+define([VS_FF_LEGAL_COMPANY_NAME], [OpenSC Project])
+define([VS_FF_COMMENTS], [Provided under the terms of the GNU Lesser General Public License (LGPLv2.1+).])
+define([VS_FF_PRODUCT_NAME], [OpenSC smartcard framework])
+
+m4_include(version.m4)
+m4_sinclude(version.m4.ci)
+
+AC_INIT([PRODUCT_NAME],[PACKAGE_VERSION_MAJOR.PACKAGE_VERSION_MINOR.PACKAGE_VERSION_FIX[]PACKAGE_SUFFIX],[PRODUCT_BUGREPORT],[PRODUCT_TARNAME])
 AC_CONFIG_AUX_DIR([.])
 AC_CONFIG_HEADERS([config.h])
 AC_CONFIG_MACRO_DIR([m4])
@@ -16,6 +28,12 @@ AM_INIT_AUTOMAKE(foreign 1.10)
 OPENSC_VERSION_MAJOR="PACKAGE_VERSION_MAJOR"
 OPENSC_VERSION_MINOR="PACKAGE_VERSION_MINOR"
 OPENSC_VERSION_FIX="PACKAGE_VERSION_FIX"
+OPENSC_VERSION_REVISION="PACKAGE_VERSION_REVISION"
+
+OPENSC_VS_FF_LEGAL_COPYRIGHT="VS_FF_LEGAL_COPYRIGHT"
+OPENSC_VS_FF_COMPANY_NAME="VS_FF_LEGAL_COMPANY_NAME"
+OPENSC_VS_FF_COMMENTS="VS_FF_COMMENTS"
+OPENSC_VS_FF_PRODUCT_NAME="VS_FF_PRODUCT_NAME"
 
 # LT Version numbers, remember to change them just *before* a release.
 #   (Code changed:                      REVISION++)
@@ -37,6 +55,13 @@ AC_PROG_CC
 PKG_PROG_PKG_CONFIG
 AC_C_BIGENDIAN
 
+AC_ARG_ENABLE(
+	[optimization],
+	[AS_HELP_STRING([--disable-optimization],[disable compile optimization @<:@enabled@:>@])],
+	,
+	[enable_optimization="yes"]
+)
+
 AC_ARG_WITH(
 	[cygwin-native],
 	[AS_HELP_STRING([--with-cygwin-native],[compile native win32])],
@@ -44,9 +69,14 @@ AC_ARG_WITH(
 	[with_cygwin_native="no"]
 )
 
+if test "${enable_optimization}" = "no"; then
+	CFLAGS="-O0 -g"
+fi
+
 dnl Check for some target-specific stuff
 test -z "${WIN32}" && WIN32="no"
 test -z "${CYGWIN}" && CYGWIN="no"
+
 case "${host}" in
 	*-*-solaris*)
 		CPPFLAGS="${CPPFLAGS} -I/usr/local/include"
@@ -86,9 +116,9 @@ AC_DEFINE_UNQUOTED([DEBUG_FILE], ["${DEBUG_FILE}"], [Debug file])
 
 AC_ARG_ENABLE(
 	[strict],
-	[AS_HELP_STRING([--enable-strict],[enable strict compile mode @<:@disabled@:>@])],
+	[AS_HELP_STRING([--disable-strict],[disable strict compile mode @<:@disabled@:>@])],
 	,
-	[enable_strict="no"]
+	[enable_strict="yes"]
 )
 
 AC_ARG_ENABLE(
@@ -149,9 +179,9 @@ AC_ARG_ENABLE(
 
 AC_ARG_ENABLE(
 	[sm],
-	[AS_HELP_STRING([--enable-sm],[enable secure messaging support and modules @<:@disabled@:>@])],
+	[AS_HELP_STRING([--disable-sm],[disable secure messaging support and SM modules @<:@enabled@:>@])],
 	,
-	[enable_sm="no"]
+	[enable_sm="yes"]
 )
 
 AC_ARG_ENABLE(
@@ -168,6 +198,13 @@ AC_ARG_ENABLE(
 	[enable_doc="no"]
 )
 
+AC_ARG_ENABLE(
+	[dnie-ui],
+	[AS_HELP_STRING([--enable-dnie-ui],[enable use of external user interface program to request DNIe pin@<:@disabled@:>@])],
+	,
+	[enable_dnie_ui="no"]
+)
+
 AC_ARG_WITH(
 	[xsl-stylesheetsdir],
 	[AS_HELP_STRING([--with-xsl-stylesheetsdir=PATH],[docbook xsl-stylesheets for svn build @<:@detect@:>@])],
@@ -189,7 +226,7 @@ done
 if test "${reader_count}" != "x"; then
 	AC_MSG_ERROR([Only one of --enable-pcsc, --enable-openct, --enable-ctapi can be specified!])
 fi
-	 
+
 dnl Checks for programs.
 AC_PROG_CPP
 AC_PROG_INSTALL
@@ -235,6 +272,15 @@ elif test "${xslstylesheetsdir}" != "no"; then
 fi
 AC_MSG_RESULT([${xslstylesheetsdir}])
 
+AC_MSG_CHECKING([git checkout])
+GIT_CHECKOUT="no"
+if test -n "${GIT}" -a -d "${srcdir}/.git"; then
+        AC_DEFINE([HAVE_CONFIG_VERSION_H], [1], [extra version available in config-version.h])
+        GIT_CHECKOUT="yes"
+fi
+AC_MSG_RESULT([${GIT_CHECKOUT}])
+
+
 dnl C Compiler features
 AC_C_INLINE
 
@@ -243,7 +289,7 @@ AC_HEADER_STDC
 AC_HEADER_SYS_WAIT
 AC_HEADER_ASSERT
 AC_CHECK_HEADERS([ \
-	errno.h fcntl.h malloc.h stdlib.h \
+	errno.h fcntl.h stdlib.h \
 	inttypes.h string.h strings.h \
 	sys/time.h unistd.h getopt.h sys/mman.h
 ])
@@ -286,12 +332,9 @@ AC_CHECK_LIB(
 
 if test "${WIN32}" = "no"; then
 	dnl dl support
-	AC_CHECK_LIB(
-		[dl],
-		[dlopen],
-		,
-		[AC_MSG_ERROR([libdl required])]
-	)
+	AC_SEARCH_LIBS([dlopen], [dl dld], [], [
+		AC_MSG_ERROR([unable to find the dlopen() function])
+	])
 
 	dnl Special check for pthread support.
 	AX_PTHREAD(
@@ -329,6 +372,18 @@ if test "${enable_sm}" = "yes"; then
 	AC_DEFINE_UNQUOTED([DEFAULT_SM_MODULE], ["${DEFAULT_SM_MODULE}"], [Default SM module])
 fi
 
+if test "${enable_dnie_ui}" = "yes"; then
+	AC_DEFINE([ENABLE_DNIE_UI], [1], [Enable the use of external user interface program to request DNIe user pin])
+
+	case "${host}" in
+		*-apple-*)
+			if test "${enable_dnie_ui}" = "yes"; then
+				LDFLAGS="${LDFLAGS} -framework Carbon"
+			fi
+		;;
+	esac
+fi
+
 AC_ARG_VAR([ZLIB_CFLAGS], [C compiler flags for zlib])
 AC_ARG_VAR([ZLIB_LIBS], [linker flags for zlib])
 if test -z "${ZLIB_LIBS}"; then
@@ -553,8 +608,14 @@ fi
 AC_DEFINE_UNQUOTED([OPENSC_VERSION_MAJOR], [${OPENSC_VERSION_MAJOR}], [OpenSC version major component])
 AC_DEFINE_UNQUOTED([OPENSC_VERSION_MINOR], [${OPENSC_VERSION_MINOR}], [OpenSC version minor component])
 AC_DEFINE_UNQUOTED([OPENSC_VERSION_FIX], [${OPENSC_VERSION_FIX}], [OpenSC version fix component])
+AC_DEFINE_UNQUOTED([OPENSC_VERSION_REVISION], [${OPENSC_VERSION_REVISION}], [OpenSC version Git describe revision])
 AC_DEFINE_UNQUOTED([OPENSC_FEATURES], ["${OPENSC_FEATURES}"], [Enabled OpenSC features])
 
+AC_DEFINE_UNQUOTED([OPENSC_VS_FF_LEGAL_COPYRIGHT], [${OPENSC_VS_FF_LEGAL_COPYRIGHT}], [OpenSC version-info LegalCopyright value])
+AC_DEFINE_UNQUOTED([OPENSC_VS_FF_COMPANY_NAME], [${OPENSC_VS_FF_COMPANY_NAME}], [OpenSC version-info CompanyName value])
+AC_DEFINE_UNQUOTED([OPENSC_VS_FF_COMMENTS], [${OPENSC_VS_FF_COMMENTS}], [OpenSC version-info Comments])
+AC_DEFINE_UNQUOTED([OPENSC_VS_FF_PRODUCT_NAME], [${OPENSC_VS_FF_PRODUCT_NAME}], [OpenSC version-info ProductName])
+
 pkcs11dir="\$(libdir)/pkcs11"
 
 AC_SUBST([pkcs11dir])
@@ -562,6 +623,11 @@ AC_SUBST([xslstylesheetsdir])
 AC_SUBST([OPENSC_VERSION_MAJOR])
 AC_SUBST([OPENSC_VERSION_MINOR])
 AC_SUBST([OPENSC_VERSION_FIX])
+AC_SUBST([OPENSC_VERSION_REVISION])
+AC_SUBST([OPENSC_VS_FF_LEGAL_COPYRIGHT])
+AC_SUBST([OPENSC_VS_FF_COMPANY_NAME])
+AC_SUBST([OPENSC_VS_FF_COMMENTS])
+AC_SUBST([OPENSC_VS_FF_PRODUCT_NAME])
 AC_SUBST([OPENSC_LT_CURRENT])
 AC_SUBST([OPENSC_LT_REVISION])
 AC_SUBST([OPENSC_LT_AGE])
@@ -591,19 +657,23 @@ AM_CONDITIONAL([WIN32], [test "${WIN32}" = "yes"])
 AM_CONDITIONAL([CYGWIN], [test "${CYGWIN}" = "yes"])
 AM_CONDITIONAL([ENABLE_MINIDRIVER], [test "${enable_minidriver}" = "yes"])
 AM_CONDITIONAL([ENABLE_SM], [test "${enable_sm}" = "yes"])
+AM_CONDITIONAL([ENABLE_DNIE_UI], [test "${enable_dnie_ui}" = "yes"])
+AM_CONDITIONAL([GIT_CHECKOUT], [test "${GIT_CHECKOUT}" = "yes"])
 
 if test "${enable_pedantic}" = "yes"; then
 	enable_strict="yes";
-	CFLAGS="${CFLAGS} -pedantic"
+	CFLAGS="${CFLAGS} -pedantic -Wextra"
 fi
 if test "${enable_strict}" = "yes"; then
-	CFLAGS="${CFLAGS} -Wall -Wextra"
+	CFLAGS="${CFLAGS} -Wall -Wextra -Wno-unused-parameter"
 fi
 if test "$GCC" = "yes"; then
 	# This should be resolved not ignored.
 	CFLAGS="-fno-strict-aliasing ${CFLAGS}"
 fi
 
+CFLAGS="${CFLAGS} -Werror=declaration-after-statement"
+
 AC_CONFIG_FILES([
 	Makefile
 	doc/Makefile
@@ -613,14 +683,19 @@ AC_CONFIG_FILES([
 	src/common/Makefile
 	src/libopensc/Makefile
 	src/libopensc/libopensc.pc
+	src/libsm/Makefile
 	src/pkcs11/Makefile
+	src/pkcs11/versioninfo-pkcs11.rc
+	src/pkcs11/versioninfo-pkcs11-spy.rc
 	src/pkcs15init/Makefile
 	src/scconf/Makefile
 	src/tests/Makefile
 	src/tests/regression/Makefile
 	src/tools/Makefile
-	src/sm/Makefile
+	src/tools/versioninfo-tools.rc
+	src/smm/Makefile
 	src/minidriver/Makefile
+	src/minidriver/versioninfo-minidriver.rc
 	src/minidriver/opensc-minidriver.inf
 	win32/Makefile
 	win32/versioninfo.rc
@@ -629,8 +704,9 @@ AC_CONFIG_FILES([
 	win32/OpenSC.wxs
 	MacOSX/Makefile
 	MacOSX/build-package
-	MacOSX/10.5/resources/ReadMe.html
-	MacOSX/10.6/resources/ReadMe.html
+	MacOSX/Distribution.xml
+	MacOSX/resources/ReadMe.html
+	MacOSX/resources/Welcome.html
 ])
 AC_OUTPUT
 
@@ -640,6 +716,14 @@ OpenSC has been configured with the following options:
 
 
 Version:                 ${PACKAGE_VERSION}
+Version fix:		 ${OPENSC_VERSION_FIX}
+Version revision:	 ${OPENSC_VERSION_REVISION}
+
+Copyright:               ${OPENSC_VS_FF_LEGAL_COPYRIGHT}
+Company:                 ${OPENSC_VS_FF_COMPANY_NAME}
+Comments:                ${OPENSC_VS_FF_COMMENTS}
+Product name:            ${OPENSC_VS_FF_PRODUCT_NAME}
+
 User binaries:           $(eval eval eval echo "${bindir}")
 Configuration files:     $(eval eval eval echo "${sysconfdir}")
 XSL stylesheets:         ${xslstylesheetsdir}
@@ -655,6 +739,7 @@ CT-API support:          ${enable_ctapi}
 minidriver support:      ${enable_minidriver}
 SM support:              ${enable_sm}
 SM default module:       ${DEFAULT_SM_MODULE}
+DNIe UI support:         ${enable_dnie_ui}
 Debug file:              ${DEBUG_FILE}
 
 PC/SC default provider:  ${DEFAULT_PCSC_PROVIDER}
diff --git a/depcomp b/depcomp
deleted file mode 100755
index df8eea7..0000000
--- a/depcomp
+++ /dev/null
@@ -1,630 +0,0 @@
-#! /bin/sh
-# depcomp - compile a program generating dependencies as side-effects
-
-scriptversion=2009-04-28.21; # UTC
-
-# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 Free
-# Software Foundation, Inc.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-# Originally written by Alexandre Oliva <oliva at dcc.unicamp.br>.
-
-case $1 in
-  '')
-     echo "$0: No command.  Try \`$0 --help' for more information." 1>&2
-     exit 1;
-     ;;
-  -h | --h*)
-    cat <<\EOF
-Usage: depcomp [--help] [--version] PROGRAM [ARGS]
-
-Run PROGRAMS ARGS to compile a file, generating dependencies
-as side-effects.
-
-Environment variables:
-  depmode     Dependency tracking mode.
-  source      Source file read by `PROGRAMS ARGS'.
-  object      Object file output by `PROGRAMS ARGS'.
-  DEPDIR      directory where to store dependencies.
-  depfile     Dependency file to output.
-  tmpdepfile  Temporary file to use when outputing dependencies.
-  libtool     Whether libtool is used (yes/no).
-
-Report bugs to <bug-automake at gnu.org>.
-EOF
-    exit $?
-    ;;
-  -v | --v*)
-    echo "depcomp $scriptversion"
-    exit $?
-    ;;
-esac
-
-if test -z "$depmode" || test -z "$source" || test -z "$object"; then
-  echo "depcomp: Variables source, object and depmode must be set" 1>&2
-  exit 1
-fi
-
-# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
-depfile=${depfile-`echo "$object" |
-  sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
-tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
-
-rm -f "$tmpdepfile"
-
-# Some modes work just like other modes, but use different flags.  We
-# parameterize here, but still list the modes in the big case below,
-# to make depend.m4 easier to write.  Note that we *cannot* use a case
-# here, because this file can only contain one case statement.
-if test "$depmode" = hp; then
-  # HP compiler uses -M and no extra arg.
-  gccflag=-M
-  depmode=gcc
-fi
-
-if test "$depmode" = dashXmstdout; then
-   # This is just like dashmstdout with a different argument.
-   dashmflag=-xM
-   depmode=dashmstdout
-fi
-
-cygpath_u="cygpath -u -f -"
-if test "$depmode" = msvcmsys; then
-   # This is just like msvisualcpp but w/o cygpath translation.
-   # Just convert the backslash-escaped backslashes to single forward
-   # slashes to satisfy depend.m4
-   cygpath_u="sed s,\\\\\\\\,/,g"
-   depmode=msvisualcpp
-fi
-
-case "$depmode" in
-gcc3)
-## gcc 3 implements dependency tracking that does exactly what
-## we want.  Yay!  Note: for some reason libtool 1.4 doesn't like
-## it if -MD -MP comes after the -MF stuff.  Hmm.
-## Unfortunately, FreeBSD c89 acceptance of flags depends upon
-## the command line argument order; so add the flags where they
-## appear in depend2.am.  Note that the slowdown incurred here
-## affects only configure: in makefiles, %FASTDEP% shortcuts this.
-  for arg
-  do
-    case $arg in
-    -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
-    *)  set fnord "$@" "$arg" ;;
-    esac
-    shift # fnord
-    shift # $arg
-  done
-  "$@"
-  stat=$?
-  if test $stat -eq 0; then :
-  else
-    rm -f "$tmpdepfile"
-    exit $stat
-  fi
-  mv "$tmpdepfile" "$depfile"
-  ;;
-
-gcc)
-## There are various ways to get dependency output from gcc.  Here's
-## why we pick this rather obscure method:
-## - Don't want to use -MD because we'd like the dependencies to end
-##   up in a subdir.  Having to rename by hand is ugly.
-##   (We might end up doing this anyway to support other compilers.)
-## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
-##   -MM, not -M (despite what the docs say).
-## - Using -M directly means running the compiler twice (even worse
-##   than renaming).
-  if test -z "$gccflag"; then
-    gccflag=-MD,
-  fi
-  "$@" -Wp,"$gccflag$tmpdepfile"
-  stat=$?
-  if test $stat -eq 0; then :
-  else
-    rm -f "$tmpdepfile"
-    exit $stat
-  fi
-  rm -f "$depfile"
-  echo "$object : \\" > "$depfile"
-  alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
-## The second -e expression handles DOS-style file names with drive letters.
-  sed -e 's/^[^:]*: / /' \
-      -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
-## This next piece of magic avoids the `deleted header file' problem.
-## The problem is that when a header file which appears in a .P file
-## is deleted, the dependency causes make to die (because there is
-## typically no way to rebuild the header).  We avoid this by adding
-## dummy dependencies for each header file.  Too bad gcc doesn't do
-## this for us directly.
-  tr ' ' '
-' < "$tmpdepfile" |
-## Some versions of gcc put a space before the `:'.  On the theory
-## that the space means something, we add a space to the output as
-## well.
-## Some versions of the HPUX 10.20 sed can't process this invocation
-## correctly.  Breaking it into two sed invocations is a workaround.
-    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
-  rm -f "$tmpdepfile"
-  ;;
-
-hp)
-  # This case exists only to let depend.m4 do its work.  It works by
-  # looking at the text of this script.  This case will never be run,
-  # since it is checked for above.
-  exit 1
-  ;;
-
-sgi)
-  if test "$libtool" = yes; then
-    "$@" "-Wp,-MDupdate,$tmpdepfile"
-  else
-    "$@" -MDupdate "$tmpdepfile"
-  fi
-  stat=$?
-  if test $stat -eq 0; then :
-  else
-    rm -f "$tmpdepfile"
-    exit $stat
-  fi
-  rm -f "$depfile"
-
-  if test -f "$tmpdepfile"; then  # yes, the sourcefile depend on other files
-    echo "$object : \\" > "$depfile"
-
-    # Clip off the initial element (the dependent).  Don't try to be
-    # clever and replace this with sed code, as IRIX sed won't handle
-    # lines with more than a fixed number of characters (4096 in
-    # IRIX 6.2 sed, 8192 in IRIX 6.5).  We also remove comment lines;
-    # the IRIX cc adds comments like `#:fec' to the end of the
-    # dependency line.
-    tr ' ' '
-' < "$tmpdepfile" \
-    | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
-    tr '
-' ' ' >> "$depfile"
-    echo >> "$depfile"
-
-    # The second pass generates a dummy entry for each header file.
-    tr ' ' '
-' < "$tmpdepfile" \
-   | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
-   >> "$depfile"
-  else
-    # The sourcefile does not contain any dependencies, so just
-    # store a dummy comment line, to avoid errors with the Makefile
-    # "include basename.Plo" scheme.
-    echo "#dummy" > "$depfile"
-  fi
-  rm -f "$tmpdepfile"
-  ;;
-
-aix)
-  # The C for AIX Compiler uses -M and outputs the dependencies
-  # in a .u file.  In older versions, this file always lives in the
-  # current directory.  Also, the AIX compiler puts `$object:' at the
-  # start of each line; $object doesn't have directory information.
-  # Version 6 uses the directory in both cases.
-  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
-  test "x$dir" = "x$object" && dir=
-  base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
-  if test "$libtool" = yes; then
-    tmpdepfile1=$dir$base.u
-    tmpdepfile2=$base.u
-    tmpdepfile3=$dir.libs/$base.u
-    "$@" -Wc,-M
-  else
-    tmpdepfile1=$dir$base.u
-    tmpdepfile2=$dir$base.u
-    tmpdepfile3=$dir$base.u
-    "$@" -M
-  fi
-  stat=$?
-
-  if test $stat -eq 0; then :
-  else
-    rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
-    exit $stat
-  fi
-
-  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
-  do
-    test -f "$tmpdepfile" && break
-  done
-  if test -f "$tmpdepfile"; then
-    # Each line is of the form `foo.o: dependent.h'.
-    # Do two passes, one to just change these to
-    # `$object: dependent.h' and one to simply `dependent.h:'.
-    sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
-    # That's a tab and a space in the [].
-    sed -e 's,^.*\.[a-z]*:[	 ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
-  else
-    # The sourcefile does not contain any dependencies, so just
-    # store a dummy comment line, to avoid errors with the Makefile
-    # "include basename.Plo" scheme.
-    echo "#dummy" > "$depfile"
-  fi
-  rm -f "$tmpdepfile"
-  ;;
-
-icc)
-  # Intel's C compiler understands `-MD -MF file'.  However on
-  #    icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
-  # ICC 7.0 will fill foo.d with something like
-  #    foo.o: sub/foo.c
-  #    foo.o: sub/foo.h
-  # which is wrong.  We want:
-  #    sub/foo.o: sub/foo.c
-  #    sub/foo.o: sub/foo.h
-  #    sub/foo.c:
-  #    sub/foo.h:
-  # ICC 7.1 will output
-  #    foo.o: sub/foo.c sub/foo.h
-  # and will wrap long lines using \ :
-  #    foo.o: sub/foo.c ... \
-  #     sub/foo.h ... \
-  #     ...
-
-  "$@" -MD -MF "$tmpdepfile"
-  stat=$?
-  if test $stat -eq 0; then :
-  else
-    rm -f "$tmpdepfile"
-    exit $stat
-  fi
-  rm -f "$depfile"
-  # Each line is of the form `foo.o: dependent.h',
-  # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
-  # Do two passes, one to just change these to
-  # `$object: dependent.h' and one to simply `dependent.h:'.
-  sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
-  # Some versions of the HPUX 10.20 sed can't process this invocation
-  # correctly.  Breaking it into two sed invocations is a workaround.
-  sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
-    sed -e 's/$/ :/' >> "$depfile"
-  rm -f "$tmpdepfile"
-  ;;
-
-hp2)
-  # The "hp" stanza above does not work with aCC (C++) and HP's ia64
-  # compilers, which have integrated preprocessors.  The correct option
-  # to use with these is +Maked; it writes dependencies to a file named
-  # 'foo.d', which lands next to the object file, wherever that
-  # happens to be.
-  # Much of this is similar to the tru64 case; see comments there.
-  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
-  test "x$dir" = "x$object" && dir=
-  base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
-  if test "$libtool" = yes; then
-    tmpdepfile1=$dir$base.d
-    tmpdepfile2=$dir.libs/$base.d
-    "$@" -Wc,+Maked
-  else
-    tmpdepfile1=$dir$base.d
-    tmpdepfile2=$dir$base.d
-    "$@" +Maked
-  fi
-  stat=$?
-  if test $stat -eq 0; then :
-  else
-     rm -f "$tmpdepfile1" "$tmpdepfile2"
-     exit $stat
-  fi
-
-  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
-  do
-    test -f "$tmpdepfile" && break
-  done
-  if test -f "$tmpdepfile"; then
-    sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
-    # Add `dependent.h:' lines.
-    sed -ne '2,${
-	       s/^ *//
-	       s/ \\*$//
-	       s/$/:/
-	       p
-	     }' "$tmpdepfile" >> "$depfile"
-  else
-    echo "#dummy" > "$depfile"
-  fi
-  rm -f "$tmpdepfile" "$tmpdepfile2"
-  ;;
-
-tru64)
-   # The Tru64 compiler uses -MD to generate dependencies as a side
-   # effect.  `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
-   # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
-   # dependencies in `foo.d' instead, so we check for that too.
-   # Subdirectories are respected.
-   dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
-   test "x$dir" = "x$object" && dir=
-   base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
-
-   if test "$libtool" = yes; then
-      # With Tru64 cc, shared objects can also be used to make a
-      # static library.  This mechanism is used in libtool 1.4 series to
-      # handle both shared and static libraries in a single compilation.
-      # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
-      #
-      # With libtool 1.5 this exception was removed, and libtool now
-      # generates 2 separate objects for the 2 libraries.  These two
-      # compilations output dependencies in $dir.libs/$base.o.d and
-      # in $dir$base.o.d.  We have to check for both files, because
-      # one of the two compilations can be disabled.  We should prefer
-      # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
-      # automatically cleaned when .libs/ is deleted, while ignoring
-      # the former would cause a distcleancheck panic.
-      tmpdepfile1=$dir.libs/$base.lo.d   # libtool 1.4
-      tmpdepfile2=$dir$base.o.d          # libtool 1.5
-      tmpdepfile3=$dir.libs/$base.o.d    # libtool 1.5
-      tmpdepfile4=$dir.libs/$base.d      # Compaq CCC V6.2-504
-      "$@" -Wc,-MD
-   else
-      tmpdepfile1=$dir$base.o.d
-      tmpdepfile2=$dir$base.d
-      tmpdepfile3=$dir$base.d
-      tmpdepfile4=$dir$base.d
-      "$@" -MD
-   fi
-
-   stat=$?
-   if test $stat -eq 0; then :
-   else
-      rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
-      exit $stat
-   fi
-
-   for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
-   do
-     test -f "$tmpdepfile" && break
-   done
-   if test -f "$tmpdepfile"; then
-      sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
-      # That's a tab and a space in the [].
-      sed -e 's,^.*\.[a-z]*:[	 ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
-   else
-      echo "#dummy" > "$depfile"
-   fi
-   rm -f "$tmpdepfile"
-   ;;
-
-#nosideeffect)
-  # This comment above is used by automake to tell side-effect
-  # dependency tracking mechanisms from slower ones.
-
-dashmstdout)
-  # Important note: in order to support this mode, a compiler *must*
-  # always write the preprocessed file to stdout, regardless of -o.
-  "$@" || exit $?
-
-  # Remove the call to Libtool.
-  if test "$libtool" = yes; then
-    while test "X$1" != 'X--mode=compile'; do
-      shift
-    done
-    shift
-  fi
-
-  # Remove `-o $object'.
-  IFS=" "
-  for arg
-  do
-    case $arg in
-    -o)
-      shift
-      ;;
-    $object)
-      shift
-      ;;
-    *)
-      set fnord "$@" "$arg"
-      shift # fnord
-      shift # $arg
-      ;;
-    esac
-  done
-
-  test -z "$dashmflag" && dashmflag=-M
-  # Require at least two characters before searching for `:'
-  # in the target name.  This is to cope with DOS-style filenames:
-  # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
-  "$@" $dashmflag |
-    sed 's:^[  ]*[^: ][^:][^:]*\:[    ]*:'"$object"'\: :' > "$tmpdepfile"
-  rm -f "$depfile"
-  cat < "$tmpdepfile" > "$depfile"
-  tr ' ' '
-' < "$tmpdepfile" | \
-## Some versions of the HPUX 10.20 sed can't process this invocation
-## correctly.  Breaking it into two sed invocations is a workaround.
-    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
-  rm -f "$tmpdepfile"
-  ;;
-
-dashXmstdout)
-  # This case only exists to satisfy depend.m4.  It is never actually
-  # run, as this mode is specially recognized in the preamble.
-  exit 1
-  ;;
-
-makedepend)
-  "$@" || exit $?
-  # Remove any Libtool call
-  if test "$libtool" = yes; then
-    while test "X$1" != 'X--mode=compile'; do
-      shift
-    done
-    shift
-  fi
-  # X makedepend
-  shift
-  cleared=no eat=no
-  for arg
-  do
-    case $cleared in
-    no)
-      set ""; shift
-      cleared=yes ;;
-    esac
-    if test $eat = yes; then
-      eat=no
-      continue
-    fi
-    case "$arg" in
-    -D*|-I*)
-      set fnord "$@" "$arg"; shift ;;
-    # Strip any option that makedepend may not understand.  Remove
-    # the object too, otherwise makedepend will parse it as a source file.
-    -arch)
-      eat=yes ;;
-    -*|$object)
-      ;;
-    *)
-      set fnord "$@" "$arg"; shift ;;
-    esac
-  done
-  obj_suffix=`echo "$object" | sed 's/^.*\././'`
-  touch "$tmpdepfile"
-  ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
-  rm -f "$depfile"
-  cat < "$tmpdepfile" > "$depfile"
-  sed '1,2d' "$tmpdepfile" | tr ' ' '
-' | \
-## Some versions of the HPUX 10.20 sed can't process this invocation
-## correctly.  Breaking it into two sed invocations is a workaround.
-    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
-  rm -f "$tmpdepfile" "$tmpdepfile".bak
-  ;;
-
-cpp)
-  # Important note: in order to support this mode, a compiler *must*
-  # always write the preprocessed file to stdout.
-  "$@" || exit $?
-
-  # Remove the call to Libtool.
-  if test "$libtool" = yes; then
-    while test "X$1" != 'X--mode=compile'; do
-      shift
-    done
-    shift
-  fi
-
-  # Remove `-o $object'.
-  IFS=" "
-  for arg
-  do
-    case $arg in
-    -o)
-      shift
-      ;;
-    $object)
-      shift
-      ;;
-    *)
-      set fnord "$@" "$arg"
-      shift # fnord
-      shift # $arg
-      ;;
-    esac
-  done
-
-  "$@" -E |
-    sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
-       -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
-    sed '$ s: \\$::' > "$tmpdepfile"
-  rm -f "$depfile"
-  echo "$object : \\" > "$depfile"
-  cat < "$tmpdepfile" >> "$depfile"
-  sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
-  rm -f "$tmpdepfile"
-  ;;
-
-msvisualcpp)
-  # Important note: in order to support this mode, a compiler *must*
-  # always write the preprocessed file to stdout.
-  "$@" || exit $?
-
-  # Remove the call to Libtool.
-  if test "$libtool" = yes; then
-    while test "X$1" != 'X--mode=compile'; do
-      shift
-    done
-    shift
-  fi
-
-  IFS=" "
-  for arg
-  do
-    case "$arg" in
-    -o)
-      shift
-      ;;
-    $object)
-      shift
-      ;;
-    "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
-	set fnord "$@"
-	shift
-	shift
-	;;
-    *)
-	set fnord "$@" "$arg"
-	shift
-	shift
-	;;
-    esac
-  done
-  "$@" -E 2>/dev/null |
-  sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
-  rm -f "$depfile"
-  echo "$object : \\" > "$depfile"
-  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::	\1 \\:p' >> "$depfile"
-  echo "	" >> "$depfile"
-  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
-  rm -f "$tmpdepfile"
-  ;;
-
-msvcmsys)
-  # This case exists only to let depend.m4 do its work.  It works by
-  # looking at the text of this script.  This case will never be run,
-  # since it is checked for above.
-  exit 1
-  ;;
-
-none)
-  exec "$@"
-  ;;
-
-*)
-  echo "Unknown depmode $depmode" 1>&2
-  exit 1
-  ;;
-esac
-
-exit 0
-
-# Local Variables:
-# mode: shell-script
-# sh-indentation: 2
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "scriptversion="
-# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-time-zone: "UTC"
-# time-stamp-end: "; # UTC"
-# End:
diff --git a/doc/Makefile.in b/doc/Makefile.in
deleted file mode 100644
index 9a417e6..0000000
--- a/doc/Makefile.in
+++ /dev/null
@@ -1,615 +0,0 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
- at SET_MAKE@
-
-
-VPATH = @srcdir@
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-subdir = doc
-DIST_COMMON = $(dist_noinst_DATA) $(dist_noinst_SCRIPTS) \
-	$(srcdir)/Makefile.am $(srcdir)/Makefile.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_pthread.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-SCRIPTS = $(dist_noinst_SCRIPTS)
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo "  GEN   " $@;
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
-am__v_at_0 = @
-SOURCES =
-DIST_SOURCES =
-RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
-	html-recursive info-recursive install-data-recursive \
-	install-dvi-recursive install-exec-recursive \
-	install-html-recursive install-info-recursive \
-	install-pdf-recursive install-ps-recursive install-recursive \
-	installcheck-recursive installdirs-recursive pdf-recursive \
-	ps-recursive uninstall-recursive
-DATA = $(dist_noinst_DATA)
-RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
-  distclean-recursive maintainer-clean-recursive
-AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
-	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
-	distdir
-ETAGS = etags
-CTAGS = ctags
-DIST_SUBDIRS = $(SUBDIRS)
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-am__relativize = \
-  dir0=`pwd`; \
-  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
-  sed_rest='s,^[^/]*/*,,'; \
-  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
-  sed_butlast='s,/*[^/]*$$,,'; \
-  while test -n "$$dir1"; do \
-    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
-    if test "$$first" != "."; then \
-      if test "$$first" = ".."; then \
-        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
-        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
-      else \
-        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
-        if test "$$first2" = "$$first"; then \
-          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
-        else \
-          dir2="../$$dir2"; \
-        fi; \
-        dir0="$$dir0"/"$$first"; \
-      fi; \
-    fi; \
-    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
-  done; \
-  reldir="$$dir2"
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AR = @AR@
-AS = @AS@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEBUG_FILE = @DEBUG_FILE@
-DEFAULT_PCSC_PROVIDER = @DEFAULT_PCSC_PROVIDER@
-DEFAULT_SM_MODULE = @DEFAULT_SM_MODULE@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DLLTOOL = @DLLTOOL@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-FGREP = @FGREP@
-GIT = @GIT@
-GREP = @GREP@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBOBJS = @LIBOBJS@
-LIBRARY_BITNESS = @LIBRARY_BITNESS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-NM = @NM@
-NMEDIT = @NMEDIT@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OPENCT_CFLAGS = @OPENCT_CFLAGS@
-OPENCT_LIBS = @OPENCT_LIBS@
-OPENSC_LT_AGE = @OPENSC_LT_AGE@
-OPENSC_LT_CURRENT = @OPENSC_LT_CURRENT@
-OPENSC_LT_OLDEST = @OPENSC_LT_OLDEST@
-OPENSC_LT_REVISION = @OPENSC_LT_REVISION@
-OPENSC_VERSION_FIX = @OPENSC_VERSION_FIX@
-OPENSC_VERSION_MAJOR = @OPENSC_VERSION_MAJOR@
-OPENSC_VERSION_MINOR = @OPENSC_VERSION_MINOR@
-OPENSSL_CFLAGS = @OPENSSL_CFLAGS@
-OPENSSL_LIBS = @OPENSSL_LIBS@
-OPTIONAL_OPENCT_CFLAGS = @OPTIONAL_OPENCT_CFLAGS@
-OPTIONAL_OPENCT_LIBS = @OPTIONAL_OPENCT_LIBS@
-OPTIONAL_OPENSSL_CFLAGS = @OPTIONAL_OPENSSL_CFLAGS@
-OPTIONAL_OPENSSL_LIBS = @OPTIONAL_OPENSSL_LIBS@
-OPTIONAL_PCSC_CFLAGS = @OPTIONAL_PCSC_CFLAGS@
-OPTIONAL_READLINE_CFLAGS = @OPTIONAL_READLINE_CFLAGS@
-OPTIONAL_READLINE_LIBS = @OPTIONAL_READLINE_LIBS@
-OPTIONAL_ZLIB_CFLAGS = @OPTIONAL_ZLIB_CFLAGS@
-OPTIONAL_ZLIB_LIBS = @OPTIONAL_ZLIB_LIBS@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PCSC_CFLAGS = @PCSC_CFLAGS@
-PCSC_LIBS = @PCSC_LIBS@
-PKG_CONFIG = @PKG_CONFIG@
-PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
-PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
-PTHREAD_CC = @PTHREAD_CC@
-PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
-PTHREAD_LIBS = @PTHREAD_LIBS@
-RANLIB = @RANLIB@
-RC = @RC@
-READLINE_CFLAGS = @READLINE_CFLAGS@
-READLINE_LIBS = @READLINE_LIBS@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-WIN_LIBPREFIX = @WIN_LIBPREFIX@
-XSLTPROC = @XSLTPROC@
-ZLIB_CFLAGS = @ZLIB_CFLAGS@
-ZLIB_LIBS = @ZLIB_LIBS@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-ax_pthread_config = @ax_pthread_config@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-git = @git@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-pkcs11dir = @pkcs11dir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-xslstylesheetsdir = @xslstylesheetsdir@
-MAINTAINERCLEANFILES = $(srcdir)/Makefile.in
-SUBDIRS = tools
-dist_noinst_SCRIPTS = html.xsl man.xsl
-dist_noinst_DATA = api.css
-all: all-recursive
-
-.SUFFIXES:
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
-	@for dep in $?; do \
-	  case '$(am__configure_deps)' in \
-	    *$$dep*) \
-	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
-	        && { if test -f $@; then exit 0; else break; fi; }; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign doc/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --foreign doc/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-	@case '$?' in \
-	  *config.status*) \
-	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-	esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure:  $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-
-# This directory's subdirectories are mostly independent; you can cd
-# into them and run `make' without going through this Makefile.
-# To change the values of `make' variables: instead of editing Makefiles,
-# (1) if the variable is set in `config.status', edit `config.status'
-#     (which will cause the Makefiles to be regenerated when you run `make');
-# (2) otherwise, pass the desired values on the `make' command line.
-$(RECURSIVE_TARGETS):
-	@fail= failcom='exit 1'; \
-	for f in x $$MAKEFLAGS; do \
-	  case $$f in \
-	    *=* | --[!k]*);; \
-	    *k*) failcom='fail=yes';; \
-	  esac; \
-	done; \
-	dot_seen=no; \
-	target=`echo $@ | sed s/-recursive//`; \
-	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  echo "Making $$target in $$subdir"; \
-	  if test "$$subdir" = "."; then \
-	    dot_seen=yes; \
-	    local_target="$$target-am"; \
-	  else \
-	    local_target="$$target"; \
-	  fi; \
-	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
-	  || eval $$failcom; \
-	done; \
-	if test "$$dot_seen" = "no"; then \
-	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
-	fi; test -z "$$fail"
-
-$(RECURSIVE_CLEAN_TARGETS):
-	@fail= failcom='exit 1'; \
-	for f in x $$MAKEFLAGS; do \
-	  case $$f in \
-	    *=* | --[!k]*);; \
-	    *k*) failcom='fail=yes';; \
-	  esac; \
-	done; \
-	dot_seen=no; \
-	case "$@" in \
-	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
-	  *) list='$(SUBDIRS)' ;; \
-	esac; \
-	rev=''; for subdir in $$list; do \
-	  if test "$$subdir" = "."; then :; else \
-	    rev="$$subdir $$rev"; \
-	  fi; \
-	done; \
-	rev="$$rev ."; \
-	target=`echo $@ | sed s/-recursive//`; \
-	for subdir in $$rev; do \
-	  echo "Making $$target in $$subdir"; \
-	  if test "$$subdir" = "."; then \
-	    local_target="$$target-am"; \
-	  else \
-	    local_target="$$target"; \
-	  fi; \
-	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
-	  || eval $$failcom; \
-	done && test -z "$$fail"
-tags-recursive:
-	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
-	done
-ctags-recursive:
-	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
-	done
-
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	set x; \
-	here=`pwd`; \
-	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
-	  include_option=--etags-include; \
-	  empty_fix=.; \
-	else \
-	  include_option=--include; \
-	  empty_fix=; \
-	fi; \
-	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  if test "$$subdir" = .; then :; else \
-	    test ! -f $$subdir/TAGS || \
-	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
-	  fi; \
-	done; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	shift; \
-	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
-	  test -n "$$unique" || unique=$$empty_fix; \
-	  if test $$# -gt 0; then \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      "$$@" $$unique; \
-	  else \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      $$unique; \
-	  fi; \
-	fi
-ctags: CTAGS
-CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	test -z "$(CTAGS_ARGS)$$unique" \
-	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$unique
-
-GTAGS:
-	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && $(am__cd) $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) "$$here"
-
-distclean-tags:
-	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d "$(distdir)/$$file"; then \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-	  else \
-	    test -f "$(distdir)/$$file" \
-	    || cp -p $$d/$$file "$(distdir)/$$file" \
-	    || exit 1; \
-	  fi; \
-	done
-	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
-	  if test "$$subdir" = .; then :; else \
-	    test -d "$(distdir)/$$subdir" \
-	    || $(MKDIR_P) "$(distdir)/$$subdir" \
-	    || exit 1; \
-	  fi; \
-	done
-	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
-	  if test "$$subdir" = .; then :; else \
-	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
-	    $(am__relativize); \
-	    new_distdir=$$reldir; \
-	    dir1=$$subdir; dir2="$(top_distdir)"; \
-	    $(am__relativize); \
-	    new_top_distdir=$$reldir; \
-	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
-	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
-	    ($(am__cd) $$subdir && \
-	      $(MAKE) $(AM_MAKEFLAGS) \
-	        top_distdir="$$new_top_distdir" \
-	        distdir="$$new_distdir" \
-		am__remove_distdir=: \
-		am__skip_length_check=: \
-		am__skip_mode_fix=: \
-	        distdir) \
-	      || exit 1; \
-	  fi; \
-	done
-check-am: all-am
-check: check-recursive
-all-am: Makefile $(SCRIPTS) $(DATA)
-installdirs: installdirs-recursive
-installdirs-am:
-install: install-recursive
-install-exec: install-exec-recursive
-install-data: install-data-recursive
-uninstall: uninstall-recursive
-
-install-am: all-am
-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-recursive
-install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
-	@echo "This command is intended for maintainers to use"
-	@echo "it deletes files that may require special tools to rebuild."
-	-test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
-clean: clean-recursive
-
-clean-am: clean-generic clean-libtool mostlyclean-am
-
-distclean: distclean-recursive
-	-rm -f Makefile
-distclean-am: clean-am distclean-generic distclean-tags
-
-dvi: dvi-recursive
-
-dvi-am:
-
-html: html-recursive
-
-html-am:
-
-info: info-recursive
-
-info-am:
-
-install-data-am:
-
-install-dvi: install-dvi-recursive
-
-install-dvi-am:
-
-install-exec-am:
-
-install-html: install-html-recursive
-
-install-html-am:
-
-install-info: install-info-recursive
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-recursive
-
-install-pdf-am:
-
-install-ps: install-ps-recursive
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-recursive
-	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-recursive
-
-mostlyclean-am: mostlyclean-generic mostlyclean-libtool
-
-pdf: pdf-recursive
-
-pdf-am:
-
-ps: ps-recursive
-
-ps-am:
-
-uninstall-am:
-
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
-	install-am install-strip tags-recursive
-
-.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
-	all all-am check check-am clean clean-generic clean-libtool \
-	ctags ctags-recursive distclean distclean-generic \
-	distclean-libtool distclean-tags distdir dvi dvi-am html \
-	html-am info info-am install install-am install-data \
-	install-data-am install-dvi install-dvi-am install-exec \
-	install-exec-am install-html install-html-am install-info \
-	install-info-am install-man install-pdf install-pdf-am \
-	install-ps install-ps-am install-strip installcheck \
-	installcheck-am installdirs installdirs-am maintainer-clean \
-	maintainer-clean-generic mostlyclean mostlyclean-generic \
-	mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \
-	uninstall uninstall-am
-
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/doc/tools/Makefile.in b/doc/tools/Makefile.in
deleted file mode 100644
index f69cb4c..0000000
--- a/doc/tools/Makefile.in
+++ /dev/null
@@ -1,561 +0,0 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
- at SET_MAKE@
-
-VPATH = @srcdir@
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-subdir = doc/tools
-DIST_COMMON = $(dist_noinst_DATA) $(srcdir)/Makefile.am \
-	$(srcdir)/Makefile.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_pthread.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo "  GEN   " $@;
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
-am__v_at_0 = @
-SOURCES =
-DIST_SOURCES =
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
-  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
-  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
-  for p in $$list; do echo "$$p $$p"; done | \
-  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
-  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
-    if (++n[$$2] == $(am__install_max)) \
-      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
-    END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
-  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
-  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-man1dir = $(mandir)/man1
-am__installdirs = "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(man5dir)" \
-	"$(DESTDIR)$(htmldir)"
-man5dir = $(mandir)/man5
-NROFF = nroff
-MANS = $(man1_MANS) $(man5_MANS)
-DATA = $(dist_noinst_DATA) $(html_DATA)
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AR = @AR@
-AS = @AS@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEBUG_FILE = @DEBUG_FILE@
-DEFAULT_PCSC_PROVIDER = @DEFAULT_PCSC_PROVIDER@
-DEFAULT_SM_MODULE = @DEFAULT_SM_MODULE@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DLLTOOL = @DLLTOOL@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-FGREP = @FGREP@
-GIT = @GIT@
-GREP = @GREP@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBOBJS = @LIBOBJS@
-LIBRARY_BITNESS = @LIBRARY_BITNESS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-NM = @NM@
-NMEDIT = @NMEDIT@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OPENCT_CFLAGS = @OPENCT_CFLAGS@
-OPENCT_LIBS = @OPENCT_LIBS@
-OPENSC_LT_AGE = @OPENSC_LT_AGE@
-OPENSC_LT_CURRENT = @OPENSC_LT_CURRENT@
-OPENSC_LT_OLDEST = @OPENSC_LT_OLDEST@
-OPENSC_LT_REVISION = @OPENSC_LT_REVISION@
-OPENSC_VERSION_FIX = @OPENSC_VERSION_FIX@
-OPENSC_VERSION_MAJOR = @OPENSC_VERSION_MAJOR@
-OPENSC_VERSION_MINOR = @OPENSC_VERSION_MINOR@
-OPENSSL_CFLAGS = @OPENSSL_CFLAGS@
-OPENSSL_LIBS = @OPENSSL_LIBS@
-OPTIONAL_OPENCT_CFLAGS = @OPTIONAL_OPENCT_CFLAGS@
-OPTIONAL_OPENCT_LIBS = @OPTIONAL_OPENCT_LIBS@
-OPTIONAL_OPENSSL_CFLAGS = @OPTIONAL_OPENSSL_CFLAGS@
-OPTIONAL_OPENSSL_LIBS = @OPTIONAL_OPENSSL_LIBS@
-OPTIONAL_PCSC_CFLAGS = @OPTIONAL_PCSC_CFLAGS@
-OPTIONAL_READLINE_CFLAGS = @OPTIONAL_READLINE_CFLAGS@
-OPTIONAL_READLINE_LIBS = @OPTIONAL_READLINE_LIBS@
-OPTIONAL_ZLIB_CFLAGS = @OPTIONAL_ZLIB_CFLAGS@
-OPTIONAL_ZLIB_LIBS = @OPTIONAL_ZLIB_LIBS@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PCSC_CFLAGS = @PCSC_CFLAGS@
-PCSC_LIBS = @PCSC_LIBS@
-PKG_CONFIG = @PKG_CONFIG@
-PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
-PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
-PTHREAD_CC = @PTHREAD_CC@
-PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
-PTHREAD_LIBS = @PTHREAD_LIBS@
-RANLIB = @RANLIB@
-RC = @RC@
-READLINE_CFLAGS = @READLINE_CFLAGS@
-READLINE_LIBS = @READLINE_LIBS@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-WIN_LIBPREFIX = @WIN_LIBPREFIX@
-XSLTPROC = @XSLTPROC@
-ZLIB_CFLAGS = @ZLIB_CFLAGS@
-ZLIB_LIBS = @ZLIB_LIBS@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-ax_pthread_config = @ax_pthread_config@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-git = @git@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-pkcs11dir = @pkcs11dir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-xslstylesheetsdir = @xslstylesheetsdir@
-MAINTAINERCLEANFILES = $(srcdir)/Makefile.in
-dist_noinst_DATA = $(wildcard $(srcdir)/*.xml)
- at ENABLE_DOC_TRUE@html_DATA = tools.html
- at ENABLE_MAN_TRUE@man1_MANS = $(patsubst $(srcdir)/%.xml, %, $(wildcard $(srcdir)/*.1.xml))
- at ENABLE_MAN_TRUE@man5_MANS = $(patsubst $(srcdir)/%.xml, %, $(wildcard $(srcdir)/*.5.xml))
-all: all-am
-
-.SUFFIXES:
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
-	@for dep in $?; do \
-	  case '$(am__configure_deps)' in \
-	    *$$dep*) \
-	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
-	        && { if test -f $@; then exit 0; else break; fi; }; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign doc/tools/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --foreign doc/tools/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-	@case '$?' in \
-	  *config.status*) \
-	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-	esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure:  $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-install-man1: $(man1_MANS)
-	@$(NORMAL_INSTALL)
-	test -z "$(man1dir)" || $(MKDIR_P) "$(DESTDIR)$(man1dir)"
-	@list='$(man1_MANS)'; test -n "$(man1dir)" || exit 0; \
-	{ for i in $$list; do echo "$$i"; done; \
-	} | while read p; do \
-	  if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; echo "$$p"; \
-	done | \
-	sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \
-	      -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \
-	sed 'N;N;s,\n, ,g' | { \
-	list=; while read file base inst; do \
-	  if test "$$base" = "$$inst"; then list="$$list $$file"; else \
-	    echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \
-	    $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \
-	  fi; \
-	done; \
-	for i in $$list; do echo "$$i"; done | $(am__base_list) | \
-	while read files; do \
-	  test -z "$$files" || { \
-	    echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \
-	    $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \
-	done; }
-
-uninstall-man1:
-	@$(NORMAL_UNINSTALL)
-	@list='$(man1_MANS)'; test -n "$(man1dir)" || exit 0; \
-	files=`{ for i in $$list; do echo "$$i"; done; \
-	} | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \
-	      -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
-	test -z "$$files" || { \
-	  echo " ( cd '$(DESTDIR)$(man1dir)' && rm -f" $$files ")"; \
-	  cd "$(DESTDIR)$(man1dir)" && rm -f $$files; }
-install-man5: $(man5_MANS)
-	@$(NORMAL_INSTALL)
-	test -z "$(man5dir)" || $(MKDIR_P) "$(DESTDIR)$(man5dir)"
-	@list='$(man5_MANS)'; test -n "$(man5dir)" || exit 0; \
-	{ for i in $$list; do echo "$$i"; done; \
-	} | while read p; do \
-	  if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; echo "$$p"; \
-	done | \
-	sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^5][0-9a-z]*$$,5,;x' \
-	      -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \
-	sed 'N;N;s,\n, ,g' | { \
-	list=; while read file base inst; do \
-	  if test "$$base" = "$$inst"; then list="$$list $$file"; else \
-	    echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man5dir)/$$inst'"; \
-	    $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man5dir)/$$inst" || exit $$?; \
-	  fi; \
-	done; \
-	for i in $$list; do echo "$$i"; done | $(am__base_list) | \
-	while read files; do \
-	  test -z "$$files" || { \
-	    echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man5dir)'"; \
-	    $(INSTALL_DATA) $$files "$(DESTDIR)$(man5dir)" || exit $$?; }; \
-	done; }
-
-uninstall-man5:
-	@$(NORMAL_UNINSTALL)
-	@list='$(man5_MANS)'; test -n "$(man5dir)" || exit 0; \
-	files=`{ for i in $$list; do echo "$$i"; done; \
-	} | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^5][0-9a-z]*$$,5,;x' \
-	      -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
-	test -z "$$files" || { \
-	  echo " ( cd '$(DESTDIR)$(man5dir)' && rm -f" $$files ")"; \
-	  cd "$(DESTDIR)$(man5dir)" && rm -f $$files; }
-install-htmlDATA: $(html_DATA)
-	@$(NORMAL_INSTALL)
-	test -z "$(htmldir)" || $(MKDIR_P) "$(DESTDIR)$(htmldir)"
-	@list='$(html_DATA)'; test -n "$(htmldir)" || list=; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(htmldir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(htmldir)" || exit $$?; \
-	done
-
-uninstall-htmlDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(html_DATA)'; test -n "$(htmldir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	test -n "$$files" || exit 0; \
-	echo " ( cd '$(DESTDIR)$(htmldir)' && rm -f" $$files ")"; \
-	cd "$(DESTDIR)$(htmldir)" && rm -f $$files
-tags: TAGS
-TAGS:
-
-ctags: CTAGS
-CTAGS:
-
-
-distdir: $(DISTFILES)
-	@list='$(MANS)'; if test -n "$$list"; then \
-	  list=`for p in $$list; do \
-	    if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
-	    if test -f "$$d$$p"; then echo "$$d$$p"; else :; fi; done`; \
-	  if test -n "$$list" && \
-	    grep 'ab help2man is required to generate this page' $$list >/dev/null; then \
-	    echo "error: found man pages containing the \`missing help2man' replacement text:" >&2; \
-	    grep -l 'ab help2man is required to generate this page' $$list | sed 's/^/         /' >&2; \
-	    echo "       to fix them, install help2man, remove and regenerate the man pages;" >&2; \
-	    echo "       typically \`make maintainer-clean' will remove them" >&2; \
-	    exit 1; \
-	  else :; fi; \
-	else :; fi
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d "$(distdir)/$$file"; then \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-	  else \
-	    test -f "$(distdir)/$$file" \
-	    || cp -p $$d/$$file "$(distdir)/$$file" \
-	    || exit 1; \
-	  fi; \
-	done
-check-am: all-am
-check: check-am
-all-am: Makefile $(MANS) $(DATA)
-installdirs:
-	for dir in "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(man5dir)" "$(DESTDIR)$(htmldir)"; do \
-	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
-	done
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
-	@echo "This command is intended for maintainers to use"
-	@echo "it deletes files that may require special tools to rebuild."
-	-test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
-clean: clean-am
-
-clean-am: clean-generic clean-libtool clean-local mostlyclean-am
-
-distclean: distclean-am
-	-rm -f Makefile
-distclean-am: clean-am distclean-generic
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am: install-htmlDATA install-man
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am:
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man: install-man1 install-man5
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
-	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-generic mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-htmlDATA uninstall-man
-
-uninstall-man: uninstall-man1 uninstall-man5
-
-.MAKE: install-am install-strip
-
-.PHONY: all all-am check check-am clean clean-generic clean-libtool \
-	clean-local distclean distclean-generic distclean-libtool \
-	distdir dvi dvi-am html html-am info info-am install \
-	install-am install-data install-data-am install-dvi \
-	install-dvi-am install-exec install-exec-am install-html \
-	install-html-am install-htmlDATA install-info install-info-am \
-	install-man install-man1 install-man5 install-pdf \
-	install-pdf-am install-ps install-ps-am install-strip \
-	installcheck installcheck-am installdirs maintainer-clean \
-	maintainer-clean-generic mostlyclean mostlyclean-generic \
-	mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \
-	uninstall-htmlDATA uninstall-man uninstall-man1 uninstall-man5
-
-
-tools.html: $(srcdir)/tools.xml $(wildcard $(srcdir)/*.1.xml) $(wildcard $(srcdir)/*.5.xml)
-	$(XSLTPROC) --nonet --path "$(srcdir)/..:$(xslstylesheetsdir)/html" --xinclude -o $@ html.xsl $<
-
-%.1: $(srcdir)/%.1.xml
-	sed -e 's|@pkgdatadir[@]|$(pkgdatadir)|g' < $< \
-	| $(XSLTPROC) --nonet --path "$(srcdir)/..:$(xslstylesheetsdir)/manpages" --xinclude -o $@ man.xsl $<
-
-%.5: $(srcdir)/%.5.xml
-	sed -e 's|@pkgdatadir[@]|$(pkgdatadir)|g' < $< \
-	| $(XSLTPROC) --nonet --path "$(srcdir)/..:$(xslstylesheetsdir)/manpages" --xinclude -o $@ man.xsl $<
-
-clean-local:
-	-rm -rf $(html_DATA) $(man1_MANS) $(man5_MANS)
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/doc/tools/dnie-tool.xml b/doc/tools/dnie-tool.xml
new file mode 100755
index 0000000..ebc1dcc
--- /dev/null
+++ b/doc/tools/dnie-tool.xml
@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<refentry id="dnie-tool">
+	<refmeta>
+		<refentrytitle>dnie-tool</refentrytitle>
+		<manvolnum>1</manvolnum>
+		<refmiscinfo>opensc</refmiscinfo>
+	</refmeta>
+
+	<refnamediv>
+		<refname>dnie-tool</refname>
+		<refpurpose>displays information about DNIe based security tokens</refpurpose>
+	</refnamediv>
+
+	<refsect1>
+		<title>Synopsis</title>
+		<para>
+			<command>dnie-tool</command> [OPTIONS]
+		</para>
+	</refsect1>
+
+	<refsect1>
+		<title>Description</title>
+		<para>
+			The <command>dnie-tool</command> utility is used to display additional information about DNIe, the Spanish National eID card.
+		</para>
+	</refsect1>
+
+	<refsect1>
+		<title>Options</title>
+		<para>
+			<variablelist>
+				<varlistentry>
+					<term><option>--idesp, -i </option></term>
+					<listitem><para>Show the DNIe IDESP value.
+					</para></listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><option>--data, -d </option></term>
+					<listitem><para>Show DNIe personal information.
+					Reads and print DNIe number and User Name and SurName</para></listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><option>--all, -a </option></term>
+					<listitem><para>Displays every available information.
+					This command is equivalent to -d -i -s 
+					</para></listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><option>--serial, -s </option></term>
+					<listitem><para>Displays DNIe Serial Number
+					</para></listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><option>--version, -V </option></term>
+					<listitem><para>Show DNIe sw version.
+					Displays sofware version for in-card DNIe OS</para></listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><option>--pin</option> pin, <option>-p</option> pin</term>
+					<listitem><para>Specify the user pin <varname>value</varname> to use.
+					The default is do not enter pin</para></listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><option>--reader</option> number, <option>-r</option> number</term>
+					<listitem><para>Specify the reader <varname>number</varname> to use.
+					The default is reader 0.</para></listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><option>--driver</option> number, <option>-c</option> driver</term>
+					<listitem><para>Specify the reader driver <varname>name</varname> to use.
+					Default is use driver from configuration file, or auto-detect if absent</para></listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><option>--wait, -w</option></term>
+					<listitem><para>Causes <command>dnie-tool</command> to wait for the token to be inserted into reader.</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><option>--verbose, -v</option></term>
+					<listitem><para>Causes <command>dnie-tool</command> to be more verbose. 
+					Specify this flag several times
+to enable debug output in the opensc library.</para></listitem>
+				</varlistentry>
+			</variablelist>
+		</para>
+	</refsect1>
+	
+	<refsect1>
+		<title>See also</title>
+		<para>opensc(7)</para>
+	</refsect1>
+	<refsect1>
+		<title>Authors</title>
+		<para><command>dnie-tool</command> was written by
+		Juan Antonio Martinez <email>jonsito at terra.es</email>.</para>
+	</refsect1>
+
+</refentry>
diff --git a/doc/tools/eidenv.1.xml b/doc/tools/eidenv.1.xml
index b5f45ac..2f72972 100644
--- a/doc/tools/eidenv.1.xml
+++ b/doc/tools/eidenv.1.xml
@@ -57,7 +57,7 @@
 				<varlistentry>
 					<term>
 						<option>--print</option>,
-						<option>-n</option>
+						<option>-p</option>
 					</term>
 					<listitem><para>Prints all data
 					fields from the card, like validity
diff --git a/doc/tools/opensc-explorer.1.xml b/doc/tools/opensc-explorer.1.xml
index 6e981ef..40646fb 100644
--- a/doc/tools/opensc-explorer.1.xml
+++ b/doc/tools/opensc-explorer.1.xml
@@ -475,6 +475,15 @@
 				</listitem>
 			</varlistentry>
 
+			<varlistentry>
+				<term>
+					<command>sm</command> <replaceable>[open]</replaceable>|<replaceable>[close]</replaceable>
+				</term>
+				<listitem>
+                                        <para>Calls the card's <replaceable>open</replaceable> or <replaceable>close</replaceable> Secure Messaging handler.</para>
+                                </listitem>
+			</varlistentry>
+
 		</variablelist>
 	</para>
 </refsect1>
diff --git a/doc/tools/pkcs11-tool.1.xml b/doc/tools/pkcs11-tool.1.xml
index 56c8e61..f4e28df 100644
--- a/doc/tools/pkcs11-tool.1.xml
+++ b/doc/tools/pkcs11-tool.1.xml
@@ -141,6 +141,14 @@
 
 				<varlistentry>
 					<term>
+						<option>--list-token-slots</option>,
+						<option>-T</option>
+					</term>
+					<listitem><para>List slots with tokens.</para></listitem>
+				</varlistentry>
+
+				<varlistentry>
+					<term>
 						<option>--login</option>,
 						<option>-l</option>
 					</term>
diff --git a/doc/tools/sc-hsm-tool.1.xml b/doc/tools/sc-hsm-tool.1.xml
index 4c42439..f65fe7e 100644
--- a/doc/tools/sc-hsm-tool.1.xml
+++ b/doc/tools/sc-hsm-tool.1.xml
@@ -45,6 +45,7 @@
 						<para>Use <option>--pin</option> to define the initial user pin value.</para>
 						<para>Use <option>--pin-retry</option> to define the maximum number of wrong user PIN presentations.</para>
 						<para>Use with <option>--dkek-shares</option> to enable key wrap / unwrap.</para>
+						<para>Use with <option>--label</option> to define a token label</para>
 					</listitem>
 				</varlistentry>
 
@@ -54,9 +55,10 @@
 						<option>-C</option> <replaceable>filename</replaceable>
 					</term>
 					<listitem>
-						<para>Create a DKEK share encrypted under a user supplied password and saved to the file
+						<para>Create a DKEK share encrypted under a password and save it to the file
 						      given as parameter.</para>
 						<para>Use <option>--password</option> to provide a password for encryption rather than prompting for one.</para>
+						<para>Use <option>--pwd-shares-threshold</option> and <option>--pwd-shares-total</option> to randomly generate a password and split is using a (t, n) threshold scheme.</para>
 					</listitem>
 				</varlistentry>
 				
@@ -68,6 +70,7 @@
 					<listitem>
 						<para>Prompt for user password, read and decrypt DKEK share and import into SmartCard-HSM.</para>
 						<para>Use <option>--password</option> to provide a password for decryption rather than prompting for one.</para>
+						<para>Use <option>--pwd-shares-total</option> to specify the number of shares that should be entered to reconstruct the password.</para>
 					</listitem>
 				</varlistentry>
 				
@@ -153,6 +156,24 @@
 				
 				<varlistentry>
 					<term>
+						<option>--pwd-shares-threshold</option> <replaceable>value</replaceable>
+					</term>
+					<listitem>
+						<para>Define threshold for number of password shares required for reconstruction.</para>
+					</listitem>
+				</varlistentry>
+				
+				<varlistentry>
+					<term>
+						<option>--pwd-shares-total</option> <replaceable>value</replaceable>
+					</term>
+					<listitem>
+						<para>Define number of password shares.</para>
+					</listitem>
+				</varlistentry>
+				
+				<varlistentry>
+					<term>
 						<option>--force</option>
 					</term>
 					<listitem>
@@ -162,6 +183,14 @@
 				
 				<varlistentry>
 					<term>
+						<option>--label</option> <replaceable>label</replaceable>,
+						<option>-l</option> <replaceable>label</replaceable>
+					</term>
+					<listitem><para>Define the token label to be used in --initialize.</para></listitem>
+				</varlistentry>
+				
+				<varlistentry>
+					<term>
 						<option>--reader</option> <replaceable>num</replaceable>,
 						<option>-r</option> <replaceable>num</replaceable>
 					</term>
@@ -194,13 +223,17 @@
 		<title>Examples</title>
 		<para>Create a DKEK share:</para>
 		<para><command>sc-hsm-tool --create-dkek-share dkek-share-1.pbe</command></para>
-		<para>Initialize SmartCard-HSM to use a single DKEK share</para>
-		<para><command>sc-hsm-tool --initialize --so-pin 3537363231383830 --pin 648219 --dkek-shares 1</command></para>
-		<para>Import DKEK share</para>
+		<para>Create a DKEK share with random password split up using a (3, 5) threshold scheme:</para>
+		<para><command>sc-hsm-tool --create-dkek-share dkek-share-1.pbe --pwd-shares-threshold 3 --pwd-shares-total 5</command></para>
+		<para>Initialize SmartCard-HSM to use a single DKEK share:</para>
+		<para><command>sc-hsm-tool --initialize --so-pin 3537363231383830 --pin 648219 --dkek-shares 1 --label mytoken</command></para>
+		<para>Import DKEK share:</para>
 		<para><command>sc-hsm-tool --import-dkek-share dkek-share-1.pbe</command></para>
-		<para>Wrap referenced key, description and certificate</para>
+		<para>Import DKEK share using a password split up using a (3, 5) threshold scheme for encryption:</para>
+		<para><command>sc-hsm-tool --import-dkek-share dkek-share-1.pbe  --pwd-shares-total 3</command></para>
+		<para>Wrap referenced key, description and certificate:</para>
 		<para><command>sc-hsm-tool --wrap-key wrap-key.bin --key-reference 1 --pin 648219</command></para>
-		<para>Unwrap key into same or in different SmartCard-HSM with the same DKEK</para>
+		<para>Unwrap key into same or in different SmartCard-HSM with the same DKEK:</para>
 		<para><command>sc-hsm-tool --unwrap-key wrap-key.bin --key-reference 10 --pin 648219 --force</command></para>
 	</refsect1>
 	
diff --git a/etc/Makefile.am b/etc/Makefile.am
index 910c2d1..59f2d29 100644
--- a/etc/Makefile.am
+++ b/etc/Makefile.am
@@ -30,3 +30,6 @@ install-exec-hook: opensc.conf
 	else \
 		$(INSTALL_DATA) opensc.conf "$(DESTDIR)$(sysconfdir)/opensc.conf"; \
 	fi
+
+uninstall-hook: opensc.conf
+	rm -f "$(DESTDIR)$(sysconfdir)/opensc.conf.new" "$(DESTDIR)$(sysconfdir)/opensc.conf"
diff --git a/etc/Makefile.in b/etc/Makefile.in
deleted file mode 100644
index 8b0a4eb..0000000
--- a/etc/Makefile.in
+++ /dev/null
@@ -1,440 +0,0 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
- at SET_MAKE@
-
-VPATH = @srcdir@
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-subdir = etc
-DIST_COMMON = $(dist_noinst_DATA) $(srcdir)/Makefile.am \
-	$(srcdir)/Makefile.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_pthread.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo "  GEN   " $@;
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
-am__v_at_0 = @
-SOURCES =
-DIST_SOURCES =
-DATA = $(dist_noinst_DATA) $(nodist_noinst_DATA)
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AR = @AR@
-AS = @AS@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEBUG_FILE = @DEBUG_FILE@
-DEFAULT_PCSC_PROVIDER = @DEFAULT_PCSC_PROVIDER@
-DEFAULT_SM_MODULE = @DEFAULT_SM_MODULE@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DLLTOOL = @DLLTOOL@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-FGREP = @FGREP@
-GIT = @GIT@
-GREP = @GREP@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBOBJS = @LIBOBJS@
-LIBRARY_BITNESS = @LIBRARY_BITNESS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-NM = @NM@
-NMEDIT = @NMEDIT@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OPENCT_CFLAGS = @OPENCT_CFLAGS@
-OPENCT_LIBS = @OPENCT_LIBS@
-OPENSC_LT_AGE = @OPENSC_LT_AGE@
-OPENSC_LT_CURRENT = @OPENSC_LT_CURRENT@
-OPENSC_LT_OLDEST = @OPENSC_LT_OLDEST@
-OPENSC_LT_REVISION = @OPENSC_LT_REVISION@
-OPENSC_VERSION_FIX = @OPENSC_VERSION_FIX@
-OPENSC_VERSION_MAJOR = @OPENSC_VERSION_MAJOR@
-OPENSC_VERSION_MINOR = @OPENSC_VERSION_MINOR@
-OPENSSL_CFLAGS = @OPENSSL_CFLAGS@
-OPENSSL_LIBS = @OPENSSL_LIBS@
-OPTIONAL_OPENCT_CFLAGS = @OPTIONAL_OPENCT_CFLAGS@
-OPTIONAL_OPENCT_LIBS = @OPTIONAL_OPENCT_LIBS@
-OPTIONAL_OPENSSL_CFLAGS = @OPTIONAL_OPENSSL_CFLAGS@
-OPTIONAL_OPENSSL_LIBS = @OPTIONAL_OPENSSL_LIBS@
-OPTIONAL_PCSC_CFLAGS = @OPTIONAL_PCSC_CFLAGS@
-OPTIONAL_READLINE_CFLAGS = @OPTIONAL_READLINE_CFLAGS@
-OPTIONAL_READLINE_LIBS = @OPTIONAL_READLINE_LIBS@
-OPTIONAL_ZLIB_CFLAGS = @OPTIONAL_ZLIB_CFLAGS@
-OPTIONAL_ZLIB_LIBS = @OPTIONAL_ZLIB_LIBS@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PCSC_CFLAGS = @PCSC_CFLAGS@
-PCSC_LIBS = @PCSC_LIBS@
-PKG_CONFIG = @PKG_CONFIG@
-PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
-PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
-PTHREAD_CC = @PTHREAD_CC@
-PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
-PTHREAD_LIBS = @PTHREAD_LIBS@
-RANLIB = @RANLIB@
-RC = @RC@
-READLINE_CFLAGS = @READLINE_CFLAGS@
-READLINE_LIBS = @READLINE_LIBS@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-WIN_LIBPREFIX = @WIN_LIBPREFIX@
-XSLTPROC = @XSLTPROC@
-ZLIB_CFLAGS = @ZLIB_CFLAGS@
-ZLIB_LIBS = @ZLIB_LIBS@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-ax_pthread_config = @ax_pthread_config@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-git = @git@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-pkcs11dir = @pkcs11dir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-xslstylesheetsdir = @xslstylesheetsdir@
-MAINTAINERCLEANFILES = $(srcdir)/Makefile.in $(srcdir)/opensc.conf.win
-DISTCLEANFILES = opensc.conf opensc.conf.win
-EXTRA_DIST = Makefile.mak
-SUFFIXES = .in
-dist_noinst_DATA = opensc.conf.in opensc.conf.win.in
-nodist_noinst_DATA = opensc.conf opensc.conf.win # For Windows MSVC build
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .in
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
-	@for dep in $?; do \
-	  case '$(am__configure_deps)' in \
-	    *$$dep*) \
-	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
-	        && { if test -f $@; then exit 0; else break; fi; }; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign etc/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --foreign etc/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-	@case '$?' in \
-	  *config.status*) \
-	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-	esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure:  $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-tags: TAGS
-TAGS:
-
-ctags: CTAGS
-CTAGS:
-
-
-distdir: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d "$(distdir)/$$file"; then \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-	  else \
-	    test -f "$(distdir)/$$file" \
-	    || cp -p $$d/$$file "$(distdir)/$$file" \
-	    || exit 1; \
-	  fi; \
-	done
-check-am: all-am
-check: check-am
-all-am: Makefile $(DATA)
-installdirs:
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
-
-maintainer-clean-generic:
-	@echo "This command is intended for maintainers to use"
-	@echo "it deletes files that may require special tools to rebuild."
-	-test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
-clean: clean-am
-
-clean-am: clean-generic clean-libtool mostlyclean-am
-
-distclean: distclean-am
-	-rm -f Makefile
-distclean-am: clean-am distclean-generic
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am:
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am:
-	@$(NORMAL_INSTALL)
-	$(MAKE) $(AM_MAKEFLAGS) install-exec-hook
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
-	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-generic mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am:
-
-.MAKE: install-am install-exec-am install-strip
-
-.PHONY: all all-am check check-am clean clean-generic clean-libtool \
-	distclean distclean-generic distclean-libtool distdir dvi \
-	dvi-am html html-am info info-am install install-am \
-	install-data install-data-am install-dvi install-dvi-am \
-	install-exec install-exec-am install-exec-hook install-html \
-	install-html-am install-info install-info-am install-man \
-	install-pdf install-pdf-am install-ps install-ps-am \
-	install-strip installcheck installcheck-am installdirs \
-	maintainer-clean maintainer-clean-generic mostlyclean \
-	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-	uninstall uninstall-am
-
-
-# Make sure we build this every time
-# as there is no dependency for this.
-# Can be removed if MSVC is not requried.
-force:
-opensc.conf: opensc.conf.in force
-
-.in:
-	sed \
-		-e 's|@pkgdatadir[@]|$(pkgdatadir)|g' \
-		-e 's|@libdir[@]|$(libdir)|g' \
-		-e 's|@DEFAULT_PCSC_PROVIDER[@]|$(DEFAULT_PCSC_PROVIDER)|g' \
-		-e 's|@DEFAULT_SM_MODULE[@]|$(DEFAULT_SM_MODULE)|g' \
-		-e 's|@DEBUG_FILE[@]|$(DEBUG_FILE)|g' \
-		< $< > $@
-
-install-exec-hook: opensc.conf
-	$(MKDIR_P) "$(DESTDIR)$(sysconfdir)"
-	if [ -f "$(DESTDIR)$(sysconfdir)/opensc.conf" ]; then \
-		$(INSTALL_DATA) opensc.conf "$(DESTDIR)$(sysconfdir)/opensc.conf.new"; \
-	else \
-		$(INSTALL_DATA) opensc.conf "$(DESTDIR)$(sysconfdir)/opensc.conf"; \
-	fi
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/etc/opensc.conf.in b/etc/opensc.conf.in
index 89c632d..b4a2899 100644
--- a/etc/opensc.conf.in
+++ b/etc/opensc.conf.in
@@ -45,6 +45,12 @@ app default {
 	#
 	# paranoid_memory = false;
 
+        # Enable default card driver
+        # Default card driver is explicitely enabled for the 'opensc-explorer' and 'opensc-tool'.
+        #
+        # Default: false
+        # enable_default_driver = true;
+
 	# CT-API module configuration.
 	reader_driver ctapi {
 		# module @libdir@/libtowitoko.so {
@@ -246,22 +252,6 @@ app default {
 	card_atr 3b:6e:00:00:45:73:74:45:49:44:20:76:65:72:20:31:2e:30 {
 		force_protocol = t0;
 	}
-	# Cold ATR v3 dev1
-	card_atr 3b:fe:18:00:00:80:31:fe:45:45:73:74:45:49:44:20:76:65:72:20:31:2e:30:a8 {
-		force_protocol = t0;
-	}
-	# Warm ATR v3 dev1
-	card_atr 3b:fe:18:00:00:80:31:fe:45:80:31:80:66:40:90:a4:56:1b:16:83:01:90:00:86 {
-		force_protocol = t0;
-	}
-	# Warm ATR v3 dev2
-	card_atr 3b:fe:18:00:00:80:31:fe:45:80:31:80:66:40:90:a4:16:2a:00:83:01:90:00:e1 {
-		force_protocol = t0;
-	}
-	# Warm ATR v3 (18.01.2011)
-	card_atr 3b:fe:18:00:00:80:31:fe:45:80:31:80:66:40:90:a4:16:2a:00:83:0f:90:00:ef {
-		force_protocol = t0;
-	}
 
 	# D-Trust cards are also based on micardo and need T=0 for some reason
 	card_atr 3b:ff:94:00:ff:80:b1:fe:45:1f:03:00:68:d2:76:00:00:28:ff:05:1e:31:80:00:90:00:23 {
@@ -599,26 +589,36 @@ app opensc-pkcs11 {
 		# Default: empty
 		# ignored_readers = "CardMan 1021", "SPR 532";
 
-                # Symbolic names of PINs for which slots are created
-                # Card can contain more then one PINs or more then one on-card application with
-                #   its own PINs. Normally, to access all of them with the PKCS#11 API a slot has to be
-                #   created for all of them. Many slots could be ennoying for some of widely used application,
-                #   like FireFox. This configuration parameter allows to select the PINs or on-card application
-                #   for which PKCS#11 slot will be created.
-                # Actually recognised following symbolic names:
-                #  'user', 'sign', 'application', all
-                # Only PINs initialised, non-SoPIN, non-unblocking are associated with symbolic name.
-                # 'user' is identified as first global or first local PIN.
-                # 'sign' is identified as second PIN: first local, second global or second local.
-                # 'application' slot created for each on-card application,
-                #   even if they use a common global PIN.
-                # 'all' slot created for all non-sopin, non-unblocking PINs,
-                #   optionally for PUK (see option 'create_puk_slot')
-                #
-                # Default: all
-                # create_slots_for_pins = "user,sign";
-                # create_slots_for_pins = application;
-                # create_slots_for_pins = "application,sign";
+		# Symbolic names of PINs for which slots are created
+		# Card can contain more then one PINs or more then one on-card application with
+		#   its own PINs. Normally, to access all of them with the PKCS#11 API a slot has to be
+		#   created for all of them. Many slots could be ennoying for some of widely used application,
+		#   like FireFox. This configuration parameter allows to select the PINs or on-card application
+		#   for which PKCS#11 slot will be created.
+		# Actually recognised following symbolic names:
+		#  'user', 'sign', 'application', all
+		# Only PINs initialised, non-SoPIN, non-unblocking are associated with symbolic name.
+		# 'user' is identified as first global or first local PIN.
+		# 'sign' is identified as second PIN: first local, second global or second local.
+		# 'application' slot created for each on-card application,
+		#   even if they use a common global PIN.
+		# 'all' slot created for all non-sopin, non-unblocking PINs,
+		#   optionally for PUK (see option 'create_puk_slot')
+		#
+		# Default: all
+		# create_slots_for_pins = "user,sign";
+		# create_slots_for_pins = application;
+		# create_slots_for_pins = "application,sign";
+		#
+		# For the module to simulate the opensc-onepin module behavior the following option
+		# must be set:
+		# create_slots_for_pins = "user"
+	}
+}
+
+app onepin-opensc-pkcs11 {
+	pkcs11 {
+		slots_per_card = 1;
 	}
 }
 
diff --git a/etc/opensc.conf.win.in b/etc/opensc.conf.win.in
index 14d614e..fb648c7 100644
--- a/etc/opensc.conf.win.in
+++ b/etc/opensc.conf.win.in
@@ -45,6 +45,12 @@ app default {
 	#
 	# paranoid_memory = false;
 
+        # Enable default card driver
+        # Default card driver is explicitely enabled for the 'opensc-explorer' and 'opensc-tool'.
+        #
+        # Default: false
+        # enable_default_driver = true;
+
 	# CT-API module configuration.
 	reader_driver ctapi {
 		# module @libdir@/libtowitoko.so {
@@ -246,22 +252,6 @@ app default {
 	card_atr 3b:6e:00:00:45:73:74:45:49:44:20:76:65:72:20:31:2e:30 {
 		force_protocol = t0;
 	}
-	# Cold ATR v3 dev1
-	card_atr 3b:fe:18:00:00:80:31:fe:45:45:73:74:45:49:44:20:76:65:72:20:31:2e:30:a8 {
-		force_protocol = t0;
-	}
-	# Warm ATR v3 dev1
-	card_atr 3b:fe:18:00:00:80:31:fe:45:80:31:80:66:40:90:a4:56:1b:16:83:01:90:00:86 {
-		force_protocol = t0;
-	}
-	# Warm ATR v3 dev2
-	card_atr 3b:fe:18:00:00:80:31:fe:45:80:31:80:66:40:90:a4:16:2a:00:83:01:90:00:e1 {
-		force_protocol = t0;
-	}
-	# Warm ATR v3 (18.01.2011)
-	card_atr 3b:fe:18:00:00:80:31:fe:45:80:31:80:66:40:90:a4:16:2a:00:83:0f:90:00:ef {
-		force_protocol = t0;
-	}
 
 	# D-Trust cards are also based on micardo and need T=0 for some reason
 	card_atr 3b:ff:94:00:ff:80:b1:fe:45:1f:03:00:68:d2:76:00:00:28:ff:05:1e:31:80:00:90:00:23 {
@@ -604,26 +594,26 @@ app opensc-pkcs11 {
 		# Default: empty
 		# ignored_readers = "CardMan 1021", "SPR 532";
 
-                # Symbolic names of PINs for which slots are created
-                # Card can contain more then one PINs or more then one on-card application with
-                #   its own PINs. Normally, to access all of them with the PKCS#11 API a slot has to be
-                #   created for all of them. Many slots could be ennoying for some of widely used application,
-                #   like FireFox. This configuration parameter allows to select the PINs or on-card application
-                #   for which PKCS#11 slot will be created.
-                # Actually recognised following symbolic names:
-                #  'user', 'sign', 'application', all
-                # Only PINs initialised, non-SoPIN, non-unblocking are associated with symbolic name.
-                # 'user' is identified as first global or first local PIN.
-                # 'sign' is identified as second PIN: first local, second global or second local.
-                # 'application' slot created for each on-card application,
-                #   even if they use a common global PIN.
-                # 'all' slot created for all non-sopin, non-unblocking PINs,
-                #   optionally for PUK (see option 'create_puk_slot')
-                #
-                # Default: all
-                # create_slots_for_pins = "user,sign";
-                # create_slots_for_pins = application;
-                # create_slots_for_pins = "application,sign";
+		# Symbolic names of PINs for which slots are created
+		# Card can contain more then one PINs or more then one on-card application with
+		#   its own PINs. Normally, to access all of them with the PKCS#11 API a slot has to be
+		#   created for all of them. Many slots could be ennoying for some of widely used application,
+		#   like FireFox. This configuration parameter allows to select the PINs or on-card application
+		#   for which PKCS#11 slot will be created.
+		# Actually recognised following symbolic names:
+		#  'user', 'sign', 'application', all
+		# Only PINs initialised, non-SoPIN, non-unblocking are associated with symbolic name.
+		# 'user' is identified as first global or first local PIN.
+		# 'sign' is identified as second PIN: first local, second global or second local.
+		# 'application' slot created for each on-card application,
+		#   even if they use a common global PIN.
+		# 'all' slot created for all non-sopin, non-unblocking PINs,
+		#   optionally for PUK (see option 'create_puk_slot')
+		#
+		# Default: all
+		# create_slots_for_pins = "user,sign";
+		# create_slots_for_pins = application;
+		# create_slots_for_pins = "application,sign";
 	}
 }
 
diff --git a/install-sh b/install-sh
deleted file mode 100755
index 6781b98..0000000
--- a/install-sh
+++ /dev/null
@@ -1,520 +0,0 @@
-#!/bin/sh
-# install - install a program, script, or datafile
-
-scriptversion=2009-04-28.21; # UTC
-
-# This originates from X11R5 (mit/util/scripts/install.sh), which was
-# later released in X11R6 (xc/config/util/install.sh) with the
-# following copyright and license.
-#
-# Copyright (C) 1994 X Consortium
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to
-# deal in the Software without restriction, including without limitation the
-# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
-# sell copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
-# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
-# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-# Except as contained in this notice, the name of the X Consortium shall not
-# be used in advertising or otherwise to promote the sale, use or other deal-
-# ings in this Software without prior written authorization from the X Consor-
-# tium.
-#
-#
-# FSF changes to this file are in the public domain.
-#
-# Calling this script install-sh is preferred over install.sh, to prevent
-# `make' implicit rules from creating a file called install from it
-# when there is no Makefile.
-#
-# This script is compatible with the BSD install script, but was written
-# from scratch.
-
-nl='
-'
-IFS=" ""	$nl"
-
-# set DOITPROG to echo to test this script
-
-# Don't use :- since 4.3BSD and earlier shells don't like it.
-doit=${DOITPROG-}
-if test -z "$doit"; then
-  doit_exec=exec
-else
-  doit_exec=$doit
-fi
-
-# Put in absolute file names if you don't have them in your path;
-# or use environment vars.
-
-chgrpprog=${CHGRPPROG-chgrp}
-chmodprog=${CHMODPROG-chmod}
-chownprog=${CHOWNPROG-chown}
-cmpprog=${CMPPROG-cmp}
-cpprog=${CPPROG-cp}
-mkdirprog=${MKDIRPROG-mkdir}
-mvprog=${MVPROG-mv}
-rmprog=${RMPROG-rm}
-stripprog=${STRIPPROG-strip}
-
-posix_glob='?'
-initialize_posix_glob='
-  test "$posix_glob" != "?" || {
-    if (set -f) 2>/dev/null; then
-      posix_glob=
-    else
-      posix_glob=:
-    fi
-  }
-'
-
-posix_mkdir=
-
-# Desired mode of installed file.
-mode=0755
-
-chgrpcmd=
-chmodcmd=$chmodprog
-chowncmd=
-mvcmd=$mvprog
-rmcmd="$rmprog -f"
-stripcmd=
-
-src=
-dst=
-dir_arg=
-dst_arg=
-
-copy_on_change=false
-no_target_directory=
-
-usage="\
-Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
-   or: $0 [OPTION]... SRCFILES... DIRECTORY
-   or: $0 [OPTION]... -t DIRECTORY SRCFILES...
-   or: $0 [OPTION]... -d DIRECTORIES...
-
-In the 1st form, copy SRCFILE to DSTFILE.
-In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
-In the 4th, create DIRECTORIES.
-
-Options:
-     --help     display this help and exit.
-     --version  display version info and exit.
-
-  -c            (ignored)
-  -C            install only if different (preserve the last data modification time)
-  -d            create directories instead of installing files.
-  -g GROUP      $chgrpprog installed files to GROUP.
-  -m MODE       $chmodprog installed files to MODE.
-  -o USER       $chownprog installed files to USER.
-  -s            $stripprog installed files.
-  -t DIRECTORY  install into DIRECTORY.
-  -T            report an error if DSTFILE is a directory.
-
-Environment variables override the default commands:
-  CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG
-  RMPROG STRIPPROG
-"
-
-while test $# -ne 0; do
-  case $1 in
-    -c) ;;
-
-    -C) copy_on_change=true;;
-
-    -d) dir_arg=true;;
-
-    -g) chgrpcmd="$chgrpprog $2"
-	shift;;
-
-    --help) echo "$usage"; exit $?;;
-
-    -m) mode=$2
-	case $mode in
-	  *' '* | *'	'* | *'
-'*	  | *'*'* | *'?'* | *'['*)
-	    echo "$0: invalid mode: $mode" >&2
-	    exit 1;;
-	esac
-	shift;;
-
-    -o) chowncmd="$chownprog $2"
-	shift;;
-
-    -s) stripcmd=$stripprog;;
-
-    -t) dst_arg=$2
-	shift;;
-
-    -T) no_target_directory=true;;
-
-    --version) echo "$0 $scriptversion"; exit $?;;
-
-    --)	shift
-	break;;
-
-    -*)	echo "$0: invalid option: $1" >&2
-	exit 1;;
-
-    *)  break;;
-  esac
-  shift
-done
-
-if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
-  # When -d is used, all remaining arguments are directories to create.
-  # When -t is used, the destination is already specified.
-  # Otherwise, the last argument is the destination.  Remove it from $@.
-  for arg
-  do
-    if test -n "$dst_arg"; then
-      # $@ is not empty: it contains at least $arg.
-      set fnord "$@" "$dst_arg"
-      shift # fnord
-    fi
-    shift # arg
-    dst_arg=$arg
-  done
-fi
-
-if test $# -eq 0; then
-  if test -z "$dir_arg"; then
-    echo "$0: no input file specified." >&2
-    exit 1
-  fi
-  # It's OK to call `install-sh -d' without argument.
-  # This can happen when creating conditional directories.
-  exit 0
-fi
-
-if test -z "$dir_arg"; then
-  trap '(exit $?); exit' 1 2 13 15
-
-  # Set umask so as not to create temps with too-generous modes.
-  # However, 'strip' requires both read and write access to temps.
-  case $mode in
-    # Optimize common cases.
-    *644) cp_umask=133;;
-    *755) cp_umask=22;;
-
-    *[0-7])
-      if test -z "$stripcmd"; then
-	u_plus_rw=
-      else
-	u_plus_rw='% 200'
-      fi
-      cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
-    *)
-      if test -z "$stripcmd"; then
-	u_plus_rw=
-      else
-	u_plus_rw=,u+rw
-      fi
-      cp_umask=$mode$u_plus_rw;;
-  esac
-fi
-
-for src
-do
-  # Protect names starting with `-'.
-  case $src in
-    -*) src=./$src;;
-  esac
-
-  if test -n "$dir_arg"; then
-    dst=$src
-    dstdir=$dst
-    test -d "$dstdir"
-    dstdir_status=$?
-  else
-
-    # Waiting for this to be detected by the "$cpprog $src $dsttmp" command
-    # might cause directories to be created, which would be especially bad
-    # if $src (and thus $dsttmp) contains '*'.
-    if test ! -f "$src" && test ! -d "$src"; then
-      echo "$0: $src does not exist." >&2
-      exit 1
-    fi
-
-    if test -z "$dst_arg"; then
-      echo "$0: no destination specified." >&2
-      exit 1
-    fi
-
-    dst=$dst_arg
-    # Protect names starting with `-'.
-    case $dst in
-      -*) dst=./$dst;;
-    esac
-
-    # If destination is a directory, append the input filename; won't work
-    # if double slashes aren't ignored.
-    if test -d "$dst"; then
-      if test -n "$no_target_directory"; then
-	echo "$0: $dst_arg: Is a directory" >&2
-	exit 1
-      fi
-      dstdir=$dst
-      dst=$dstdir/`basename "$src"`
-      dstdir_status=0
-    else
-      # Prefer dirname, but fall back on a substitute if dirname fails.
-      dstdir=`
-	(dirname "$dst") 2>/dev/null ||
-	expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	     X"$dst" : 'X\(//\)[^/]' \| \
-	     X"$dst" : 'X\(//\)$' \| \
-	     X"$dst" : 'X\(/\)' \| . 2>/dev/null ||
-	echo X"$dst" |
-	    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-		   s//\1/
-		   q
-		 }
-		 /^X\(\/\/\)[^/].*/{
-		   s//\1/
-		   q
-		 }
-		 /^X\(\/\/\)$/{
-		   s//\1/
-		   q
-		 }
-		 /^X\(\/\).*/{
-		   s//\1/
-		   q
-		 }
-		 s/.*/./; q'
-      `
-
-      test -d "$dstdir"
-      dstdir_status=$?
-    fi
-  fi
-
-  obsolete_mkdir_used=false
-
-  if test $dstdir_status != 0; then
-    case $posix_mkdir in
-      '')
-	# Create intermediate dirs using mode 755 as modified by the umask.
-	# This is like FreeBSD 'install' as of 1997-10-28.
-	umask=`umask`
-	case $stripcmd.$umask in
-	  # Optimize common cases.
-	  *[2367][2367]) mkdir_umask=$umask;;
-	  .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
-
-	  *[0-7])
-	    mkdir_umask=`expr $umask + 22 \
-	      - $umask % 100 % 40 + $umask % 20 \
-	      - $umask % 10 % 4 + $umask % 2
-	    `;;
-	  *) mkdir_umask=$umask,go-w;;
-	esac
-
-	# With -d, create the new directory with the user-specified mode.
-	# Otherwise, rely on $mkdir_umask.
-	if test -n "$dir_arg"; then
-	  mkdir_mode=-m$mode
-	else
-	  mkdir_mode=
-	fi
-
-	posix_mkdir=false
-	case $umask in
-	  *[123567][0-7][0-7])
-	    # POSIX mkdir -p sets u+wx bits regardless of umask, which
-	    # is incompatible with FreeBSD 'install' when (umask & 300) != 0.
-	    ;;
-	  *)
-	    tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
-	    trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
-
-	    if (umask $mkdir_umask &&
-		exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
-	    then
-	      if test -z "$dir_arg" || {
-		   # Check for POSIX incompatibilities with -m.
-		   # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
-		   # other-writeable bit of parent directory when it shouldn't.
-		   # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
-		   ls_ld_tmpdir=`ls -ld "$tmpdir"`
-		   case $ls_ld_tmpdir in
-		     d????-?r-*) different_mode=700;;
-		     d????-?--*) different_mode=755;;
-		     *) false;;
-		   esac &&
-		   $mkdirprog -m$different_mode -p -- "$tmpdir" && {
-		     ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
-		     test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
-		   }
-		 }
-	      then posix_mkdir=:
-	      fi
-	      rmdir "$tmpdir/d" "$tmpdir"
-	    else
-	      # Remove any dirs left behind by ancient mkdir implementations.
-	      rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
-	    fi
-	    trap '' 0;;
-	esac;;
-    esac
-
-    if
-      $posix_mkdir && (
-	umask $mkdir_umask &&
-	$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
-      )
-    then :
-    else
-
-      # The umask is ridiculous, or mkdir does not conform to POSIX,
-      # or it failed possibly due to a race condition.  Create the
-      # directory the slow way, step by step, checking for races as we go.
-
-      case $dstdir in
-	/*) prefix='/';;
-	-*) prefix='./';;
-	*)  prefix='';;
-      esac
-
-      eval "$initialize_posix_glob"
-
-      oIFS=$IFS
-      IFS=/
-      $posix_glob set -f
-      set fnord $dstdir
-      shift
-      $posix_glob set +f
-      IFS=$oIFS
-
-      prefixes=
-
-      for d
-      do
-	test -z "$d" && continue
-
-	prefix=$prefix$d
-	if test -d "$prefix"; then
-	  prefixes=
-	else
-	  if $posix_mkdir; then
-	    (umask=$mkdir_umask &&
-	     $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
-	    # Don't fail if two instances are running concurrently.
-	    test -d "$prefix" || exit 1
-	  else
-	    case $prefix in
-	      *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
-	      *) qprefix=$prefix;;
-	    esac
-	    prefixes="$prefixes '$qprefix'"
-	  fi
-	fi
-	prefix=$prefix/
-      done
-
-      if test -n "$prefixes"; then
-	# Don't fail if two instances are running concurrently.
-	(umask $mkdir_umask &&
-	 eval "\$doit_exec \$mkdirprog $prefixes") ||
-	  test -d "$dstdir" || exit 1
-	obsolete_mkdir_used=true
-      fi
-    fi
-  fi
-
-  if test -n "$dir_arg"; then
-    { test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&
-    { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&
-    { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||
-      test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1
-  else
-
-    # Make a couple of temp file names in the proper directory.
-    dsttmp=$dstdir/_inst.$$_
-    rmtmp=$dstdir/_rm.$$_
-
-    # Trap to clean up those temp files at exit.
-    trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
-
-    # Copy the file name to the temp name.
-    (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
-
-    # and set any options; do chmod last to preserve setuid bits.
-    #
-    # If any of these fail, we abort the whole thing.  If we want to
-    # ignore errors from any of these, just make sure not to ignore
-    # errors from the above "$doit $cpprog $src $dsttmp" command.
-    #
-    { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } &&
-    { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } &&
-    { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } &&
-    { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
-
-    # If -C, don't bother to copy if it wouldn't change the file.
-    if $copy_on_change &&
-       old=`LC_ALL=C ls -dlL "$dst"	2>/dev/null` &&
-       new=`LC_ALL=C ls -dlL "$dsttmp"	2>/dev/null` &&
-
-       eval "$initialize_posix_glob" &&
-       $posix_glob set -f &&
-       set X $old && old=:$2:$4:$5:$6 &&
-       set X $new && new=:$2:$4:$5:$6 &&
-       $posix_glob set +f &&
-
-       test "$old" = "$new" &&
-       $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
-    then
-      rm -f "$dsttmp"
-    else
-      # Rename the file to the real destination.
-      $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||
-
-      # The rename failed, perhaps because mv can't rename something else
-      # to itself, or perhaps because mv is so ancient that it does not
-      # support -f.
-      {
-	# Now remove or move aside any old file at destination location.
-	# We try this two ways since rm can't unlink itself on some
-	# systems and the destination file might be busy for other
-	# reasons.  In this case, the final cleanup might fail but the new
-	# file should still install successfully.
-	{
-	  test ! -f "$dst" ||
-	  $doit $rmcmd -f "$dst" 2>/dev/null ||
-	  { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
-	    { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
-	  } ||
-	  { echo "$0: cannot unlink or rename $dst" >&2
-	    (exit 1); exit 1
-	  }
-	} &&
-
-	# Now rename the file to the real destination.
-	$doit $mvcmd "$dsttmp" "$dst"
-      }
-    fi || exit 1
-
-    trap '' 0
-  fi
-done
-
-# Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "scriptversion="
-# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-time-zone: "UTC"
-# time-stamp-end: "; # UTC"
-# End:
diff --git a/ltmain.sh b/ltmain.sh
deleted file mode 100755
index d88da2c..0000000
--- a/ltmain.sh
+++ /dev/null
@@ -1,8413 +0,0 @@
-# Generated from ltmain.m4sh.
-
-# ltmain.sh (GNU libtool) 2.2.6b
-# Written by Gordon Matzigkeit <gord at gnu.ai.mit.edu>, 1996
-
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007 2008 Free Software Foundation, Inc.
-# This is free software; see the source for copying conditions.  There is NO
-# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-
-# GNU Libtool is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# As a special exception to the GNU General Public License,
-# if you distribute this file as part of a program or library that
-# is built using GNU Libtool, you may include this file under the
-# same distribution terms that you use for the rest of that program.
-#
-# GNU Libtool is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GNU Libtool; see the file COPYING.  If not, a copy
-# can be downloaded from http://www.gnu.org/licenses/gpl.html,
-# or obtained by writing to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-
-# Usage: $progname [OPTION]... [MODE-ARG]...
-#
-# Provide generalized library-building support services.
-#
-#     --config             show all configuration variables
-#     --debug              enable verbose shell tracing
-# -n, --dry-run            display commands without modifying any files
-#     --features           display basic configuration information and exit
-#     --mode=MODE          use operation mode MODE
-#     --preserve-dup-deps  don't remove duplicate dependency libraries
-#     --quiet, --silent    don't print informational messages
-#     --tag=TAG            use configuration variables from tag TAG
-# -v, --verbose            print informational messages (default)
-#     --version            print version information
-# -h, --help               print short or long help message
-#
-# MODE must be one of the following:
-#
-#       clean              remove files from the build directory
-#       compile            compile a source file into a libtool object
-#       execute            automatically set library path, then run a program
-#       finish             complete the installation of libtool libraries
-#       install            install libraries or executables
-#       link               create a library or an executable
-#       uninstall          remove libraries from an installed directory
-#
-# MODE-ARGS vary depending on the MODE.
-# Try `$progname --help --mode=MODE' for a more detailed description of MODE.
-#
-# When reporting a bug, please describe a test case to reproduce it and
-# include the following information:
-#
-#       host-triplet:	$host
-#       shell:		$SHELL
-#       compiler:		$LTCC
-#       compiler flags:		$LTCFLAGS
-#       linker:		$LD (gnu? $with_gnu_ld)
-#       $progname:		(GNU libtool) 2.2.6b Debian-2.2.6b-2
-#       automake:		$automake_version
-#       autoconf:		$autoconf_version
-#
-# Report bugs to <bug-libtool at gnu.org>.
-
-PROGRAM=ltmain.sh
-PACKAGE=libtool
-VERSION="2.2.6b Debian-2.2.6b-2"
-TIMESTAMP=""
-package_revision=1.3017
-
-# Be Bourne compatible
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
-  emulate sh
-  NULLCMD=:
-  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
-  # is contrary to our usage.  Disable this feature.
-  alias -g '${1+"$@"}'='"$@"'
-  setopt NO_GLOB_SUBST
-else
-  case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
-fi
-BIN_SH=xpg4; export BIN_SH # for Tru64
-DUALCASE=1; export DUALCASE # for MKS sh
-
-# NLS nuisances: We save the old values to restore during execute mode.
-# Only set LANG and LC_ALL to C if already set.
-# These must not be set unconditionally because not all systems understand
-# e.g. LANG=C (notably SCO).
-lt_user_locale=
-lt_safe_locale=
-for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
-do
-  eval "if test \"\${$lt_var+set}\" = set; then
-          save_$lt_var=\$$lt_var
-          $lt_var=C
-	  export $lt_var
-	  lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\"
-	  lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\"
-	fi"
-done
-
-$lt_unset CDPATH
-
-
-
-
-
-: ${CP="cp -f"}
-: ${ECHO="echo"}
-: ${EGREP="/bin/grep -E"}
-: ${FGREP="/bin/grep -F"}
-: ${GREP="/bin/grep"}
-: ${LN_S="ln -s"}
-: ${MAKE="make"}
-: ${MKDIR="mkdir"}
-: ${MV="mv -f"}
-: ${RM="rm -f"}
-: ${SED="/bin/sed"}
-: ${SHELL="${CONFIG_SHELL-/bin/sh}"}
-: ${Xsed="$SED -e 1s/^X//"}
-
-# Global variables:
-EXIT_SUCCESS=0
-EXIT_FAILURE=1
-EXIT_MISMATCH=63  # $? = 63 is used to indicate version mismatch to missing.
-EXIT_SKIP=77	  # $? = 77 is used to indicate a skipped test to automake.
-
-exit_status=$EXIT_SUCCESS
-
-# Make sure IFS has a sensible default
-lt_nl='
-'
-IFS=" 	$lt_nl"
-
-dirname="s,/[^/]*$,,"
-basename="s,^.*/,,"
-
-# func_dirname_and_basename file append nondir_replacement
-# perform func_basename and func_dirname in a single function
-# call:
-#   dirname:  Compute the dirname of FILE.  If nonempty,
-#             add APPEND to the result, otherwise set result
-#             to NONDIR_REPLACEMENT.
-#             value returned in "$func_dirname_result"
-#   basename: Compute filename of FILE.
-#             value retuned in "$func_basename_result"
-# Implementation must be kept synchronized with func_dirname
-# and func_basename. For efficiency, we do not delegate to
-# those functions but instead duplicate the functionality here.
-func_dirname_and_basename ()
-{
-  # Extract subdirectory from the argument.
-  func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"`
-  if test "X$func_dirname_result" = "X${1}"; then
-    func_dirname_result="${3}"
-  else
-    func_dirname_result="$func_dirname_result${2}"
-  fi
-  func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"`
-}
-
-# Generated shell functions inserted here.
-
-# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
-# is ksh but when the shell is invoked as "sh" and the current value of
-# the _XPG environment variable is not equal to 1 (one), the special
-# positional parameter $0, within a function call, is the name of the
-# function.
-progpath="$0"
-
-# The name of this program:
-# In the unlikely event $progname began with a '-', it would play havoc with
-# func_echo (imagine progname=-n), so we prepend ./ in that case:
-func_dirname_and_basename "$progpath"
-progname=$func_basename_result
-case $progname in
-  -*) progname=./$progname ;;
-esac
-
-# Make sure we have an absolute path for reexecution:
-case $progpath in
-  [\\/]*|[A-Za-z]:\\*) ;;
-  *[\\/]*)
-     progdir=$func_dirname_result
-     progdir=`cd "$progdir" && pwd`
-     progpath="$progdir/$progname"
-     ;;
-  *)
-     save_IFS="$IFS"
-     IFS=:
-     for progdir in $PATH; do
-       IFS="$save_IFS"
-       test -x "$progdir/$progname" && break
-     done
-     IFS="$save_IFS"
-     test -n "$progdir" || progdir=`pwd`
-     progpath="$progdir/$progname"
-     ;;
-esac
-
-# Sed substitution that helps us do robust quoting.  It backslashifies
-# metacharacters that are still active within double-quoted strings.
-Xsed="${SED}"' -e 1s/^X//'
-sed_quote_subst='s/\([`"$\\]\)/\\\1/g'
-
-# Same as above, but do not quote variable references.
-double_quote_subst='s/\(["`\\]\)/\\\1/g'
-
-# Re-`\' parameter expansions in output of double_quote_subst that were
-# `\'-ed in input to the same.  If an odd number of `\' preceded a '$'
-# in input to double_quote_subst, that '$' was protected from expansion.
-# Since each input `\' is now two `\'s, look for any number of runs of
-# four `\'s followed by two `\'s and then a '$'.  `\' that '$'.
-bs='\\'
-bs2='\\\\'
-bs4='\\\\\\\\'
-dollar='\$'
-sed_double_backslash="\
-  s/$bs4/&\\
-/g
-  s/^$bs2$dollar/$bs&/
-  s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g
-  s/\n//g"
-
-# Standard options:
-opt_dry_run=false
-opt_help=false
-opt_quiet=false
-opt_verbose=false
-opt_warning=:
-
-# func_echo arg...
-# Echo program name prefixed message, along with the current mode
-# name if it has been set yet.
-func_echo ()
-{
-    $ECHO "$progname${mode+: }$mode: $*"
-}
-
-# func_verbose arg...
-# Echo program name prefixed message in verbose mode only.
-func_verbose ()
-{
-    $opt_verbose && func_echo ${1+"$@"}
-
-    # A bug in bash halts the script if the last line of a function
-    # fails when set -e is in force, so we need another command to
-    # work around that:
-    :
-}
-
-# func_error arg...
-# Echo program name prefixed message to standard error.
-func_error ()
-{
-    $ECHO "$progname${mode+: }$mode: "${1+"$@"} 1>&2
-}
-
-# func_warning arg...
-# Echo program name prefixed warning message to standard error.
-func_warning ()
-{
-    $opt_warning && $ECHO "$progname${mode+: }$mode: warning: "${1+"$@"} 1>&2
-
-    # bash bug again:
-    :
-}
-
-# func_fatal_error arg...
-# Echo program name prefixed message to standard error, and exit.
-func_fatal_error ()
-{
-    func_error ${1+"$@"}
-    exit $EXIT_FAILURE
-}
-
-# func_fatal_help arg...
-# Echo program name prefixed message to standard error, followed by
-# a help hint, and exit.
-func_fatal_help ()
-{
-    func_error ${1+"$@"}
-    func_fatal_error "$help"
-}
-help="Try \`$progname --help' for more information."  ## default
-
-
-# func_grep expression filename
-# Check whether EXPRESSION matches any line of FILENAME, without output.
-func_grep ()
-{
-    $GREP "$1" "$2" >/dev/null 2>&1
-}
-
-
-# func_mkdir_p directory-path
-# Make sure the entire path to DIRECTORY-PATH is available.
-func_mkdir_p ()
-{
-    my_directory_path="$1"
-    my_dir_list=
-
-    if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then
-
-      # Protect directory names starting with `-'
-      case $my_directory_path in
-        -*) my_directory_path="./$my_directory_path" ;;
-      esac
-
-      # While some portion of DIR does not yet exist...
-      while test ! -d "$my_directory_path"; do
-        # ...make a list in topmost first order.  Use a colon delimited
-	# list incase some portion of path contains whitespace.
-        my_dir_list="$my_directory_path:$my_dir_list"
-
-        # If the last portion added has no slash in it, the list is done
-        case $my_directory_path in */*) ;; *) break ;; esac
-
-        # ...otherwise throw away the child directory and loop
-        my_directory_path=`$ECHO "X$my_directory_path" | $Xsed -e "$dirname"`
-      done
-      my_dir_list=`$ECHO "X$my_dir_list" | $Xsed -e 's,:*$,,'`
-
-      save_mkdir_p_IFS="$IFS"; IFS=':'
-      for my_dir in $my_dir_list; do
-	IFS="$save_mkdir_p_IFS"
-        # mkdir can fail with a `File exist' error if two processes
-        # try to create one of the directories concurrently.  Don't
-        # stop in that case!
-        $MKDIR "$my_dir" 2>/dev/null || :
-      done
-      IFS="$save_mkdir_p_IFS"
-
-      # Bail out if we (or some other process) failed to create a directory.
-      test -d "$my_directory_path" || \
-        func_fatal_error "Failed to create \`$1'"
-    fi
-}
-
-
-# func_mktempdir [string]
-# Make a temporary directory that won't clash with other running
-# libtool processes, and avoids race conditions if possible.  If
-# given, STRING is the basename for that directory.
-func_mktempdir ()
-{
-    my_template="${TMPDIR-/tmp}/${1-$progname}"
-
-    if test "$opt_dry_run" = ":"; then
-      # Return a directory name, but don't create it in dry-run mode
-      my_tmpdir="${my_template}-$$"
-    else
-
-      # If mktemp works, use that first and foremost
-      my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null`
-
-      if test ! -d "$my_tmpdir"; then
-        # Failing that, at least try and use $RANDOM to avoid a race
-        my_tmpdir="${my_template}-${RANDOM-0}$$"
-
-        save_mktempdir_umask=`umask`
-        umask 0077
-        $MKDIR "$my_tmpdir"
-        umask $save_mktempdir_umask
-      fi
-
-      # If we're not in dry-run mode, bomb out on failure
-      test -d "$my_tmpdir" || \
-        func_fatal_error "cannot create temporary directory \`$my_tmpdir'"
-    fi
-
-    $ECHO "X$my_tmpdir" | $Xsed
-}
-
-
-# func_quote_for_eval arg
-# Aesthetically quote ARG to be evaled later.
-# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT
-# is double-quoted, suitable for a subsequent eval, whereas
-# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters
-# which are still active within double quotes backslashified.
-func_quote_for_eval ()
-{
-    case $1 in
-      *[\\\`\"\$]*)
-	func_quote_for_eval_unquoted_result=`$ECHO "X$1" | $Xsed -e "$sed_quote_subst"` ;;
-      *)
-        func_quote_for_eval_unquoted_result="$1" ;;
-    esac
-
-    case $func_quote_for_eval_unquoted_result in
-      # Double-quote args containing shell metacharacters to delay
-      # word splitting, command substitution and and variable
-      # expansion for a subsequent eval.
-      # Many Bourne shells cannot handle close brackets correctly
-      # in scan sets, so we specify it separately.
-      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
-        func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\""
-        ;;
-      *)
-        func_quote_for_eval_result="$func_quote_for_eval_unquoted_result"
-    esac
-}
-
-
-# func_quote_for_expand arg
-# Aesthetically quote ARG to be evaled later; same as above,
-# but do not quote variable references.
-func_quote_for_expand ()
-{
-    case $1 in
-      *[\\\`\"]*)
-	my_arg=`$ECHO "X$1" | $Xsed \
-	    -e "$double_quote_subst" -e "$sed_double_backslash"` ;;
-      *)
-        my_arg="$1" ;;
-    esac
-
-    case $my_arg in
-      # Double-quote args containing shell metacharacters to delay
-      # word splitting and command substitution for a subsequent eval.
-      # Many Bourne shells cannot handle close brackets correctly
-      # in scan sets, so we specify it separately.
-      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
-        my_arg="\"$my_arg\""
-        ;;
-    esac
-
-    func_quote_for_expand_result="$my_arg"
-}
-
-
-# func_show_eval cmd [fail_exp]
-# Unless opt_silent is true, then output CMD.  Then, if opt_dryrun is
-# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
-# is given, then evaluate it.
-func_show_eval ()
-{
-    my_cmd="$1"
-    my_fail_exp="${2-:}"
-
-    ${opt_silent-false} || {
-      func_quote_for_expand "$my_cmd"
-      eval "func_echo $func_quote_for_expand_result"
-    }
-
-    if ${opt_dry_run-false}; then :; else
-      eval "$my_cmd"
-      my_status=$?
-      if test "$my_status" -eq 0; then :; else
-	eval "(exit $my_status); $my_fail_exp"
-      fi
-    fi
-}
-
-
-# func_show_eval_locale cmd [fail_exp]
-# Unless opt_silent is true, then output CMD.  Then, if opt_dryrun is
-# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
-# is given, then evaluate it.  Use the saved locale for evaluation.
-func_show_eval_locale ()
-{
-    my_cmd="$1"
-    my_fail_exp="${2-:}"
-
-    ${opt_silent-false} || {
-      func_quote_for_expand "$my_cmd"
-      eval "func_echo $func_quote_for_expand_result"
-    }
-
-    if ${opt_dry_run-false}; then :; else
-      eval "$lt_user_locale
-	    $my_cmd"
-      my_status=$?
-      eval "$lt_safe_locale"
-      if test "$my_status" -eq 0; then :; else
-	eval "(exit $my_status); $my_fail_exp"
-      fi
-    fi
-}
-
-
-
-
-
-# func_version
-# Echo version message to standard output and exit.
-func_version ()
-{
-    $SED -n '/^# '$PROGRAM' (GNU /,/# warranty; / {
-        s/^# //
-	s/^# *$//
-        s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/
-        p
-     }' < "$progpath"
-     exit $?
-}
-
-# func_usage
-# Echo short help message to standard output and exit.
-func_usage ()
-{
-    $SED -n '/^# Usage:/,/# -h/ {
-        s/^# //
-	s/^# *$//
-	s/\$progname/'$progname'/
-	p
-    }' < "$progpath"
-    $ECHO
-    $ECHO "run \`$progname --help | more' for full usage"
-    exit $?
-}
-
-# func_help
-# Echo long help message to standard output and exit.
-func_help ()
-{
-    $SED -n '/^# Usage:/,/# Report bugs to/ {
-        s/^# //
-	s/^# *$//
-	s*\$progname*'$progname'*
-	s*\$host*'"$host"'*
-	s*\$SHELL*'"$SHELL"'*
-	s*\$LTCC*'"$LTCC"'*
-	s*\$LTCFLAGS*'"$LTCFLAGS"'*
-	s*\$LD*'"$LD"'*
-	s/\$with_gnu_ld/'"$with_gnu_ld"'/
-	s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/
-	s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/
-	p
-     }' < "$progpath"
-    exit $?
-}
-
-# func_missing_arg argname
-# Echo program name prefixed message to standard error and set global
-# exit_cmd.
-func_missing_arg ()
-{
-    func_error "missing argument for $1"
-    exit_cmd=exit
-}
-
-exit_cmd=:
-
-
-
-
-
-# Check that we have a working $ECHO.
-if test "X$1" = X--no-reexec; then
-  # Discard the --no-reexec flag, and continue.
-  shift
-elif test "X$1" = X--fallback-echo; then
-  # Avoid inline document here, it may be left over
-  :
-elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t'; then
-  # Yippee, $ECHO works!
-  :
-else
-  # Restart under the correct shell, and then maybe $ECHO will work.
-  exec $SHELL "$progpath" --no-reexec ${1+"$@"}
-fi
-
-if test "X$1" = X--fallback-echo; then
-  # used as fallback echo
-  shift
-  cat <<EOF
-$*
-EOF
-  exit $EXIT_SUCCESS
-fi
-
-magic="%%%MAGIC variable%%%"
-magic_exe="%%%MAGIC EXE variable%%%"
-
-# Global variables.
-# $mode is unset
-nonopt=
-execute_dlfiles=
-preserve_args=
-lo2o="s/\\.lo\$/.${objext}/"
-o2lo="s/\\.${objext}\$/.lo/"
-extracted_archives=
-extracted_serial=0
-
-opt_dry_run=false
-opt_duplicate_deps=false
-opt_silent=false
-opt_debug=:
-
-# If this variable is set in any of the actions, the command in it
-# will be execed at the end.  This prevents here-documents from being
-# left over by shells.
-exec_cmd=
-
-# func_fatal_configuration arg...
-# Echo program name prefixed message to standard error, followed by
-# a configuration failure hint, and exit.
-func_fatal_configuration ()
-{
-    func_error ${1+"$@"}
-    func_error "See the $PACKAGE documentation for more information."
-    func_fatal_error "Fatal configuration error."
-}
-
-
-# func_config
-# Display the configuration for all the tags in this script.
-func_config ()
-{
-    re_begincf='^# ### BEGIN LIBTOOL'
-    re_endcf='^# ### END LIBTOOL'
-
-    # Default configuration.
-    $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath"
-
-    # Now print the configurations for the tags.
-    for tagname in $taglist; do
-      $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath"
-    done
-
-    exit $?
-}
-
-# func_features
-# Display the features supported by this script.
-func_features ()
-{
-    $ECHO "host: $host"
-    if test "$build_libtool_libs" = yes; then
-      $ECHO "enable shared libraries"
-    else
-      $ECHO "disable shared libraries"
-    fi
-    if test "$build_old_libs" = yes; then
-      $ECHO "enable static libraries"
-    else
-      $ECHO "disable static libraries"
-    fi
-
-    exit $?
-}
-
-# func_enable_tag tagname
-# Verify that TAGNAME is valid, and either flag an error and exit, or
-# enable the TAGNAME tag.  We also add TAGNAME to the global $taglist
-# variable here.
-func_enable_tag ()
-{
-  # Global variable:
-  tagname="$1"
-
-  re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$"
-  re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$"
-  sed_extractcf="/$re_begincf/,/$re_endcf/p"
-
-  # Validate tagname.
-  case $tagname in
-    *[!-_A-Za-z0-9,/]*)
-      func_fatal_error "invalid tag name: $tagname"
-      ;;
-  esac
-
-  # Don't test for the "default" C tag, as we know it's
-  # there but not specially marked.
-  case $tagname in
-    CC) ;;
-    *)
-      if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then
-	taglist="$taglist $tagname"
-
-	# Evaluate the configuration.  Be careful to quote the path
-	# and the sed script, to avoid splitting on whitespace, but
-	# also don't use non-portable quotes within backquotes within
-	# quotes we have to do it in 2 steps:
-	extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"`
-	eval "$extractedcf"
-      else
-	func_error "ignoring unknown tag $tagname"
-      fi
-      ;;
-  esac
-}
-
-# Parse options once, thoroughly.  This comes as soon as possible in
-# the script to make things like `libtool --version' happen quickly.
-{
-
-  # Shorthand for --mode=foo, only valid as the first argument
-  case $1 in
-  clean|clea|cle|cl)
-    shift; set dummy --mode clean ${1+"$@"}; shift
-    ;;
-  compile|compil|compi|comp|com|co|c)
-    shift; set dummy --mode compile ${1+"$@"}; shift
-    ;;
-  execute|execut|execu|exec|exe|ex|e)
-    shift; set dummy --mode execute ${1+"$@"}; shift
-    ;;
-  finish|finis|fini|fin|fi|f)
-    shift; set dummy --mode finish ${1+"$@"}; shift
-    ;;
-  install|instal|insta|inst|ins|in|i)
-    shift; set dummy --mode install ${1+"$@"}; shift
-    ;;
-  link|lin|li|l)
-    shift; set dummy --mode link ${1+"$@"}; shift
-    ;;
-  uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
-    shift; set dummy --mode uninstall ${1+"$@"}; shift
-    ;;
-  esac
-
-  # Parse non-mode specific arguments:
-  while test "$#" -gt 0; do
-    opt="$1"
-    shift
-
-    case $opt in
-      --config)		func_config					;;
-
-      --debug)		preserve_args="$preserve_args $opt"
-			func_echo "enabling shell trace mode"
-			opt_debug='set -x'
-			$opt_debug
-			;;
-
-      -dlopen)		test "$#" -eq 0 && func_missing_arg "$opt" && break
-			execute_dlfiles="$execute_dlfiles $1"
-			shift
-			;;
-
-      --dry-run | -n)	opt_dry_run=:					;;
-      --features)       func_features					;;
-      --finish)		mode="finish"					;;
-
-      --mode)		test "$#" -eq 0 && func_missing_arg "$opt" && break
-			case $1 in
-			  # Valid mode arguments:
-			  clean)	;;
-			  compile)	;;
-			  execute)	;;
-			  finish)	;;
-			  install)	;;
-			  link)		;;
-			  relink)	;;
-			  uninstall)	;;
-
-			  # Catch anything else as an error
-			  *) func_error "invalid argument for $opt"
-			     exit_cmd=exit
-			     break
-			     ;;
-		        esac
-
-			mode="$1"
-			shift
-			;;
-
-      --preserve-dup-deps)
-			opt_duplicate_deps=:				;;
-
-      --quiet|--silent)	preserve_args="$preserve_args $opt"
-			opt_silent=:
-			;;
-
-      --verbose| -v)	preserve_args="$preserve_args $opt"
-			opt_silent=false
-			;;
-
-      --tag)		test "$#" -eq 0 && func_missing_arg "$opt" && break
-			preserve_args="$preserve_args $opt $1"
-			func_enable_tag "$1"	# tagname is set here
-			shift
-			;;
-
-      # Separate optargs to long options:
-      -dlopen=*|--mode=*|--tag=*)
-			func_opt_split "$opt"
-			set dummy "$func_opt_split_opt" "$func_opt_split_arg" ${1+"$@"}
-			shift
-			;;
-
-      -\?|-h)		func_usage					;;
-      --help)		opt_help=:					;;
-      --version)	func_version					;;
-
-      -*)		func_fatal_help "unrecognized option \`$opt'"	;;
-
-      *)		nonopt="$opt"
-			break
-			;;
-    esac
-  done
-
-
-  case $host in
-    *cygwin* | *mingw* | *pw32* | *cegcc*)
-      # don't eliminate duplications in $postdeps and $predeps
-      opt_duplicate_compiler_generated_deps=:
-      ;;
-    *)
-      opt_duplicate_compiler_generated_deps=$opt_duplicate_deps
-      ;;
-  esac
-
-  # Having warned about all mis-specified options, bail out if
-  # anything was wrong.
-  $exit_cmd $EXIT_FAILURE
-}
-
-# func_check_version_match
-# Ensure that we are using m4 macros, and libtool script from the same
-# release of libtool.
-func_check_version_match ()
-{
-  if test "$package_revision" != "$macro_revision"; then
-    if test "$VERSION" != "$macro_version"; then
-      if test -z "$macro_version"; then
-        cat >&2 <<_LT_EOF
-$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
-$progname: definition of this LT_INIT comes from an older release.
-$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
-$progname: and run autoconf again.
-_LT_EOF
-      else
-        cat >&2 <<_LT_EOF
-$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
-$progname: definition of this LT_INIT comes from $PACKAGE $macro_version.
-$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
-$progname: and run autoconf again.
-_LT_EOF
-      fi
-    else
-      cat >&2 <<_LT_EOF
-$progname: Version mismatch error.  This is $PACKAGE $VERSION, revision $package_revision,
-$progname: but the definition of this LT_INIT comes from revision $macro_revision.
-$progname: You should recreate aclocal.m4 with macros from revision $package_revision
-$progname: of $PACKAGE $VERSION and run autoconf again.
-_LT_EOF
-    fi
-
-    exit $EXIT_MISMATCH
-  fi
-}
-
-
-## ----------- ##
-##    Main.    ##
-## ----------- ##
-
-$opt_help || {
-  # Sanity checks first:
-  func_check_version_match
-
-  if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
-    func_fatal_configuration "not configured to build any kind of library"
-  fi
-
-  test -z "$mode" && func_fatal_error "error: you must specify a MODE."
-
-
-  # Darwin sucks
-  eval std_shrext=\"$shrext_cmds\"
-
-
-  # Only execute mode is allowed to have -dlopen flags.
-  if test -n "$execute_dlfiles" && test "$mode" != execute; then
-    func_error "unrecognized option \`-dlopen'"
-    $ECHO "$help" 1>&2
-    exit $EXIT_FAILURE
-  fi
-
-  # Change the help message to a mode-specific one.
-  generic_help="$help"
-  help="Try \`$progname --help --mode=$mode' for more information."
-}
-
-
-# func_lalib_p file
-# True iff FILE is a libtool `.la' library or `.lo' object file.
-# This function is only a basic sanity check; it will hardly flush out
-# determined imposters.
-func_lalib_p ()
-{
-    test -f "$1" &&
-      $SED -e 4q "$1" 2>/dev/null \
-        | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1
-}
-
-# func_lalib_unsafe_p file
-# True iff FILE is a libtool `.la' library or `.lo' object file.
-# This function implements the same check as func_lalib_p without
-# resorting to external programs.  To this end, it redirects stdin and
-# closes it afterwards, without saving the original file descriptor.
-# As a safety measure, use it only where a negative result would be
-# fatal anyway.  Works if `file' does not exist.
-func_lalib_unsafe_p ()
-{
-    lalib_p=no
-    if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then
-	for lalib_p_l in 1 2 3 4
-	do
-	    read lalib_p_line
-	    case "$lalib_p_line" in
-		\#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;;
-	    esac
-	done
-	exec 0<&5 5<&-
-    fi
-    test "$lalib_p" = yes
-}
-
-# func_ltwrapper_script_p file
-# True iff FILE is a libtool wrapper script
-# This function is only a basic sanity check; it will hardly flush out
-# determined imposters.
-func_ltwrapper_script_p ()
-{
-    func_lalib_p "$1"
-}
-
-# func_ltwrapper_executable_p file
-# True iff FILE is a libtool wrapper executable
-# This function is only a basic sanity check; it will hardly flush out
-# determined imposters.
-func_ltwrapper_executable_p ()
-{
-    func_ltwrapper_exec_suffix=
-    case $1 in
-    *.exe) ;;
-    *) func_ltwrapper_exec_suffix=.exe ;;
-    esac
-    $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1
-}
-
-# func_ltwrapper_scriptname file
-# Assumes file is an ltwrapper_executable
-# uses $file to determine the appropriate filename for a
-# temporary ltwrapper_script.
-func_ltwrapper_scriptname ()
-{
-    func_ltwrapper_scriptname_result=""
-    if func_ltwrapper_executable_p "$1"; then
-	func_dirname_and_basename "$1" "" "."
-	func_stripname '' '.exe' "$func_basename_result"
-	func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper"
-    fi
-}
-
-# func_ltwrapper_p file
-# True iff FILE is a libtool wrapper script or wrapper executable
-# This function is only a basic sanity check; it will hardly flush out
-# determined imposters.
-func_ltwrapper_p ()
-{
-    func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1"
-}
-
-
-# func_execute_cmds commands fail_cmd
-# Execute tilde-delimited COMMANDS.
-# If FAIL_CMD is given, eval that upon failure.
-# FAIL_CMD may read-access the current command in variable CMD!
-func_execute_cmds ()
-{
-    $opt_debug
-    save_ifs=$IFS; IFS='~'
-    for cmd in $1; do
-      IFS=$save_ifs
-      eval cmd=\"$cmd\"
-      func_show_eval "$cmd" "${2-:}"
-    done
-    IFS=$save_ifs
-}
-
-
-# func_source file
-# Source FILE, adding directory component if necessary.
-# Note that it is not necessary on cygwin/mingw to append a dot to
-# FILE even if both FILE and FILE.exe exist: automatic-append-.exe
-# behavior happens only for exec(3), not for open(2)!  Also, sourcing
-# `FILE.' does not work on cygwin managed mounts.
-func_source ()
-{
-    $opt_debug
-    case $1 in
-    */* | *\\*)	. "$1" ;;
-    *)		. "./$1" ;;
-    esac
-}
-
-
-# func_infer_tag arg
-# Infer tagged configuration to use if any are available and
-# if one wasn't chosen via the "--tag" command line option.
-# Only attempt this if the compiler in the base compile
-# command doesn't match the default compiler.
-# arg is usually of the form 'gcc ...'
-func_infer_tag ()
-{
-    $opt_debug
-    if test -n "$available_tags" && test -z "$tagname"; then
-      CC_quoted=
-      for arg in $CC; do
-        func_quote_for_eval "$arg"
-	CC_quoted="$CC_quoted $func_quote_for_eval_result"
-      done
-      case $@ in
-      # Blanks in the command may have been stripped by the calling shell,
-      # but not from the CC environment variable when configure was run.
-      " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) ;;
-      # Blanks at the start of $base_compile will cause this to fail
-      # if we don't check for them as well.
-      *)
-	for z in $available_tags; do
-	  if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
-	    # Evaluate the configuration.
-	    eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
-	    CC_quoted=
-	    for arg in $CC; do
-	      # Double-quote args containing other shell metacharacters.
-	      func_quote_for_eval "$arg"
-	      CC_quoted="$CC_quoted $func_quote_for_eval_result"
-	    done
-	    case "$@ " in
-	      " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*)
-	      # The compiler in the base compile command matches
-	      # the one in the tagged configuration.
-	      # Assume this is the tagged configuration we want.
-	      tagname=$z
-	      break
-	      ;;
-	    esac
-	  fi
-	done
-	# If $tagname still isn't set, then no tagged configuration
-	# was found and let the user know that the "--tag" command
-	# line option must be used.
-	if test -z "$tagname"; then
-	  func_echo "unable to infer tagged configuration"
-	  func_fatal_error "specify a tag with \`--tag'"
-#	else
-#	  func_verbose "using $tagname tagged configuration"
-	fi
-	;;
-      esac
-    fi
-}
-
-
-
-# func_write_libtool_object output_name pic_name nonpic_name
-# Create a libtool object file (analogous to a ".la" file),
-# but don't create it if we're doing a dry run.
-func_write_libtool_object ()
-{
-    write_libobj=${1}
-    if test "$build_libtool_libs" = yes; then
-      write_lobj=\'${2}\'
-    else
-      write_lobj=none
-    fi
-
-    if test "$build_old_libs" = yes; then
-      write_oldobj=\'${3}\'
-    else
-      write_oldobj=none
-    fi
-
-    $opt_dry_run || {
-      cat >${write_libobj}T <<EOF
-# $write_libobj - a libtool object file
-# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
-#
-# Please DO NOT delete this file!
-# It is necessary for linking the library.
-
-# Name of the PIC object.
-pic_object=$write_lobj
-
-# Name of the non-PIC object
-non_pic_object=$write_oldobj
-
-EOF
-      $MV "${write_libobj}T" "${write_libobj}"
-    }
-}
-
-# func_mode_compile arg...
-func_mode_compile ()
-{
-    $opt_debug
-    # Get the compilation command and the source file.
-    base_compile=
-    srcfile="$nonopt"  #  always keep a non-empty value in "srcfile"
-    suppress_opt=yes
-    suppress_output=
-    arg_mode=normal
-    libobj=
-    later=
-    pie_flag=
-
-    for arg
-    do
-      case $arg_mode in
-      arg  )
-	# do not "continue".  Instead, add this to base_compile
-	lastarg="$arg"
-	arg_mode=normal
-	;;
-
-      target )
-	libobj="$arg"
-	arg_mode=normal
-	continue
-	;;
-
-      normal )
-	# Accept any command-line options.
-	case $arg in
-	-o)
-	  test -n "$libobj" && \
-	    func_fatal_error "you cannot specify \`-o' more than once"
-	  arg_mode=target
-	  continue
-	  ;;
-
-	-pie | -fpie | -fPIE)
-          pie_flag="$pie_flag $arg"
-	  continue
-	  ;;
-
-	-shared | -static | -prefer-pic | -prefer-non-pic)
-	  later="$later $arg"
-	  continue
-	  ;;
-
-	-no-suppress)
-	  suppress_opt=no
-	  continue
-	  ;;
-
-	-Xcompiler)
-	  arg_mode=arg  #  the next one goes into the "base_compile" arg list
-	  continue      #  The current "srcfile" will either be retained or
-	  ;;            #  replaced later.  I would guess that would be a bug.
-
-	-Wc,*)
-	  func_stripname '-Wc,' '' "$arg"
-	  args=$func_stripname_result
-	  lastarg=
-	  save_ifs="$IFS"; IFS=','
-	  for arg in $args; do
-	    IFS="$save_ifs"
-	    func_quote_for_eval "$arg"
-	    lastarg="$lastarg $func_quote_for_eval_result"
-	  done
-	  IFS="$save_ifs"
-	  func_stripname ' ' '' "$lastarg"
-	  lastarg=$func_stripname_result
-
-	  # Add the arguments to base_compile.
-	  base_compile="$base_compile $lastarg"
-	  continue
-	  ;;
-
-	*)
-	  # Accept the current argument as the source file.
-	  # The previous "srcfile" becomes the current argument.
-	  #
-	  lastarg="$srcfile"
-	  srcfile="$arg"
-	  ;;
-	esac  #  case $arg
-	;;
-      esac    #  case $arg_mode
-
-      # Aesthetically quote the previous argument.
-      func_quote_for_eval "$lastarg"
-      base_compile="$base_compile $func_quote_for_eval_result"
-    done # for arg
-
-    case $arg_mode in
-    arg)
-      func_fatal_error "you must specify an argument for -Xcompile"
-      ;;
-    target)
-      func_fatal_error "you must specify a target with \`-o'"
-      ;;
-    *)
-      # Get the name of the library object.
-      test -z "$libobj" && {
-	func_basename "$srcfile"
-	libobj="$func_basename_result"
-      }
-      ;;
-    esac
-
-    # Recognize several different file suffixes.
-    # If the user specifies -o file.o, it is replaced with file.lo
-    case $libobj in
-    *.[cCFSifmso] | \
-    *.ada | *.adb | *.ads | *.asm | \
-    *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \
-    *.[fF][09]? | *.for | *.java | *.obj | *.sx)
-      func_xform "$libobj"
-      libobj=$func_xform_result
-      ;;
-    esac
-
-    case $libobj in
-    *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;;
-    *)
-      func_fatal_error "cannot determine name of library object from \`$libobj'"
-      ;;
-    esac
-
-    func_infer_tag $base_compile
-
-    for arg in $later; do
-      case $arg in
-      -shared)
-	test "$build_libtool_libs" != yes && \
-	  func_fatal_configuration "can not build a shared library"
-	build_old_libs=no
-	continue
-	;;
-
-      -static)
-	build_libtool_libs=no
-	build_old_libs=yes
-	continue
-	;;
-
-      -prefer-pic)
-	pic_mode=yes
-	continue
-	;;
-
-      -prefer-non-pic)
-	pic_mode=no
-	continue
-	;;
-      esac
-    done
-
-    func_quote_for_eval "$libobj"
-    test "X$libobj" != "X$func_quote_for_eval_result" \
-      && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"'	 &()|`$[]' \
-      && func_warning "libobj name \`$libobj' may not contain shell special characters."
-    func_dirname_and_basename "$obj" "/" ""
-    objname="$func_basename_result"
-    xdir="$func_dirname_result"
-    lobj=${xdir}$objdir/$objname
-
-    test -z "$base_compile" && \
-      func_fatal_help "you must specify a compilation command"
-
-    # Delete any leftover library objects.
-    if test "$build_old_libs" = yes; then
-      removelist="$obj $lobj $libobj ${libobj}T"
-    else
-      removelist="$lobj $libobj ${libobj}T"
-    fi
-
-    # On Cygwin there's no "real" PIC flag so we must build both object types
-    case $host_os in
-    cygwin* | mingw* | pw32* | os2* | cegcc*)
-      pic_mode=default
-      ;;
-    esac
-    if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then
-      # non-PIC code in shared libraries is not supported
-      pic_mode=default
-    fi
-
-    # Calculate the filename of the output object if compiler does
-    # not support -o with -c
-    if test "$compiler_c_o" = no; then
-      output_obj=`$ECHO "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext}
-      lockfile="$output_obj.lock"
-    else
-      output_obj=
-      need_locks=no
-      lockfile=
-    fi
-
-    # Lock this critical section if it is needed
-    # We use this script file to make the link, it avoids creating a new file
-    if test "$need_locks" = yes; then
-      until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
-	func_echo "Waiting for $lockfile to be removed"
-	sleep 2
-      done
-    elif test "$need_locks" = warn; then
-      if test -f "$lockfile"; then
-	$ECHO "\
-*** ERROR, $lockfile exists and contains:
-`cat $lockfile 2>/dev/null`
-
-This indicates that another process is trying to use the same
-temporary object file, and libtool could not work around it because
-your compiler does not support \`-c' and \`-o' together.  If you
-repeat this compilation, it may succeed, by chance, but you had better
-avoid parallel builds (make -j) in this platform, or get a better
-compiler."
-
-	$opt_dry_run || $RM $removelist
-	exit $EXIT_FAILURE
-      fi
-      removelist="$removelist $output_obj"
-      $ECHO "$srcfile" > "$lockfile"
-    fi
-
-    $opt_dry_run || $RM $removelist
-    removelist="$removelist $lockfile"
-    trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15
-
-    if test -n "$fix_srcfile_path"; then
-      eval srcfile=\"$fix_srcfile_path\"
-    fi
-    func_quote_for_eval "$srcfile"
-    qsrcfile=$func_quote_for_eval_result
-
-    # Only build a PIC object if we are building libtool libraries.
-    if test "$build_libtool_libs" = yes; then
-      # Without this assignment, base_compile gets emptied.
-      fbsd_hideous_sh_bug=$base_compile
-
-      if test "$pic_mode" != no; then
-	command="$base_compile $qsrcfile $pic_flag"
-      else
-	# Don't build PIC code
-	command="$base_compile $qsrcfile"
-      fi
-
-      func_mkdir_p "$xdir$objdir"
-
-      if test -z "$output_obj"; then
-	# Place PIC objects in $objdir
-	command="$command -o $lobj"
-      fi
-
-      func_show_eval_locale "$command"	\
-          'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE'
-
-      if test "$need_locks" = warn &&
-	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
-	$ECHO "\
-*** ERROR, $lockfile contains:
-`cat $lockfile 2>/dev/null`
-
-but it should contain:
-$srcfile
-
-This indicates that another process is trying to use the same
-temporary object file, and libtool could not work around it because
-your compiler does not support \`-c' and \`-o' together.  If you
-repeat this compilation, it may succeed, by chance, but you had better
-avoid parallel builds (make -j) in this platform, or get a better
-compiler."
-
-	$opt_dry_run || $RM $removelist
-	exit $EXIT_FAILURE
-      fi
-
-      # Just move the object if needed, then go on to compile the next one
-      if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then
-	func_show_eval '$MV "$output_obj" "$lobj"' \
-	  'error=$?; $opt_dry_run || $RM $removelist; exit $error'
-      fi
-
-      # Allow error messages only from the first compilation.
-      if test "$suppress_opt" = yes; then
-	suppress_output=' >/dev/null 2>&1'
-      fi
-    fi
-
-    # Only build a position-dependent object if we build old libraries.
-    if test "$build_old_libs" = yes; then
-      if test "$pic_mode" != yes; then
-	# Don't build PIC code
-	command="$base_compile $qsrcfile$pie_flag"
-      else
-	command="$base_compile $qsrcfile $pic_flag"
-      fi
-      if test "$compiler_c_o" = yes; then
-	command="$command -o $obj"
-      fi
-
-      # Suppress compiler output if we already did a PIC compilation.
-      command="$command$suppress_output"
-      func_show_eval_locale "$command" \
-        '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE'
-
-      if test "$need_locks" = warn &&
-	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
-	$ECHO "\
-*** ERROR, $lockfile contains:
-`cat $lockfile 2>/dev/null`
-
-but it should contain:
-$srcfile
-
-This indicates that another process is trying to use the same
-temporary object file, and libtool could not work around it because
-your compiler does not support \`-c' and \`-o' together.  If you
-repeat this compilation, it may succeed, by chance, but you had better
-avoid parallel builds (make -j) in this platform, or get a better
-compiler."
-
-	$opt_dry_run || $RM $removelist
-	exit $EXIT_FAILURE
-      fi
-
-      # Just move the object if needed
-      if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then
-	func_show_eval '$MV "$output_obj" "$obj"' \
-	  'error=$?; $opt_dry_run || $RM $removelist; exit $error'
-      fi
-    fi
-
-    $opt_dry_run || {
-      func_write_libtool_object "$libobj" "$objdir/$objname" "$objname"
-
-      # Unlock the critical section if it was locked
-      if test "$need_locks" != no; then
-	removelist=$lockfile
-        $RM "$lockfile"
-      fi
-    }
-
-    exit $EXIT_SUCCESS
-}
-
-$opt_help || {
-test "$mode" = compile && func_mode_compile ${1+"$@"}
-}
-
-func_mode_help ()
-{
-    # We need to display help for each of the modes.
-    case $mode in
-      "")
-        # Generic help is extracted from the usage comments
-        # at the start of this file.
-        func_help
-        ;;
-
-      clean)
-        $ECHO \
-"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
-
-Remove files from the build directory.
-
-RM is the name of the program to use to delete files associated with each FILE
-(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
-to RM.
-
-If FILE is a libtool library, object or program, all the files associated
-with it are deleted. Otherwise, only FILE itself is deleted using RM."
-        ;;
-
-      compile)
-      $ECHO \
-"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
-
-Compile a source file into a libtool library object.
-
-This mode accepts the following additional options:
-
-  -o OUTPUT-FILE    set the output file name to OUTPUT-FILE
-  -no-suppress      do not suppress compiler output for multiple passes
-  -prefer-pic       try to building PIC objects only
-  -prefer-non-pic   try to building non-PIC objects only
-  -shared           do not build a \`.o' file suitable for static linking
-  -static           only build a \`.o' file suitable for static linking
-
-COMPILE-COMMAND is a command to be used in creating a \`standard' object file
-from the given SOURCEFILE.
-
-The output file name is determined by removing the directory component from
-SOURCEFILE, then substituting the C source code suffix \`.c' with the
-library object suffix, \`.lo'."
-        ;;
-
-      execute)
-        $ECHO \
-"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]...
-
-Automatically set library path, then run a program.
-
-This mode accepts the following additional options:
-
-  -dlopen FILE      add the directory containing FILE to the library path
-
-This mode sets the library path environment variable according to \`-dlopen'
-flags.
-
-If any of the ARGS are libtool executable wrappers, then they are translated
-into their corresponding uninstalled binary, and any of their required library
-directories are added to the library path.
-
-Then, COMMAND is executed, with ARGS as arguments."
-        ;;
-
-      finish)
-        $ECHO \
-"Usage: $progname [OPTION]... --mode=finish [LIBDIR]...
-
-Complete the installation of libtool libraries.
-
-Each LIBDIR is a directory that contains libtool libraries.
-
-The commands that this mode executes may require superuser privileges.  Use
-the \`--dry-run' option if you just want to see what would be executed."
-        ;;
-
-      install)
-        $ECHO \
-"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND...
-
-Install executables or libraries.
-
-INSTALL-COMMAND is the installation command.  The first component should be
-either the \`install' or \`cp' program.
-
-The following components of INSTALL-COMMAND are treated specially:
-
-  -inst-prefix PREFIX-DIR  Use PREFIX-DIR as a staging area for installation
-
-The rest of the components are interpreted as arguments to that command (only
-BSD-compatible install options are recognized)."
-        ;;
-
-      link)
-        $ECHO \
-"Usage: $progname [OPTION]... --mode=link LINK-COMMAND...
-
-Link object files or libraries together to form another library, or to
-create an executable program.
-
-LINK-COMMAND is a command using the C compiler that you would use to create
-a program from several object files.
-
-The following components of LINK-COMMAND are treated specially:
-
-  -all-static       do not do any dynamic linking at all
-  -avoid-version    do not add a version suffix if possible
-  -dlopen FILE      \`-dlpreopen' FILE if it cannot be dlopened at runtime
-  -dlpreopen FILE   link in FILE and add its symbols to lt_preloaded_symbols
-  -export-dynamic   allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
-  -export-symbols SYMFILE
-                    try to export only the symbols listed in SYMFILE
-  -export-symbols-regex REGEX
-                    try to export only the symbols matching REGEX
-  -LLIBDIR          search LIBDIR for required installed libraries
-  -lNAME            OUTPUT-FILE requires the installed library libNAME
-  -module           build a library that can dlopened
-  -no-fast-install  disable the fast-install mode
-  -no-install       link a not-installable executable
-  -no-undefined     declare that a library does not refer to external symbols
-  -o OUTPUT-FILE    create OUTPUT-FILE from the specified objects
-  -objectlist FILE  Use a list of object files found in FILE to specify objects
-  -precious-files-regex REGEX
-                    don't remove output files matching REGEX
-  -release RELEASE  specify package release information
-  -rpath LIBDIR     the created library will eventually be installed in LIBDIR
-  -R[ ]LIBDIR       add LIBDIR to the runtime path of programs and libraries
-  -shared           only do dynamic linking of libtool libraries
-  -shrext SUFFIX    override the standard shared library file extension
-  -static           do not do any dynamic linking of uninstalled libtool libraries
-  -static-libtool-libs
-                    do not do any dynamic linking of libtool libraries
-  -version-info CURRENT[:REVISION[:AGE]]
-                    specify library version info [each variable defaults to 0]
-  -weak LIBNAME     declare that the target provides the LIBNAME interface
-
-All other options (arguments beginning with \`-') are ignored.
-
-Every other argument is treated as a filename.  Files ending in \`.la' are
-treated as uninstalled libtool libraries, other files are standard or library
-object files.
-
-If the OUTPUT-FILE ends in \`.la', then a libtool library is created,
-only library objects (\`.lo' files) may be specified, and \`-rpath' is
-required, except when creating a convenience library.
-
-If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
-using \`ar' and \`ranlib', or on Windows using \`lib'.
-
-If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
-is created, otherwise an executable program is created."
-        ;;
-
-      uninstall)
-        $ECHO \
-"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
-
-Remove libraries from an installation directory.
-
-RM is the name of the program to use to delete files associated with each FILE
-(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
-to RM.
-
-If FILE is a libtool library, all the files associated with it are deleted.
-Otherwise, only FILE itself is deleted using RM."
-        ;;
-
-      *)
-        func_fatal_help "invalid operation mode \`$mode'"
-        ;;
-    esac
-
-    $ECHO
-    $ECHO "Try \`$progname --help' for more information about other modes."
-
-    exit $?
-}
-
-  # Now that we've collected a possible --mode arg, show help if necessary
-  $opt_help && func_mode_help
-
-
-# func_mode_execute arg...
-func_mode_execute ()
-{
-    $opt_debug
-    # The first argument is the command name.
-    cmd="$nonopt"
-    test -z "$cmd" && \
-      func_fatal_help "you must specify a COMMAND"
-
-    # Handle -dlopen flags immediately.
-    for file in $execute_dlfiles; do
-      test -f "$file" \
-	|| func_fatal_help "\`$file' is not a file"
-
-      dir=
-      case $file in
-      *.la)
-	# Check to see that this really is a libtool archive.
-	func_lalib_unsafe_p "$file" \
-	  || func_fatal_help "\`$lib' is not a valid libtool archive"
-
-	# Read the libtool library.
-	dlname=
-	library_names=
-	func_source "$file"
-
-	# Skip this library if it cannot be dlopened.
-	if test -z "$dlname"; then
-	  # Warn if it was a shared library.
-	  test -n "$library_names" && \
-	    func_warning "\`$file' was not linked with \`-export-dynamic'"
-	  continue
-	fi
-
-	func_dirname "$file" "" "."
-	dir="$func_dirname_result"
-
-	if test -f "$dir/$objdir/$dlname"; then
-	  dir="$dir/$objdir"
-	else
-	  if test ! -f "$dir/$dlname"; then
-	    func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'"
-	  fi
-	fi
-	;;
-
-      *.lo)
-	# Just add the directory containing the .lo file.
-	func_dirname "$file" "" "."
-	dir="$func_dirname_result"
-	;;
-
-      *)
-	func_warning "\`-dlopen' is ignored for non-libtool libraries and objects"
-	continue
-	;;
-      esac
-
-      # Get the absolute pathname.
-      absdir=`cd "$dir" && pwd`
-      test -n "$absdir" && dir="$absdir"
-
-      # Now add the directory to shlibpath_var.
-      if eval "test -z \"\$$shlibpath_var\""; then
-	eval "$shlibpath_var=\"\$dir\""
-      else
-	eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
-      fi
-    done
-
-    # This variable tells wrapper scripts just to set shlibpath_var
-    # rather than running their programs.
-    libtool_execute_magic="$magic"
-
-    # Check if any of the arguments is a wrapper script.
-    args=
-    for file
-    do
-      case $file in
-      -*) ;;
-      *)
-	# Do a test to see if this is really a libtool program.
-	if func_ltwrapper_script_p "$file"; then
-	  func_source "$file"
-	  # Transform arg to wrapped name.
-	  file="$progdir/$program"
-	elif func_ltwrapper_executable_p "$file"; then
-	  func_ltwrapper_scriptname "$file"
-	  func_source "$func_ltwrapper_scriptname_result"
-	  # Transform arg to wrapped name.
-	  file="$progdir/$program"
-	fi
-	;;
-      esac
-      # Quote arguments (to preserve shell metacharacters).
-      func_quote_for_eval "$file"
-      args="$args $func_quote_for_eval_result"
-    done
-
-    if test "X$opt_dry_run" = Xfalse; then
-      if test -n "$shlibpath_var"; then
-	# Export the shlibpath_var.
-	eval "export $shlibpath_var"
-      fi
-
-      # Restore saved environment variables
-      for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
-      do
-	eval "if test \"\${save_$lt_var+set}\" = set; then
-                $lt_var=\$save_$lt_var; export $lt_var
-	      else
-		$lt_unset $lt_var
-	      fi"
-      done
-
-      # Now prepare to actually exec the command.
-      exec_cmd="\$cmd$args"
-    else
-      # Display what would be done.
-      if test -n "$shlibpath_var"; then
-	eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\""
-	$ECHO "export $shlibpath_var"
-      fi
-      $ECHO "$cmd$args"
-      exit $EXIT_SUCCESS
-    fi
-}
-
-test "$mode" = execute && func_mode_execute ${1+"$@"}
-
-
-# func_mode_finish arg...
-func_mode_finish ()
-{
-    $opt_debug
-    libdirs="$nonopt"
-    admincmds=
-
-    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
-      for dir
-      do
-	libdirs="$libdirs $dir"
-      done
-
-      for libdir in $libdirs; do
-	if test -n "$finish_cmds"; then
-	  # Do each command in the finish commands.
-	  func_execute_cmds "$finish_cmds" 'admincmds="$admincmds
-'"$cmd"'"'
-	fi
-	if test -n "$finish_eval"; then
-	  # Do the single finish_eval.
-	  eval cmds=\"$finish_eval\"
-	  $opt_dry_run || eval "$cmds" || admincmds="$admincmds
-       $cmds"
-	fi
-      done
-    fi
-
-    # Exit here if they wanted silent mode.
-    $opt_silent && exit $EXIT_SUCCESS
-
-    $ECHO "X----------------------------------------------------------------------" | $Xsed
-    $ECHO "Libraries have been installed in:"
-    for libdir in $libdirs; do
-      $ECHO "   $libdir"
-    done
-    $ECHO
-    $ECHO "If you ever happen to want to link against installed libraries"
-    $ECHO "in a given directory, LIBDIR, you must either use libtool, and"
-    $ECHO "specify the full pathname of the library, or use the \`-LLIBDIR'"
-    $ECHO "flag during linking and do at least one of the following:"
-    if test -n "$shlibpath_var"; then
-      $ECHO "   - add LIBDIR to the \`$shlibpath_var' environment variable"
-      $ECHO "     during execution"
-    fi
-    if test -n "$runpath_var"; then
-      $ECHO "   - add LIBDIR to the \`$runpath_var' environment variable"
-      $ECHO "     during linking"
-    fi
-    if test -n "$hardcode_libdir_flag_spec"; then
-      libdir=LIBDIR
-      eval flag=\"$hardcode_libdir_flag_spec\"
-
-      $ECHO "   - use the \`$flag' linker flag"
-    fi
-    if test -n "$admincmds"; then
-      $ECHO "   - have your system administrator run these commands:$admincmds"
-    fi
-    if test -f /etc/ld.so.conf; then
-      $ECHO "   - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
-    fi
-    $ECHO
-
-    $ECHO "See any operating system documentation about shared libraries for"
-    case $host in
-      solaris2.[6789]|solaris2.1[0-9])
-        $ECHO "more information, such as the ld(1), crle(1) and ld.so(8) manual"
-	$ECHO "pages."
-	;;
-      *)
-        $ECHO "more information, such as the ld(1) and ld.so(8) manual pages."
-        ;;
-    esac
-    $ECHO "X----------------------------------------------------------------------" | $Xsed
-    exit $EXIT_SUCCESS
-}
-
-test "$mode" = finish && func_mode_finish ${1+"$@"}
-
-
-# func_mode_install arg...
-func_mode_install ()
-{
-    $opt_debug
-    # There may be an optional sh(1) argument at the beginning of
-    # install_prog (especially on Windows NT).
-    if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
-       # Allow the use of GNU shtool's install command.
-       $ECHO "X$nonopt" | $GREP shtool >/dev/null; then
-      # Aesthetically quote it.
-      func_quote_for_eval "$nonopt"
-      install_prog="$func_quote_for_eval_result "
-      arg=$1
-      shift
-    else
-      install_prog=
-      arg=$nonopt
-    fi
-
-    # The real first argument should be the name of the installation program.
-    # Aesthetically quote it.
-    func_quote_for_eval "$arg"
-    install_prog="$install_prog$func_quote_for_eval_result"
-
-    # We need to accept at least all the BSD install flags.
-    dest=
-    files=
-    opts=
-    prev=
-    install_type=
-    isdir=no
-    stripme=
-    for arg
-    do
-      if test -n "$dest"; then
-	files="$files $dest"
-	dest=$arg
-	continue
-      fi
-
-      case $arg in
-      -d) isdir=yes ;;
-      -f)
-	case " $install_prog " in
-	*[\\\ /]cp\ *) ;;
-	*) prev=$arg ;;
-	esac
-	;;
-      -g | -m | -o)
-	prev=$arg
-	;;
-      -s)
-	stripme=" -s"
-	continue
-	;;
-      -*)
-	;;
-      *)
-	# If the previous option needed an argument, then skip it.
-	if test -n "$prev"; then
-	  prev=
-	else
-	  dest=$arg
-	  continue
-	fi
-	;;
-      esac
-
-      # Aesthetically quote the argument.
-      func_quote_for_eval "$arg"
-      install_prog="$install_prog $func_quote_for_eval_result"
-    done
-
-    test -z "$install_prog" && \
-      func_fatal_help "you must specify an install program"
-
-    test -n "$prev" && \
-      func_fatal_help "the \`$prev' option requires an argument"
-
-    if test -z "$files"; then
-      if test -z "$dest"; then
-	func_fatal_help "no file or destination specified"
-      else
-	func_fatal_help "you must specify a destination"
-      fi
-    fi
-
-    # Strip any trailing slash from the destination.
-    func_stripname '' '/' "$dest"
-    dest=$func_stripname_result
-
-    # Check to see that the destination is a directory.
-    test -d "$dest" && isdir=yes
-    if test "$isdir" = yes; then
-      destdir="$dest"
-      destname=
-    else
-      func_dirname_and_basename "$dest" "" "."
-      destdir="$func_dirname_result"
-      destname="$func_basename_result"
-
-      # Not a directory, so check to see that there is only one file specified.
-      set dummy $files; shift
-      test "$#" -gt 1 && \
-	func_fatal_help "\`$dest' is not a directory"
-    fi
-    case $destdir in
-    [\\/]* | [A-Za-z]:[\\/]*) ;;
-    *)
-      for file in $files; do
-	case $file in
-	*.lo) ;;
-	*)
-	  func_fatal_help "\`$destdir' must be an absolute directory name"
-	  ;;
-	esac
-      done
-      ;;
-    esac
-
-    # This variable tells wrapper scripts just to set variables rather
-    # than running their programs.
-    libtool_install_magic="$magic"
-
-    staticlibs=
-    future_libdirs=
-    current_libdirs=
-    for file in $files; do
-
-      # Do each installation.
-      case $file in
-      *.$libext)
-	# Do the static libraries later.
-	staticlibs="$staticlibs $file"
-	;;
-
-      *.la)
-	# Check to see that this really is a libtool archive.
-	func_lalib_unsafe_p "$file" \
-	  || func_fatal_help "\`$file' is not a valid libtool archive"
-
-	library_names=
-	old_library=
-	relink_command=
-	func_source "$file"
-
-	# Add the libdir to current_libdirs if it is the destination.
-	if test "X$destdir" = "X$libdir"; then
-	  case "$current_libdirs " in
-	  *" $libdir "*) ;;
-	  *) current_libdirs="$current_libdirs $libdir" ;;
-	  esac
-	else
-	  # Note the libdir as a future libdir.
-	  case "$future_libdirs " in
-	  *" $libdir "*) ;;
-	  *) future_libdirs="$future_libdirs $libdir" ;;
-	  esac
-	fi
-
-	func_dirname "$file" "/" ""
-	dir="$func_dirname_result"
-	dir="$dir$objdir"
-
-	if test -n "$relink_command"; then
-	  # Determine the prefix the user has applied to our future dir.
-	  inst_prefix_dir=`$ECHO "X$destdir" | $Xsed -e "s%$libdir\$%%"`
-
-	  # Don't allow the user to place us outside of our expected
-	  # location b/c this prevents finding dependent libraries that
-	  # are installed to the same prefix.
-	  # At present, this check doesn't affect windows .dll's that
-	  # are installed into $libdir/../bin (currently, that works fine)
-	  # but it's something to keep an eye on.
-	  test "$inst_prefix_dir" = "$destdir" && \
-	    func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir"
-
-	  if test -n "$inst_prefix_dir"; then
-	    # Stick the inst_prefix_dir data into the link command.
-	    relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
-	  else
-	    relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%%"`
-	  fi
-
-	  func_warning "relinking \`$file'"
-	  func_show_eval "$relink_command" \
-	    'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"'
-	fi
-
-	# See the names of the shared library.
-	set dummy $library_names; shift
-	if test -n "$1"; then
-	  realname="$1"
-	  shift
-
-	  srcname="$realname"
-	  test -n "$relink_command" && srcname="$realname"T
-
-	  # Install the shared library and build the symlinks.
-	  func_show_eval "$install_prog $dir/$srcname $destdir/$realname" \
-	      'exit $?'
-	  tstripme="$stripme"
-	  case $host_os in
-	  cygwin* | mingw* | pw32* | cegcc*)
-	    case $realname in
-	    *.dll.a)
-	      tstripme=""
-	      ;;
-	    esac
-	    ;;
-	  esac
-	  if test -n "$tstripme" && test -n "$striplib"; then
-	    func_show_eval "$striplib $destdir/$realname" 'exit $?'
-	  fi
-
-	  if test "$#" -gt 0; then
-	    # Delete the old symlinks, and create new ones.
-	    # Try `ln -sf' first, because the `ln' binary might depend on
-	    # the symlink we replace!  Solaris /bin/ln does not understand -f,
-	    # so we also need to try rm && ln -s.
-	    for linkname
-	    do
-	      test "$linkname" != "$realname" \
-		&& func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })"
-	    done
-	  fi
-
-	  # Do each command in the postinstall commands.
-	  lib="$destdir/$realname"
-	  func_execute_cmds "$postinstall_cmds" 'exit $?'
-	fi
-
-	# Install the pseudo-library for information purposes.
-	func_basename "$file"
-	name="$func_basename_result"
-	instname="$dir/$name"i
-	func_show_eval "$install_prog $instname $destdir/$name" 'exit $?'
-
-	# Maybe install the static library, too.
-	test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library"
-	;;
-
-      *.lo)
-	# Install (i.e. copy) a libtool object.
-
-	# Figure out destination file name, if it wasn't already specified.
-	if test -n "$destname"; then
-	  destfile="$destdir/$destname"
-	else
-	  func_basename "$file"
-	  destfile="$func_basename_result"
-	  destfile="$destdir/$destfile"
-	fi
-
-	# Deduce the name of the destination old-style object file.
-	case $destfile in
-	*.lo)
-	  func_lo2o "$destfile"
-	  staticdest=$func_lo2o_result
-	  ;;
-	*.$objext)
-	  staticdest="$destfile"
-	  destfile=
-	  ;;
-	*)
-	  func_fatal_help "cannot copy a libtool object to \`$destfile'"
-	  ;;
-	esac
-
-	# Install the libtool object if requested.
-	test -n "$destfile" && \
-	  func_show_eval "$install_prog $file $destfile" 'exit $?'
-
-	# Install the old object if enabled.
-	if test "$build_old_libs" = yes; then
-	  # Deduce the name of the old-style object file.
-	  func_lo2o "$file"
-	  staticobj=$func_lo2o_result
-	  func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?'
-	fi
-	exit $EXIT_SUCCESS
-	;;
-
-      *)
-	# Figure out destination file name, if it wasn't already specified.
-	if test -n "$destname"; then
-	  destfile="$destdir/$destname"
-	else
-	  func_basename "$file"
-	  destfile="$func_basename_result"
-	  destfile="$destdir/$destfile"
-	fi
-
-	# If the file is missing, and there is a .exe on the end, strip it
-	# because it is most likely a libtool script we actually want to
-	# install
-	stripped_ext=""
-	case $file in
-	  *.exe)
-	    if test ! -f "$file"; then
-	      func_stripname '' '.exe' "$file"
-	      file=$func_stripname_result
-	      stripped_ext=".exe"
-	    fi
-	    ;;
-	esac
-
-	# Do a test to see if this is really a libtool program.
-	case $host in
-	*cygwin* | *mingw*)
-	    if func_ltwrapper_executable_p "$file"; then
-	      func_ltwrapper_scriptname "$file"
-	      wrapper=$func_ltwrapper_scriptname_result
-	    else
-	      func_stripname '' '.exe' "$file"
-	      wrapper=$func_stripname_result
-	    fi
-	    ;;
-	*)
-	    wrapper=$file
-	    ;;
-	esac
-	if func_ltwrapper_script_p "$wrapper"; then
-	  notinst_deplibs=
-	  relink_command=
-
-	  func_source "$wrapper"
-
-	  # Check the variables that should have been set.
-	  test -z "$generated_by_libtool_version" && \
-	    func_fatal_error "invalid libtool wrapper script \`$wrapper'"
-
-	  finalize=yes
-	  for lib in $notinst_deplibs; do
-	    # Check to see that each library is installed.
-	    libdir=
-	    if test -f "$lib"; then
-	      func_source "$lib"
-	    fi
-	    libfile="$libdir/"`$ECHO "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test
-	    if test -n "$libdir" && test ! -f "$libfile"; then
-	      func_warning "\`$lib' has not been installed in \`$libdir'"
-	      finalize=no
-	    fi
-	  done
-
-	  relink_command=
-	  func_source "$wrapper"
-
-	  outputname=
-	  if test "$fast_install" = no && test -n "$relink_command"; then
-	    $opt_dry_run || {
-	      if test "$finalize" = yes; then
-	        tmpdir=`func_mktempdir`
-		func_basename "$file$stripped_ext"
-		file="$func_basename_result"
-	        outputname="$tmpdir/$file"
-	        # Replace the output file specification.
-	        relink_command=`$ECHO "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'`
-
-	        $opt_silent || {
-	          func_quote_for_expand "$relink_command"
-		  eval "func_echo $func_quote_for_expand_result"
-	        }
-	        if eval "$relink_command"; then :
-	          else
-		  func_error "error: relink \`$file' with the above command before installing it"
-		  $opt_dry_run || ${RM}r "$tmpdir"
-		  continue
-	        fi
-	        file="$outputname"
-	      else
-	        func_warning "cannot relink \`$file'"
-	      fi
-	    }
-	  else
-	    # Install the binary that we compiled earlier.
-	    file=`$ECHO "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"`
-	  fi
-	fi
-
-	# remove .exe since cygwin /usr/bin/install will append another
-	# one anyway
-	case $install_prog,$host in
-	*/usr/bin/install*,*cygwin*)
-	  case $file:$destfile in
-	  *.exe:*.exe)
-	    # this is ok
-	    ;;
-	  *.exe:*)
-	    destfile=$destfile.exe
-	    ;;
-	  *:*.exe)
-	    func_stripname '' '.exe' "$destfile"
-	    destfile=$func_stripname_result
-	    ;;
-	  esac
-	  ;;
-	esac
-	func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?'
-	$opt_dry_run || if test -n "$outputname"; then
-	  ${RM}r "$tmpdir"
-	fi
-	;;
-      esac
-    done
-
-    for file in $staticlibs; do
-      func_basename "$file"
-      name="$func_basename_result"
-
-      # Set up the ranlib parameters.
-      oldlib="$destdir/$name"
-
-      func_show_eval "$install_prog \$file \$oldlib" 'exit $?'
-
-      if test -n "$stripme" && test -n "$old_striplib"; then
-	func_show_eval "$old_striplib $oldlib" 'exit $?'
-      fi
-
-      # Do each command in the postinstall commands.
-      func_execute_cmds "$old_postinstall_cmds" 'exit $?'
-    done
-
-    test -n "$future_libdirs" && \
-      func_warning "remember to run \`$progname --finish$future_libdirs'"
-
-    if test -n "$current_libdirs"; then
-      # Maybe just do a dry run.
-      $opt_dry_run && current_libdirs=" -n$current_libdirs"
-      exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
-    else
-      exit $EXIT_SUCCESS
-    fi
-}
-
-test "$mode" = install && func_mode_install ${1+"$@"}
-
-
-# func_generate_dlsyms outputname originator pic_p
-# Extract symbols from dlprefiles and create ${outputname}S.o with
-# a dlpreopen symbol table.
-func_generate_dlsyms ()
-{
-    $opt_debug
-    my_outputname="$1"
-    my_originator="$2"
-    my_pic_p="${3-no}"
-    my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'`
-    my_dlsyms=
-
-    if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
-      if test -n "$NM" && test -n "$global_symbol_pipe"; then
-	my_dlsyms="${my_outputname}S.c"
-      else
-	func_error "not configured to extract global symbols from dlpreopened files"
-      fi
-    fi
-
-    if test -n "$my_dlsyms"; then
-      case $my_dlsyms in
-      "") ;;
-      *.c)
-	# Discover the nlist of each of the dlfiles.
-	nlist="$output_objdir/${my_outputname}.nm"
-
-	func_show_eval "$RM $nlist ${nlist}S ${nlist}T"
-
-	# Parse the name list into a source file.
-	func_verbose "creating $output_objdir/$my_dlsyms"
-
-	$opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\
-/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */
-/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */
-
-#ifdef __cplusplus
-extern \"C\" {
-#endif
-
-/* External symbol declarations for the compiler. */\
-"
-
-	if test "$dlself" = yes; then
-	  func_verbose "generating symbol list for \`$output'"
-
-	  $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist"
-
-	  # Add our own program objects to the symbol list.
-	  progfiles=`$ECHO "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
-	  for progfile in $progfiles; do
-	    func_verbose "extracting global C symbols from \`$progfile'"
-	    $opt_dry_run || eval "$NM $progfile | $global_symbol_pipe >> '$nlist'"
-	  done
-
-	  if test -n "$exclude_expsyms"; then
-	    $opt_dry_run || {
-	      eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
-	      eval '$MV "$nlist"T "$nlist"'
-	    }
-	  fi
-
-	  if test -n "$export_symbols_regex"; then
-	    $opt_dry_run || {
-	      eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
-	      eval '$MV "$nlist"T "$nlist"'
-	    }
-	  fi
-
-	  # Prepare the list of exported symbols
-	  if test -z "$export_symbols"; then
-	    export_symbols="$output_objdir/$outputname.exp"
-	    $opt_dry_run || {
-	      $RM $export_symbols
-	      eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
-	      case $host in
-	      *cygwin* | *mingw* | *cegcc* )
-                eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
-                eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
-	        ;;
-	      esac
-	    }
-	  else
-	    $opt_dry_run || {
-	      eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
-	      eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
-	      eval '$MV "$nlist"T "$nlist"'
-	      case $host in
-	        *cygwin | *mingw* | *cegcc* )
-	          eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
-	          eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
-	          ;;
-	      esac
-	    }
-	  fi
-	fi
-
-	for dlprefile in $dlprefiles; do
-	  func_verbose "extracting global C symbols from \`$dlprefile'"
-	  func_basename "$dlprefile"
-	  name="$func_basename_result"
-	  $opt_dry_run || {
-	    eval '$ECHO ": $name " >> "$nlist"'
-	    eval "$NM $dlprefile 2>/dev/null | $global_symbol_pipe >> '$nlist'"
-	  }
-	done
-
-	$opt_dry_run || {
-	  # Make sure we have at least an empty file.
-	  test -f "$nlist" || : > "$nlist"
-
-	  if test -n "$exclude_expsyms"; then
-	    $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
-	    $MV "$nlist"T "$nlist"
-	  fi
-
-	  # Try sorting and uniquifying the output.
-	  if $GREP -v "^: " < "$nlist" |
-	      if sort -k 3 </dev/null >/dev/null 2>&1; then
-		sort -k 3
-	      else
-		sort +2
-	      fi |
-	      uniq > "$nlist"S; then
-	    :
-	  else
-	    $GREP -v "^: " < "$nlist" > "$nlist"S
-	  fi
-
-	  if test -f "$nlist"S; then
-	    eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"'
-	  else
-	    $ECHO '/* NONE */' >> "$output_objdir/$my_dlsyms"
-	  fi
-
-	  $ECHO >> "$output_objdir/$my_dlsyms" "\
-
-/* The mapping between symbol names and symbols.  */
-typedef struct {
-  const char *name;
-  void *address;
-} lt_dlsymlist;
-"
-	  case $host in
-	  *cygwin* | *mingw* | *cegcc* )
-	    $ECHO >> "$output_objdir/$my_dlsyms" "\
-/* DATA imports from DLLs on WIN32 con't be const, because
-   runtime relocations are performed -- see ld's documentation
-   on pseudo-relocs.  */"
-	    lt_dlsym_const= ;;
-	  *osf5*)
-	    echo >> "$output_objdir/$my_dlsyms" "\
-/* This system does not cope well with relocations in const data */"
-	    lt_dlsym_const= ;;
-	  *)
-	    lt_dlsym_const=const ;;
-	  esac
-
-	  $ECHO >> "$output_objdir/$my_dlsyms" "\
-extern $lt_dlsym_const lt_dlsymlist
-lt_${my_prefix}_LTX_preloaded_symbols[];
-$lt_dlsym_const lt_dlsymlist
-lt_${my_prefix}_LTX_preloaded_symbols[] =
-{\
-  { \"$my_originator\", (void *) 0 },"
-
-	  case $need_lib_prefix in
-	  no)
-	    eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms"
-	    ;;
-	  *)
-	    eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms"
-	    ;;
-	  esac
-	  $ECHO >> "$output_objdir/$my_dlsyms" "\
-  {0, (void *) 0}
-};
-
-/* This works around a problem in FreeBSD linker */
-#ifdef FREEBSD_WORKAROUND
-static const void *lt_preloaded_setup() {
-  return lt_${my_prefix}_LTX_preloaded_symbols;
-}
-#endif
-
-#ifdef __cplusplus
-}
-#endif\
-"
-	} # !$opt_dry_run
-
-	pic_flag_for_symtable=
-	case "$compile_command " in
-	*" -static "*) ;;
-	*)
-	  case $host in
-	  # compiling the symbol table file with pic_flag works around
-	  # a FreeBSD bug that causes programs to crash when -lm is
-	  # linked before any other PIC object.  But we must not use
-	  # pic_flag when linking with -static.  The problem exists in
-	  # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
-	  *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
-	    pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;;
-	  *-*-hpux*)
-	    pic_flag_for_symtable=" $pic_flag"  ;;
-	  *)
-	    if test "X$my_pic_p" != Xno; then
-	      pic_flag_for_symtable=" $pic_flag"
-	    fi
-	    ;;
-	  esac
-	  ;;
-	esac
-	symtab_cflags=
-	for arg in $LTCFLAGS; do
-	  case $arg in
-	  -pie | -fpie | -fPIE) ;;
-	  *) symtab_cflags="$symtab_cflags $arg" ;;
-	  esac
-	done
-
-	# Now compile the dynamic symbol file.
-	func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?'
-
-	# Clean up the generated files.
-	func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"'
-
-	# Transform the symbol file into the correct name.
-	symfileobj="$output_objdir/${my_outputname}S.$objext"
-	case $host in
-	*cygwin* | *mingw* | *cegcc* )
-	  if test -f "$output_objdir/$my_outputname.def"; then
-	    compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
-	    finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
-	  else
-	    compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
-	    finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
-	  fi
-	  ;;
-	*)
-	  compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
-	  finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
-	  ;;
-	esac
-	;;
-      *)
-	func_fatal_error "unknown suffix for \`$my_dlsyms'"
-	;;
-      esac
-    else
-      # We keep going just in case the user didn't refer to
-      # lt_preloaded_symbols.  The linker will fail if global_symbol_pipe
-      # really was required.
-
-      # Nullify the symbol file.
-      compile_command=`$ECHO "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"`
-      finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
-    fi
-}
-
-# func_win32_libid arg
-# return the library type of file 'arg'
-#
-# Need a lot of goo to handle *both* DLLs and import libs
-# Has to be a shell function in order to 'eat' the argument
-# that is supplied when $file_magic_command is called.
-func_win32_libid ()
-{
-  $opt_debug
-  win32_libid_type="unknown"
-  win32_fileres=`file -L $1 2>/dev/null`
-  case $win32_fileres in
-  *ar\ archive\ import\ library*) # definitely import
-    win32_libid_type="x86 archive import"
-    ;;
-  *ar\ archive*) # could be an import, or static
-    if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null |
-       $EGREP 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then
-      win32_nmres=`eval $NM -f posix -A $1 |
-	$SED -n -e '
-	    1,100{
-		/ I /{
-		    s,.*,import,
-		    p
-		    q
-		}
-	    }'`
-      case $win32_nmres in
-      import*)  win32_libid_type="x86 archive import";;
-      *)        win32_libid_type="x86 archive static";;
-      esac
-    fi
-    ;;
-  *DLL*)
-    win32_libid_type="x86 DLL"
-    ;;
-  *executable*) # but shell scripts are "executable" too...
-    case $win32_fileres in
-    *MS\ Windows\ PE\ Intel*)
-      win32_libid_type="x86 DLL"
-      ;;
-    esac
-    ;;
-  esac
-  $ECHO "$win32_libid_type"
-}
-
-
-
-# func_extract_an_archive dir oldlib
-func_extract_an_archive ()
-{
-    $opt_debug
-    f_ex_an_ar_dir="$1"; shift
-    f_ex_an_ar_oldlib="$1"
-    func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" 'exit $?'
-    if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
-     :
-    else
-      func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib"
-    fi
-}
-
-
-# func_extract_archives gentop oldlib ...
-func_extract_archives ()
-{
-    $opt_debug
-    my_gentop="$1"; shift
-    my_oldlibs=${1+"$@"}
-    my_oldobjs=""
-    my_xlib=""
-    my_xabs=""
-    my_xdir=""
-
-    for my_xlib in $my_oldlibs; do
-      # Extract the objects.
-      case $my_xlib in
-	[\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;;
-	*) my_xabs=`pwd`"/$my_xlib" ;;
-      esac
-      func_basename "$my_xlib"
-      my_xlib="$func_basename_result"
-      my_xlib_u=$my_xlib
-      while :; do
-        case " $extracted_archives " in
-	*" $my_xlib_u "*)
-	  func_arith $extracted_serial + 1
-	  extracted_serial=$func_arith_result
-	  my_xlib_u=lt$extracted_serial-$my_xlib ;;
-	*) break ;;
-	esac
-      done
-      extracted_archives="$extracted_archives $my_xlib_u"
-      my_xdir="$my_gentop/$my_xlib_u"
-
-      func_mkdir_p "$my_xdir"
-
-      case $host in
-      *-darwin*)
-	func_verbose "Extracting $my_xabs"
-	# Do not bother doing anything if just a dry run
-	$opt_dry_run || {
-	  darwin_orig_dir=`pwd`
-	  cd $my_xdir || exit $?
-	  darwin_archive=$my_xabs
-	  darwin_curdir=`pwd`
-	  darwin_base_archive=`basename "$darwin_archive"`
-	  darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true`
-	  if test -n "$darwin_arches"; then
-	    darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'`
-	    darwin_arch=
-	    func_verbose "$darwin_base_archive has multiple architectures $darwin_arches"
-	    for darwin_arch in  $darwin_arches ; do
-	      func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}"
-	      $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}"
-	      cd "unfat-$$/${darwin_base_archive}-${darwin_arch}"
-	      func_extract_an_archive "`pwd`" "${darwin_base_archive}"
-	      cd "$darwin_curdir"
-	      $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}"
-	    done # $darwin_arches
-            ## Okay now we've a bunch of thin objects, gotta fatten them up :)
-	    darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u`
-	    darwin_file=
-	    darwin_files=
-	    for darwin_file in $darwin_filelist; do
-	      darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP`
-	      $LIPO -create -output "$darwin_file" $darwin_files
-	    done # $darwin_filelist
-	    $RM -rf unfat-$$
-	    cd "$darwin_orig_dir"
-	  else
-	    cd $darwin_orig_dir
-	    func_extract_an_archive "$my_xdir" "$my_xabs"
-	  fi # $darwin_arches
-	} # !$opt_dry_run
-	;;
-      *)
-        func_extract_an_archive "$my_xdir" "$my_xabs"
-	;;
-      esac
-      my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
-    done
-
-    func_extract_archives_result="$my_oldobjs"
-}
-
-
-
-# func_emit_wrapper_part1 [arg=no]
-#
-# Emit the first part of a libtool wrapper script on stdout.
-# For more information, see the description associated with
-# func_emit_wrapper(), below.
-func_emit_wrapper_part1 ()
-{
-	func_emit_wrapper_part1_arg1=no
-	if test -n "$1" ; then
-	  func_emit_wrapper_part1_arg1=$1
-	fi
-
-	$ECHO "\
-#! $SHELL
-
-# $output - temporary wrapper script for $objdir/$outputname
-# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
-#
-# The $output program cannot be directly executed until all the libtool
-# libraries that it depends on are installed.
-#
-# This wrapper script should never be moved out of the build directory.
-# If it is, it will not operate correctly.
-
-# Sed substitution that helps us do robust quoting.  It backslashifies
-# metacharacters that are still active within double-quoted strings.
-Xsed='${SED} -e 1s/^X//'
-sed_quote_subst='$sed_quote_subst'
-
-# Be Bourne compatible
-if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then
-  emulate sh
-  NULLCMD=:
-  # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which
-  # is contrary to our usage.  Disable this feature.
-  alias -g '\${1+\"\$@\"}'='\"\$@\"'
-  setopt NO_GLOB_SUBST
-else
-  case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac
-fi
-BIN_SH=xpg4; export BIN_SH # for Tru64
-DUALCASE=1; export DUALCASE # for MKS sh
-
-# The HP-UX ksh and POSIX shell print the target directory to stdout
-# if CDPATH is set.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-relink_command=\"$relink_command\"
-
-# This environment variable determines our operation mode.
-if test \"\$libtool_install_magic\" = \"$magic\"; then
-  # install mode needs the following variables:
-  generated_by_libtool_version='$macro_version'
-  notinst_deplibs='$notinst_deplibs'
-else
-  # When we are sourced in execute mode, \$file and \$ECHO are already set.
-  if test \"\$libtool_execute_magic\" != \"$magic\"; then
-    ECHO=\"$qecho\"
-    file=\"\$0\"
-    # Make sure echo works.
-    if test \"X\$1\" = X--no-reexec; then
-      # Discard the --no-reexec flag, and continue.
-      shift
-    elif test \"X\`{ \$ECHO '\t'; } 2>/dev/null\`\" = 'X\t'; then
-      # Yippee, \$ECHO works!
-      :
-    else
-      # Restart under the correct shell, and then maybe \$ECHO will work.
-      exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"}
-    fi
-  fi\
-"
-	$ECHO "\
-
-  # Find the directory that this script lives in.
-  thisdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\`
-  test \"x\$thisdir\" = \"x\$file\" && thisdir=.
-
-  # Follow symbolic links until we get to the real thisdir.
-  file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\`
-  while test -n \"\$file\"; do
-    destdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\`
-
-    # If there was a directory component, then change thisdir.
-    if test \"x\$destdir\" != \"x\$file\"; then
-      case \"\$destdir\" in
-      [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
-      *) thisdir=\"\$thisdir/\$destdir\" ;;
-      esac
-    fi
-
-    file=\`\$ECHO \"X\$file\" | \$Xsed -e 's%^.*/%%'\`
-    file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\`
-  done
-"
-}
-# end: func_emit_wrapper_part1
-
-# func_emit_wrapper_part2 [arg=no]
-#
-# Emit the second part of a libtool wrapper script on stdout.
-# For more information, see the description associated with
-# func_emit_wrapper(), below.
-func_emit_wrapper_part2 ()
-{
-	func_emit_wrapper_part2_arg1=no
-	if test -n "$1" ; then
-	  func_emit_wrapper_part2_arg1=$1
-	fi
-
-	$ECHO "\
-
-  # Usually 'no', except on cygwin/mingw when embedded into
-  # the cwrapper.
-  WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_part2_arg1
-  if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then
-    # special case for '.'
-    if test \"\$thisdir\" = \".\"; then
-      thisdir=\`pwd\`
-    fi
-    # remove .libs from thisdir
-    case \"\$thisdir\" in
-    *[\\\\/]$objdir ) thisdir=\`\$ECHO \"X\$thisdir\" | \$Xsed -e 's%[\\\\/][^\\\\/]*$%%'\` ;;
-    $objdir )   thisdir=. ;;
-    esac
-  fi
-
-  # Try to get the absolute directory name.
-  absdir=\`cd \"\$thisdir\" && pwd\`
-  test -n \"\$absdir\" && thisdir=\"\$absdir\"
-"
-
-	if test "$fast_install" = yes; then
-	  $ECHO "\
-  program=lt-'$outputname'$exeext
-  progdir=\"\$thisdir/$objdir\"
-
-  if test ! -f \"\$progdir/\$program\" ||
-     { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
-       test \"X\$file\" != \"X\$progdir/\$program\"; }; then
-
-    file=\"\$\$-\$program\"
-
-    if test ! -d \"\$progdir\"; then
-      $MKDIR \"\$progdir\"
-    else
-      $RM \"\$progdir/\$file\"
-    fi"
-
-	  $ECHO "\
-
-    # relink executable if necessary
-    if test -n \"\$relink_command\"; then
-      if relink_command_output=\`eval \$relink_command 2>&1\`; then :
-      else
-	$ECHO \"\$relink_command_output\" >&2
-	$RM \"\$progdir/\$file\"
-	exit 1
-      fi
-    fi
-
-    $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
-    { $RM \"\$progdir/\$program\";
-      $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; }
-    $RM \"\$progdir/\$file\"
-  fi"
-	else
-	  $ECHO "\
-  program='$outputname'
-  progdir=\"\$thisdir/$objdir\"
-"
-	fi
-
-	$ECHO "\
-
-  if test -f \"\$progdir/\$program\"; then"
-
-	# Export our shlibpath_var if we have one.
-	if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
-	  $ECHO "\
-    # Add our own library path to $shlibpath_var
-    $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
-
-    # Some systems cannot cope with colon-terminated $shlibpath_var
-    # The second colon is a workaround for a bug in BeOS R4 sed
-    $shlibpath_var=\`\$ECHO \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\`
-
-    export $shlibpath_var
-"
-	fi
-
-	# fixup the dll searchpath if we need to.
-	if test -n "$dllsearchpath"; then
-	  $ECHO "\
-    # Add the dll search path components to the executable PATH
-    PATH=$dllsearchpath:\$PATH
-"
-	fi
-
-	$ECHO "\
-    if test \"\$libtool_execute_magic\" != \"$magic\"; then
-      # Run the actual program with our arguments.
-"
-	case $host in
-	# Backslashes separate directories on plain windows
-	*-*-mingw | *-*-os2* | *-cegcc*)
-	  $ECHO "\
-      exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
-"
-	  ;;
-
-	*)
-	  $ECHO "\
-      exec \"\$progdir/\$program\" \${1+\"\$@\"}
-"
-	  ;;
-	esac
-	$ECHO "\
-      \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2
-      exit 1
-    fi
-  else
-    # The program doesn't exist.
-    \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2
-    \$ECHO \"This script is just a wrapper for \$program.\" 1>&2
-    $ECHO \"See the $PACKAGE documentation for more information.\" 1>&2
-    exit 1
-  fi
-fi\
-"
-}
-# end: func_emit_wrapper_part2
-
-
-# func_emit_wrapper [arg=no]
-#
-# Emit a libtool wrapper script on stdout.
-# Don't directly open a file because we may want to
-# incorporate the script contents within a cygwin/mingw
-# wrapper executable.  Must ONLY be called from within
-# func_mode_link because it depends on a number of variables
-# set therein.
-#
-# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR
-# variable will take.  If 'yes', then the emitted script
-# will assume that the directory in which it is stored is
-# the $objdir directory.  This is a cygwin/mingw-specific
-# behavior.
-func_emit_wrapper ()
-{
-	func_emit_wrapper_arg1=no
-	if test -n "$1" ; then
-	  func_emit_wrapper_arg1=$1
-	fi
-
-	# split this up so that func_emit_cwrapperexe_src
-	# can call each part independently.
-	func_emit_wrapper_part1 "${func_emit_wrapper_arg1}"
-	func_emit_wrapper_part2 "${func_emit_wrapper_arg1}"
-}
-
-
-# func_to_host_path arg
-#
-# Convert paths to host format when used with build tools.
-# Intended for use with "native" mingw (where libtool itself
-# is running under the msys shell), or in the following cross-
-# build environments:
-#    $build          $host
-#    mingw (msys)    mingw  [e.g. native]
-#    cygwin          mingw
-#    *nix + wine     mingw
-# where wine is equipped with the `winepath' executable.
-# In the native mingw case, the (msys) shell automatically
-# converts paths for any non-msys applications it launches,
-# but that facility isn't available from inside the cwrapper.
-# Similar accommodations are necessary for $host mingw and
-# $build cygwin.  Calling this function does no harm for other
-# $host/$build combinations not listed above.
-#
-# ARG is the path (on $build) that should be converted to
-# the proper representation for $host. The result is stored
-# in $func_to_host_path_result.
-func_to_host_path ()
-{
-  func_to_host_path_result="$1"
-  if test -n "$1" ; then
-    case $host in
-      *mingw* )
-        lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
-        case $build in
-          *mingw* ) # actually, msys
-            # awkward: cmd appends spaces to result
-            lt_sed_strip_trailing_spaces="s/[ ]*\$//"
-            func_to_host_path_tmp1=`( cmd //c echo "$1" |\
-              $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""`
-            func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\
-              $SED -e "$lt_sed_naive_backslashify"`
-            ;;
-          *cygwin* )
-            func_to_host_path_tmp1=`cygpath -w "$1"`
-            func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\
-              $SED -e "$lt_sed_naive_backslashify"`
-            ;;
-          * )
-            # Unfortunately, winepath does not exit with a non-zero
-            # error code, so we are forced to check the contents of
-            # stdout. On the other hand, if the command is not
-            # found, the shell will set an exit code of 127 and print
-            # *an error message* to stdout. So we must check for both
-            # error code of zero AND non-empty stdout, which explains
-            # the odd construction:
-            func_to_host_path_tmp1=`winepath -w "$1" 2>/dev/null`
-            if test "$?" -eq 0 && test -n "${func_to_host_path_tmp1}"; then
-              func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\
-                $SED -e "$lt_sed_naive_backslashify"`
-            else
-              # Allow warning below.
-              func_to_host_path_result=""
-            fi
-            ;;
-        esac
-        if test -z "$func_to_host_path_result" ; then
-          func_error "Could not determine host path corresponding to"
-          func_error "  '$1'"
-          func_error "Continuing, but uninstalled executables may not work."
-          # Fallback:
-          func_to_host_path_result="$1"
-        fi
-        ;;
-    esac
-  fi
-}
-# end: func_to_host_path
-
-# func_to_host_pathlist arg
-#
-# Convert pathlists to host format when used with build tools.
-# See func_to_host_path(), above. This function supports the
-# following $build/$host combinations (but does no harm for
-# combinations not listed here):
-#    $build          $host
-#    mingw (msys)    mingw  [e.g. native]
-#    cygwin          mingw
-#    *nix + wine     mingw
-#
-# Path separators are also converted from $build format to
-# $host format. If ARG begins or ends with a path separator
-# character, it is preserved (but converted to $host format)
-# on output.
-#
-# ARG is a pathlist (on $build) that should be converted to
-# the proper representation on $host. The result is stored
-# in $func_to_host_pathlist_result.
-func_to_host_pathlist ()
-{
-  func_to_host_pathlist_result="$1"
-  if test -n "$1" ; then
-    case $host in
-      *mingw* )
-        lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
-        # Remove leading and trailing path separator characters from
-        # ARG. msys behavior is inconsistent here, cygpath turns them
-        # into '.;' and ';.', and winepath ignores them completely.
-        func_to_host_pathlist_tmp2="$1"
-        # Once set for this call, this variable should not be
-        # reassigned. It is used in tha fallback case.
-        func_to_host_pathlist_tmp1=`echo "$func_to_host_pathlist_tmp2" |\
-          $SED -e 's|^:*||' -e 's|:*$||'`
-        case $build in
-          *mingw* ) # Actually, msys.
-            # Awkward: cmd appends spaces to result.
-            lt_sed_strip_trailing_spaces="s/[ ]*\$//"
-            func_to_host_pathlist_tmp2=`( cmd //c echo "$func_to_host_pathlist_tmp1" |\
-              $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""`
-            func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\
-              $SED -e "$lt_sed_naive_backslashify"`
-            ;;
-          *cygwin* )
-            func_to_host_pathlist_tmp2=`cygpath -w -p "$func_to_host_pathlist_tmp1"`
-            func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\
-              $SED -e "$lt_sed_naive_backslashify"`
-            ;;
-          * )
-            # unfortunately, winepath doesn't convert pathlists
-            func_to_host_pathlist_result=""
-            func_to_host_pathlist_oldIFS=$IFS
-            IFS=:
-            for func_to_host_pathlist_f in $func_to_host_pathlist_tmp1 ; do
-              IFS=$func_to_host_pathlist_oldIFS
-              if test -n "$func_to_host_pathlist_f" ; then
-                func_to_host_path "$func_to_host_pathlist_f"
-                if test -n "$func_to_host_path_result" ; then
-                  if test -z "$func_to_host_pathlist_result" ; then
-                    func_to_host_pathlist_result="$func_to_host_path_result"
-                  else
-                    func_to_host_pathlist_result="$func_to_host_pathlist_result;$func_to_host_path_result"
-                  fi
-                fi
-              fi
-              IFS=:
-            done
-            IFS=$func_to_host_pathlist_oldIFS
-            ;;
-        esac
-        if test -z "$func_to_host_pathlist_result" ; then
-          func_error "Could not determine the host path(s) corresponding to"
-          func_error "  '$1'"
-          func_error "Continuing, but uninstalled executables may not work."
-          # Fallback. This may break if $1 contains DOS-style drive
-          # specifications. The fix is not to complicate the expression
-          # below, but for the user to provide a working wine installation
-          # with winepath so that path translation in the cross-to-mingw
-          # case works properly.
-          lt_replace_pathsep_nix_to_dos="s|:|;|g"
-          func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp1" |\
-            $SED -e "$lt_replace_pathsep_nix_to_dos"`
-        fi
-        # Now, add the leading and trailing path separators back
-        case "$1" in
-          :* ) func_to_host_pathlist_result=";$func_to_host_pathlist_result"
-            ;;
-        esac
-        case "$1" in
-          *: ) func_to_host_pathlist_result="$func_to_host_pathlist_result;"
-            ;;
-        esac
-        ;;
-    esac
-  fi
-}
-# end: func_to_host_pathlist
-
-# func_emit_cwrapperexe_src
-# emit the source code for a wrapper executable on stdout
-# Must ONLY be called from within func_mode_link because
-# it depends on a number of variable set therein.
-func_emit_cwrapperexe_src ()
-{
-	cat <<EOF
-
-/* $cwrappersource - temporary wrapper executable for $objdir/$outputname
-   Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
-
-   The $output program cannot be directly executed until all the libtool
-   libraries that it depends on are installed.
-
-   This wrapper executable should never be moved out of the build directory.
-   If it is, it will not operate correctly.
-
-   Currently, it simply execs the wrapper *script* "$SHELL $output",
-   but could eventually absorb all of the scripts functionality and
-   exec $objdir/$outputname directly.
-*/
-EOF
-	    cat <<"EOF"
-#include <stdio.h>
-#include <stdlib.h>
-#ifdef _MSC_VER
-# include <direct.h>
-# include <process.h>
-# include <io.h>
-# define setmode _setmode
-#else
-# include <unistd.h>
-# include <stdint.h>
-# ifdef __CYGWIN__
-#  include <io.h>
-#  define HAVE_SETENV
-#  ifdef __STRICT_ANSI__
-char *realpath (const char *, char *);
-int putenv (char *);
-int setenv (const char *, const char *, int);
-#  endif
-# endif
-#endif
-#include <malloc.h>
-#include <stdarg.h>
-#include <assert.h>
-#include <string.h>
-#include <ctype.h>
-#include <errno.h>
-#include <fcntl.h>
-#include <sys/stat.h>
-
-#if defined(PATH_MAX)
-# define LT_PATHMAX PATH_MAX
-#elif defined(MAXPATHLEN)
-# define LT_PATHMAX MAXPATHLEN
-#else
-# define LT_PATHMAX 1024
-#endif
-
-#ifndef S_IXOTH
-# define S_IXOTH 0
-#endif
-#ifndef S_IXGRP
-# define S_IXGRP 0
-#endif
-
-#ifdef _MSC_VER
-# define S_IXUSR _S_IEXEC
-# define stat _stat
-# ifndef _INTPTR_T_DEFINED
-#  define intptr_t int
-# endif
-#endif
-
-#ifndef DIR_SEPARATOR
-# define DIR_SEPARATOR '/'
-# define PATH_SEPARATOR ':'
-#endif
-
-#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
-  defined (__OS2__)
-# define HAVE_DOS_BASED_FILE_SYSTEM
-# define FOPEN_WB "wb"
-# ifndef DIR_SEPARATOR_2
-#  define DIR_SEPARATOR_2 '\\'
-# endif
-# ifndef PATH_SEPARATOR_2
-#  define PATH_SEPARATOR_2 ';'
-# endif
-#endif
-
-#ifndef DIR_SEPARATOR_2
-# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
-#else /* DIR_SEPARATOR_2 */
-# define IS_DIR_SEPARATOR(ch) \
-	(((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
-#endif /* DIR_SEPARATOR_2 */
-
-#ifndef PATH_SEPARATOR_2
-# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR)
-#else /* PATH_SEPARATOR_2 */
-# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2)
-#endif /* PATH_SEPARATOR_2 */
-
-#ifdef __CYGWIN__
-# define FOPEN_WB "wb"
-#endif
-
-#ifndef FOPEN_WB
-# define FOPEN_WB "w"
-#endif
-#ifndef _O_BINARY
-# define _O_BINARY 0
-#endif
-
-#define XMALLOC(type, num)      ((type *) xmalloc ((num) * sizeof(type)))
-#define XFREE(stale) do { \
-  if (stale) { free ((void *) stale); stale = 0; } \
-} while (0)
-
-#undef LTWRAPPER_DEBUGPRINTF
-#if defined DEBUGWRAPPER
-# define LTWRAPPER_DEBUGPRINTF(args) ltwrapper_debugprintf args
-static void
-ltwrapper_debugprintf (const char *fmt, ...)
-{
-    va_list args;
-    va_start (args, fmt);
-    (void) vfprintf (stderr, fmt, args);
-    va_end (args);
-}
-#else
-# define LTWRAPPER_DEBUGPRINTF(args)
-#endif
-
-const char *program_name = NULL;
-
-void *xmalloc (size_t num);
-char *xstrdup (const char *string);
-const char *base_name (const char *name);
-char *find_executable (const char *wrapper);
-char *chase_symlinks (const char *pathspec);
-int make_executable (const char *path);
-int check_executable (const char *path);
-char *strendzap (char *str, const char *pat);
-void lt_fatal (const char *message, ...);
-void lt_setenv (const char *name, const char *value);
-char *lt_extend_str (const char *orig_value, const char *add, int to_end);
-void lt_opt_process_env_set (const char *arg);
-void lt_opt_process_env_prepend (const char *arg);
-void lt_opt_process_env_append (const char *arg);
-int lt_split_name_value (const char *arg, char** name, char** value);
-void lt_update_exe_path (const char *name, const char *value);
-void lt_update_lib_path (const char *name, const char *value);
-
-static const char *script_text_part1 =
-EOF
-
-	    func_emit_wrapper_part1 yes |
-	        $SED -e 's/\([\\"]\)/\\\1/g' \
-	             -e 's/^/  "/' -e 's/$/\\n"/'
-	    echo ";"
-	    cat <<EOF
-
-static const char *script_text_part2 =
-EOF
-	    func_emit_wrapper_part2 yes |
-	        $SED -e 's/\([\\"]\)/\\\1/g' \
-	             -e 's/^/  "/' -e 's/$/\\n"/'
-	    echo ";"
-
-	    cat <<EOF
-const char * MAGIC_EXE = "$magic_exe";
-const char * LIB_PATH_VARNAME = "$shlibpath_var";
-EOF
-
-	    if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
-              func_to_host_pathlist "$temp_rpath"
-	      cat <<EOF
-const char * LIB_PATH_VALUE   = "$func_to_host_pathlist_result";
-EOF
-	    else
-	      cat <<"EOF"
-const char * LIB_PATH_VALUE   = "";
-EOF
-	    fi
-
-	    if test -n "$dllsearchpath"; then
-              func_to_host_pathlist "$dllsearchpath:"
-	      cat <<EOF
-const char * EXE_PATH_VARNAME = "PATH";
-const char * EXE_PATH_VALUE   = "$func_to_host_pathlist_result";
-EOF
-	    else
-	      cat <<"EOF"
-const char * EXE_PATH_VARNAME = "";
-const char * EXE_PATH_VALUE   = "";
-EOF
-	    fi
-
-	    if test "$fast_install" = yes; then
-	      cat <<EOF
-const char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */
-EOF
-	    else
-	      cat <<EOF
-const char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */
-EOF
-	    fi
-
-
-	    cat <<"EOF"
-
-#define LTWRAPPER_OPTION_PREFIX         "--lt-"
-#define LTWRAPPER_OPTION_PREFIX_LENGTH  5
-
-static const size_t opt_prefix_len         = LTWRAPPER_OPTION_PREFIX_LENGTH;
-static const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX;
-
-static const char *dumpscript_opt       = LTWRAPPER_OPTION_PREFIX "dump-script";
-
-static const size_t env_set_opt_len     = LTWRAPPER_OPTION_PREFIX_LENGTH + 7;
-static const char *env_set_opt          = LTWRAPPER_OPTION_PREFIX "env-set";
-  /* argument is putenv-style "foo=bar", value of foo is set to bar */
-
-static const size_t env_prepend_opt_len = LTWRAPPER_OPTION_PREFIX_LENGTH + 11;
-static const char *env_prepend_opt      = LTWRAPPER_OPTION_PREFIX "env-prepend";
-  /* argument is putenv-style "foo=bar", new value of foo is bar${foo} */
-
-static const size_t env_append_opt_len  = LTWRAPPER_OPTION_PREFIX_LENGTH + 10;
-static const char *env_append_opt       = LTWRAPPER_OPTION_PREFIX "env-append";
-  /* argument is putenv-style "foo=bar", new value of foo is ${foo}bar */
-
-int
-main (int argc, char *argv[])
-{
-  char **newargz;
-  int  newargc;
-  char *tmp_pathspec;
-  char *actual_cwrapper_path;
-  char *actual_cwrapper_name;
-  char *target_name;
-  char *lt_argv_zero;
-  intptr_t rval = 127;
-
-  int i;
-
-  program_name = (char *) xstrdup (base_name (argv[0]));
-  LTWRAPPER_DEBUGPRINTF (("(main) argv[0]      : %s\n", argv[0]));
-  LTWRAPPER_DEBUGPRINTF (("(main) program_name : %s\n", program_name));
-
-  /* very simple arg parsing; don't want to rely on getopt */
-  for (i = 1; i < argc; i++)
-    {
-      if (strcmp (argv[i], dumpscript_opt) == 0)
-	{
-EOF
-	    case "$host" in
-	      *mingw* | *cygwin* )
-		# make stdout use "unix" line endings
-		echo "          setmode(1,_O_BINARY);"
-		;;
-	      esac
-
-	    cat <<"EOF"
-	  printf ("%s", script_text_part1);
-	  printf ("%s", script_text_part2);
-	  return 0;
-	}
-    }
-
-  newargz = XMALLOC (char *, argc + 1);
-  tmp_pathspec = find_executable (argv[0]);
-  if (tmp_pathspec == NULL)
-    lt_fatal ("Couldn't find %s", argv[0]);
-  LTWRAPPER_DEBUGPRINTF (("(main) found exe (before symlink chase) at : %s\n",
-			  tmp_pathspec));
-
-  actual_cwrapper_path = chase_symlinks (tmp_pathspec);
-  LTWRAPPER_DEBUGPRINTF (("(main) found exe (after symlink chase) at : %s\n",
-			  actual_cwrapper_path));
-  XFREE (tmp_pathspec);
-
-  actual_cwrapper_name = xstrdup( base_name (actual_cwrapper_path));
-  strendzap (actual_cwrapper_path, actual_cwrapper_name);
-
-  /* wrapper name transforms */
-  strendzap (actual_cwrapper_name, ".exe");
-  tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1);
-  XFREE (actual_cwrapper_name);
-  actual_cwrapper_name = tmp_pathspec;
-  tmp_pathspec = 0;
-
-  /* target_name transforms -- use actual target program name; might have lt- prefix */
-  target_name = xstrdup (base_name (TARGET_PROGRAM_NAME));
-  strendzap (target_name, ".exe");
-  tmp_pathspec = lt_extend_str (target_name, ".exe", 1);
-  XFREE (target_name);
-  target_name = tmp_pathspec;
-  tmp_pathspec = 0;
-
-  LTWRAPPER_DEBUGPRINTF (("(main) libtool target name: %s\n",
-			  target_name));
-EOF
-
-	    cat <<EOF
-  newargz[0] =
-    XMALLOC (char, (strlen (actual_cwrapper_path) +
-		    strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1));
-  strcpy (newargz[0], actual_cwrapper_path);
-  strcat (newargz[0], "$objdir");
-  strcat (newargz[0], "/");
-EOF
-
-	    cat <<"EOF"
-  /* stop here, and copy so we don't have to do this twice */
-  tmp_pathspec = xstrdup (newargz[0]);
-
-  /* do NOT want the lt- prefix here, so use actual_cwrapper_name */
-  strcat (newargz[0], actual_cwrapper_name);
-
-  /* DO want the lt- prefix here if it exists, so use target_name */
-  lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1);
-  XFREE (tmp_pathspec);
-  tmp_pathspec = NULL;
-EOF
-
-	    case $host_os in
-	      mingw*)
-	    cat <<"EOF"
-  {
-    char* p;
-    while ((p = strchr (newargz[0], '\\')) != NULL)
-      {
-	*p = '/';
-      }
-    while ((p = strchr (lt_argv_zero, '\\')) != NULL)
-      {
-	*p = '/';
-      }
-  }
-EOF
-	    ;;
-	    esac
-
-	    cat <<"EOF"
-  XFREE (target_name);
-  XFREE (actual_cwrapper_path);
-  XFREE (actual_cwrapper_name);
-
-  lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */
-  lt_setenv ("DUALCASE", "1");  /* for MSK sh */
-  lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE);
-  lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE);
-
-  newargc=0;
-  for (i = 1; i < argc; i++)
-    {
-      if (strncmp (argv[i], env_set_opt, env_set_opt_len) == 0)
-        {
-          if (argv[i][env_set_opt_len] == '=')
-            {
-              const char *p = argv[i] + env_set_opt_len + 1;
-              lt_opt_process_env_set (p);
-            }
-          else if (argv[i][env_set_opt_len] == '\0' && i + 1 < argc)
-            {
-              lt_opt_process_env_set (argv[++i]); /* don't copy */
-            }
-          else
-            lt_fatal ("%s missing required argument", env_set_opt);
-          continue;
-        }
-      if (strncmp (argv[i], env_prepend_opt, env_prepend_opt_len) == 0)
-        {
-          if (argv[i][env_prepend_opt_len] == '=')
-            {
-              const char *p = argv[i] + env_prepend_opt_len + 1;
-              lt_opt_process_env_prepend (p);
-            }
-          else if (argv[i][env_prepend_opt_len] == '\0' && i + 1 < argc)
-            {
-              lt_opt_process_env_prepend (argv[++i]); /* don't copy */
-            }
-          else
-            lt_fatal ("%s missing required argument", env_prepend_opt);
-          continue;
-        }
-      if (strncmp (argv[i], env_append_opt, env_append_opt_len) == 0)
-        {
-          if (argv[i][env_append_opt_len] == '=')
-            {
-              const char *p = argv[i] + env_append_opt_len + 1;
-              lt_opt_process_env_append (p);
-            }
-          else if (argv[i][env_append_opt_len] == '\0' && i + 1 < argc)
-            {
-              lt_opt_process_env_append (argv[++i]); /* don't copy */
-            }
-          else
-            lt_fatal ("%s missing required argument", env_append_opt);
-          continue;
-        }
-      if (strncmp (argv[i], ltwrapper_option_prefix, opt_prefix_len) == 0)
-        {
-          /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX
-             namespace, but it is not one of the ones we know about and
-             have already dealt with, above (inluding dump-script), then
-             report an error. Otherwise, targets might begin to believe
-             they are allowed to use options in the LTWRAPPER_OPTION_PREFIX
-             namespace. The first time any user complains about this, we'll
-             need to make LTWRAPPER_OPTION_PREFIX a configure-time option
-             or a configure.ac-settable value.
-           */
-          lt_fatal ("Unrecognized option in %s namespace: '%s'",
-                    ltwrapper_option_prefix, argv[i]);
-        }
-      /* otherwise ... */
-      newargz[++newargc] = xstrdup (argv[i]);
-    }
-  newargz[++newargc] = NULL;
-
-  LTWRAPPER_DEBUGPRINTF     (("(main) lt_argv_zero : %s\n", (lt_argv_zero ? lt_argv_zero : "<NULL>")));
-  for (i = 0; i < newargc; i++)
-    {
-      LTWRAPPER_DEBUGPRINTF (("(main) newargz[%d]   : %s\n", i, (newargz[i] ? newargz[i] : "<NULL>")));
-    }
-
-EOF
-
-	    case $host_os in
-	      mingw*)
-		cat <<"EOF"
-  /* execv doesn't actually work on mingw as expected on unix */
-  rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
-  if (rval == -1)
-    {
-      /* failed to start process */
-      LTWRAPPER_DEBUGPRINTF (("(main) failed to launch target \"%s\": errno = %d\n", lt_argv_zero, errno));
-      return 127;
-    }
-  return rval;
-EOF
-		;;
-	      *)
-		cat <<"EOF"
-  execv (lt_argv_zero, newargz);
-  return rval; /* =127, but avoids unused variable warning */
-EOF
-		;;
-	    esac
-
-	    cat <<"EOF"
-}
-
-void *
-xmalloc (size_t num)
-{
-  void *p = (void *) malloc (num);
-  if (!p)
-    lt_fatal ("Memory exhausted");
-
-  return p;
-}
-
-char *
-xstrdup (const char *string)
-{
-  return string ? strcpy ((char *) xmalloc (strlen (string) + 1),
-			  string) : NULL;
-}
-
-const char *
-base_name (const char *name)
-{
-  const char *base;
-
-#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
-  /* Skip over the disk name in MSDOS pathnames. */
-  if (isalpha ((unsigned char) name[0]) && name[1] == ':')
-    name += 2;
-#endif
-
-  for (base = name; *name; name++)
-    if (IS_DIR_SEPARATOR (*name))
-      base = name + 1;
-  return base;
-}
-
-int
-check_executable (const char *path)
-{
-  struct stat st;
-
-  LTWRAPPER_DEBUGPRINTF (("(check_executable)  : %s\n",
-			  path ? (*path ? path : "EMPTY!") : "NULL!"));
-  if ((!path) || (!*path))
-    return 0;
-
-  if ((stat (path, &st) >= 0)
-      && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH)))
-    return 1;
-  else
-    return 0;
-}
-
-int
-make_executable (const char *path)
-{
-  int rval = 0;
-  struct stat st;
-
-  LTWRAPPER_DEBUGPRINTF (("(make_executable)   : %s\n",
-			  path ? (*path ? path : "EMPTY!") : "NULL!"));
-  if ((!path) || (!*path))
-    return 0;
-
-  if (stat (path, &st) >= 0)
-    {
-      rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR);
-    }
-  return rval;
-}
-
-/* Searches for the full path of the wrapper.  Returns
-   newly allocated full path name if found, NULL otherwise
-   Does not chase symlinks, even on platforms that support them.
-*/
-char *
-find_executable (const char *wrapper)
-{
-  int has_slash = 0;
-  const char *p;
-  const char *p_next;
-  /* static buffer for getcwd */
-  char tmp[LT_PATHMAX + 1];
-  int tmp_len;
-  char *concat_name;
-
-  LTWRAPPER_DEBUGPRINTF (("(find_executable)   : %s\n",
-			  wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!"));
-
-  if ((wrapper == NULL) || (*wrapper == '\0'))
-    return NULL;
-
-  /* Absolute path? */
-#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
-  if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':')
-    {
-      concat_name = xstrdup (wrapper);
-      if (check_executable (concat_name))
-	return concat_name;
-      XFREE (concat_name);
-    }
-  else
-    {
-#endif
-      if (IS_DIR_SEPARATOR (wrapper[0]))
-	{
-	  concat_name = xstrdup (wrapper);
-	  if (check_executable (concat_name))
-	    return concat_name;
-	  XFREE (concat_name);
-	}
-#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
-    }
-#endif
-
-  for (p = wrapper; *p; p++)
-    if (*p == '/')
-      {
-	has_slash = 1;
-	break;
-      }
-  if (!has_slash)
-    {
-      /* no slashes; search PATH */
-      const char *path = getenv ("PATH");
-      if (path != NULL)
-	{
-	  for (p = path; *p; p = p_next)
-	    {
-	      const char *q;
-	      size_t p_len;
-	      for (q = p; *q; q++)
-		if (IS_PATH_SEPARATOR (*q))
-		  break;
-	      p_len = q - p;
-	      p_next = (*q == '\0' ? q : q + 1);
-	      if (p_len == 0)
-		{
-		  /* empty path: current directory */
-		  if (getcwd (tmp, LT_PATHMAX) == NULL)
-		    lt_fatal ("getcwd failed");
-		  tmp_len = strlen (tmp);
-		  concat_name =
-		    XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
-		  memcpy (concat_name, tmp, tmp_len);
-		  concat_name[tmp_len] = '/';
-		  strcpy (concat_name + tmp_len + 1, wrapper);
-		}
-	      else
-		{
-		  concat_name =
-		    XMALLOC (char, p_len + 1 + strlen (wrapper) + 1);
-		  memcpy (concat_name, p, p_len);
-		  concat_name[p_len] = '/';
-		  strcpy (concat_name + p_len + 1, wrapper);
-		}
-	      if (check_executable (concat_name))
-		return concat_name;
-	      XFREE (concat_name);
-	    }
-	}
-      /* not found in PATH; assume curdir */
-    }
-  /* Relative path | not found in path: prepend cwd */
-  if (getcwd (tmp, LT_PATHMAX) == NULL)
-    lt_fatal ("getcwd failed");
-  tmp_len = strlen (tmp);
-  concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
-  memcpy (concat_name, tmp, tmp_len);
-  concat_name[tmp_len] = '/';
-  strcpy (concat_name + tmp_len + 1, wrapper);
-
-  if (check_executable (concat_name))
-    return concat_name;
-  XFREE (concat_name);
-  return NULL;
-}
-
-char *
-chase_symlinks (const char *pathspec)
-{
-#ifndef S_ISLNK
-  return xstrdup (pathspec);
-#else
-  char buf[LT_PATHMAX];
-  struct stat s;
-  char *tmp_pathspec = xstrdup (pathspec);
-  char *p;
-  int has_symlinks = 0;
-  while (strlen (tmp_pathspec) && !has_symlinks)
-    {
-      LTWRAPPER_DEBUGPRINTF (("checking path component for symlinks: %s\n",
-			      tmp_pathspec));
-      if (lstat (tmp_pathspec, &s) == 0)
-	{
-	  if (S_ISLNK (s.st_mode) != 0)
-	    {
-	      has_symlinks = 1;
-	      break;
-	    }
-
-	  /* search backwards for last DIR_SEPARATOR */
-	  p = tmp_pathspec + strlen (tmp_pathspec) - 1;
-	  while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
-	    p--;
-	  if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
-	    {
-	      /* no more DIR_SEPARATORS left */
-	      break;
-	    }
-	  *p = '\0';
-	}
-      else
-	{
-	  char *errstr = strerror (errno);
-	  lt_fatal ("Error accessing file %s (%s)", tmp_pathspec, errstr);
-	}
-    }
-  XFREE (tmp_pathspec);
-
-  if (!has_symlinks)
-    {
-      return xstrdup (pathspec);
-    }
-
-  tmp_pathspec = realpath (pathspec, buf);
-  if (tmp_pathspec == 0)
-    {
-      lt_fatal ("Could not follow symlinks for %s", pathspec);
-    }
-  return xstrdup (tmp_pathspec);
-#endif
-}
-
-char *
-strendzap (char *str, const char *pat)
-{
-  size_t len, patlen;
-
-  assert (str != NULL);
-  assert (pat != NULL);
-
-  len = strlen (str);
-  patlen = strlen (pat);
-
-  if (patlen <= len)
-    {
-      str += len - patlen;
-      if (strcmp (str, pat) == 0)
-	*str = '\0';
-    }
-  return str;
-}
-
-static void
-lt_error_core (int exit_status, const char *mode,
-	       const char *message, va_list ap)
-{
-  fprintf (stderr, "%s: %s: ", program_name, mode);
-  vfprintf (stderr, message, ap);
-  fprintf (stderr, ".\n");
-
-  if (exit_status >= 0)
-    exit (exit_status);
-}
-
-void
-lt_fatal (const char *message, ...)
-{
-  va_list ap;
-  va_start (ap, message);
-  lt_error_core (EXIT_FAILURE, "FATAL", message, ap);
-  va_end (ap);
-}
-
-void
-lt_setenv (const char *name, const char *value)
-{
-  LTWRAPPER_DEBUGPRINTF (("(lt_setenv) setting '%s' to '%s'\n",
-                          (name ? name : "<NULL>"),
-                          (value ? value : "<NULL>")));
-  {
-#ifdef HAVE_SETENV
-    /* always make a copy, for consistency with !HAVE_SETENV */
-    char *str = xstrdup (value);
-    setenv (name, str, 1);
-#else
-    int len = strlen (name) + 1 + strlen (value) + 1;
-    char *str = XMALLOC (char, len);
-    sprintf (str, "%s=%s", name, value);
-    if (putenv (str) != EXIT_SUCCESS)
-      {
-        XFREE (str);
-      }
-#endif
-  }
-}
-
-char *
-lt_extend_str (const char *orig_value, const char *add, int to_end)
-{
-  char *new_value;
-  if (orig_value && *orig_value)
-    {
-      int orig_value_len = strlen (orig_value);
-      int add_len = strlen (add);
-      new_value = XMALLOC (char, add_len + orig_value_len + 1);
-      if (to_end)
-        {
-          strcpy (new_value, orig_value);
-          strcpy (new_value + orig_value_len, add);
-        }
-      else
-        {
-          strcpy (new_value, add);
-          strcpy (new_value + add_len, orig_value);
-        }
-    }
-  else
-    {
-      new_value = xstrdup (add);
-    }
-  return new_value;
-}
-
-int
-lt_split_name_value (const char *arg, char** name, char** value)
-{
-  const char *p;
-  int len;
-  if (!arg || !*arg)
-    return 1;
-
-  p = strchr (arg, (int)'=');
-
-  if (!p)
-    return 1;
-
-  *value = xstrdup (++p);
-
-  len = strlen (arg) - strlen (*value);
-  *name = XMALLOC (char, len);
-  strncpy (*name, arg, len-1);
-  (*name)[len - 1] = '\0';
-
-  return 0;
-}
-
-void
-lt_opt_process_env_set (const char *arg)
-{
-  char *name = NULL;
-  char *value = NULL;
-
-  if (lt_split_name_value (arg, &name, &value) != 0)
-    {
-      XFREE (name);
-      XFREE (value);
-      lt_fatal ("bad argument for %s: '%s'", env_set_opt, arg);
-    }
-
-  lt_setenv (name, value);
-  XFREE (name);
-  XFREE (value);
-}
-
-void
-lt_opt_process_env_prepend (const char *arg)
-{
-  char *name = NULL;
-  char *value = NULL;
-  char *new_value = NULL;
-
-  if (lt_split_name_value (arg, &name, &value) != 0)
-    {
-      XFREE (name);
-      XFREE (value);
-      lt_fatal ("bad argument for %s: '%s'", env_prepend_opt, arg);
-    }
-
-  new_value = lt_extend_str (getenv (name), value, 0);
-  lt_setenv (name, new_value);
-  XFREE (new_value);
-  XFREE (name);
-  XFREE (value);
-}
-
-void
-lt_opt_process_env_append (const char *arg)
-{
-  char *name = NULL;
-  char *value = NULL;
-  char *new_value = NULL;
-
-  if (lt_split_name_value (arg, &name, &value) != 0)
-    {
-      XFREE (name);
-      XFREE (value);
-      lt_fatal ("bad argument for %s: '%s'", env_append_opt, arg);
-    }
-
-  new_value = lt_extend_str (getenv (name), value, 1);
-  lt_setenv (name, new_value);
-  XFREE (new_value);
-  XFREE (name);
-  XFREE (value);
-}
-
-void
-lt_update_exe_path (const char *name, const char *value)
-{
-  LTWRAPPER_DEBUGPRINTF (("(lt_update_exe_path) modifying '%s' by prepending '%s'\n",
-                          (name ? name : "<NULL>"),
-                          (value ? value : "<NULL>")));
-
-  if (name && *name && value && *value)
-    {
-      char *new_value = lt_extend_str (getenv (name), value, 0);
-      /* some systems can't cope with a ':'-terminated path #' */
-      int len = strlen (new_value);
-      while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1]))
-        {
-          new_value[len-1] = '\0';
-        }
-      lt_setenv (name, new_value);
-      XFREE (new_value);
-    }
-}
-
-void
-lt_update_lib_path (const char *name, const char *value)
-{
-  LTWRAPPER_DEBUGPRINTF (("(lt_update_lib_path) modifying '%s' by prepending '%s'\n",
-                          (name ? name : "<NULL>"),
-                          (value ? value : "<NULL>")));
-
-  if (name && *name && value && *value)
-    {
-      char *new_value = lt_extend_str (getenv (name), value, 0);
-      lt_setenv (name, new_value);
-      XFREE (new_value);
-    }
-}
-
-
-EOF
-}
-# end: func_emit_cwrapperexe_src
-
-# func_mode_link arg...
-func_mode_link ()
-{
-    $opt_debug
-    case $host in
-    *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
-      # It is impossible to link a dll without this setting, and
-      # we shouldn't force the makefile maintainer to figure out
-      # which system we are compiling for in order to pass an extra
-      # flag for every libtool invocation.
-      # allow_undefined=no
-
-      # FIXME: Unfortunately, there are problems with the above when trying
-      # to make a dll which has undefined symbols, in which case not
-      # even a static library is built.  For now, we need to specify
-      # -no-undefined on the libtool link line when we can be certain
-      # that all symbols are satisfied, otherwise we get a static library.
-      allow_undefined=yes
-      ;;
-    *)
-      allow_undefined=yes
-      ;;
-    esac
-    libtool_args=$nonopt
-    base_compile="$nonopt $@"
-    compile_command=$nonopt
-    finalize_command=$nonopt
-
-    compile_rpath=
-    finalize_rpath=
-    compile_shlibpath=
-    finalize_shlibpath=
-    convenience=
-    old_convenience=
-    deplibs=
-    old_deplibs=
-    compiler_flags=
-    linker_flags=
-    dllsearchpath=
-    lib_search_path=`pwd`
-    inst_prefix_dir=
-    new_inherited_linker_flags=
-
-    avoid_version=no
-    dlfiles=
-    dlprefiles=
-    dlself=no
-    export_dynamic=no
-    export_symbols=
-    export_symbols_regex=
-    generated=
-    libobjs=
-    ltlibs=
-    module=no
-    no_install=no
-    objs=
-    non_pic_objects=
-    precious_files_regex=
-    prefer_static_libs=no
-    preload=no
-    prev=
-    prevarg=
-    release=
-    rpath=
-    xrpath=
-    perm_rpath=
-    temp_rpath=
-    thread_safe=no
-    vinfo=
-    vinfo_number=no
-    weak_libs=
-    single_module="${wl}-single_module"
-    func_infer_tag $base_compile
-
-    # We need to know -static, to get the right output filenames.
-    for arg
-    do
-      case $arg in
-      -shared)
-	test "$build_libtool_libs" != yes && \
-	  func_fatal_configuration "can not build a shared library"
-	build_old_libs=no
-	break
-	;;
-      -all-static | -static | -static-libtool-libs)
-	case $arg in
-	-all-static)
-	  if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
-	    func_warning "complete static linking is impossible in this configuration"
-	  fi
-	  if test -n "$link_static_flag"; then
-	    dlopen_self=$dlopen_self_static
-	  fi
-	  prefer_static_libs=yes
-	  ;;
-	-static)
-	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
-	    dlopen_self=$dlopen_self_static
-	  fi
-	  prefer_static_libs=built
-	  ;;
-	-static-libtool-libs)
-	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
-	    dlopen_self=$dlopen_self_static
-	  fi
-	  prefer_static_libs=yes
-	  ;;
-	esac
-	build_libtool_libs=no
-	build_old_libs=yes
-	break
-	;;
-      esac
-    done
-
-    # See if our shared archives depend on static archives.
-    test -n "$old_archive_from_new_cmds" && build_old_libs=yes
-
-    # Go through the arguments, transforming them on the way.
-    while test "$#" -gt 0; do
-      arg="$1"
-      shift
-      func_quote_for_eval "$arg"
-      qarg=$func_quote_for_eval_unquoted_result
-      func_append libtool_args " $func_quote_for_eval_result"
-
-      # If the previous option needs an argument, assign it.
-      if test -n "$prev"; then
-	case $prev in
-	output)
-	  func_append compile_command " @OUTPUT@"
-	  func_append finalize_command " @OUTPUT@"
-	  ;;
-	esac
-
-	case $prev in
-	dlfiles|dlprefiles)
-	  if test "$preload" = no; then
-	    # Add the symbol object into the linking commands.
-	    func_append compile_command " @SYMFILE@"
-	    func_append finalize_command " @SYMFILE@"
-	    preload=yes
-	  fi
-	  case $arg in
-	  *.la | *.lo) ;;  # We handle these cases below.
-	  force)
-	    if test "$dlself" = no; then
-	      dlself=needless
-	      export_dynamic=yes
-	    fi
-	    prev=
-	    continue
-	    ;;
-	  self)
-	    if test "$prev" = dlprefiles; then
-	      dlself=yes
-	    elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
-	      dlself=yes
-	    else
-	      dlself=needless
-	      export_dynamic=yes
-	    fi
-	    prev=
-	    continue
-	    ;;
-	  *)
-	    if test "$prev" = dlfiles; then
-	      dlfiles="$dlfiles $arg"
-	    else
-	      dlprefiles="$dlprefiles $arg"
-	    fi
-	    prev=
-	    continue
-	    ;;
-	  esac
-	  ;;
-	expsyms)
-	  export_symbols="$arg"
-	  test -f "$arg" \
-	    || func_fatal_error "symbol file \`$arg' does not exist"
-	  prev=
-	  continue
-	  ;;
-	expsyms_regex)
-	  export_symbols_regex="$arg"
-	  prev=
-	  continue
-	  ;;
-	framework)
-	  case $host in
-	    *-*-darwin*)
-	      case "$deplibs " in
-		*" $qarg.ltframework "*) ;;
-		*) deplibs="$deplibs $qarg.ltframework" # this is fixed later
-		   ;;
-	      esac
-	      ;;
-	  esac
-	  prev=
-	  continue
-	  ;;
-	inst_prefix)
-	  inst_prefix_dir="$arg"
-	  prev=
-	  continue
-	  ;;
-	objectlist)
-	  if test -f "$arg"; then
-	    save_arg=$arg
-	    moreargs=
-	    for fil in `cat "$save_arg"`
-	    do
-#	      moreargs="$moreargs $fil"
-	      arg=$fil
-	      # A libtool-controlled object.
-
-	      # Check to see that this really is a libtool object.
-	      if func_lalib_unsafe_p "$arg"; then
-		pic_object=
-		non_pic_object=
-
-		# Read the .lo file
-		func_source "$arg"
-
-		if test -z "$pic_object" ||
-		   test -z "$non_pic_object" ||
-		   test "$pic_object" = none &&
-		   test "$non_pic_object" = none; then
-		  func_fatal_error "cannot find name of object for \`$arg'"
-		fi
-
-		# Extract subdirectory from the argument.
-		func_dirname "$arg" "/" ""
-		xdir="$func_dirname_result"
-
-		if test "$pic_object" != none; then
-		  # Prepend the subdirectory the object is found in.
-		  pic_object="$xdir$pic_object"
-
-		  if test "$prev" = dlfiles; then
-		    if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
-		      dlfiles="$dlfiles $pic_object"
-		      prev=
-		      continue
-		    else
-		      # If libtool objects are unsupported, then we need to preload.
-		      prev=dlprefiles
-		    fi
-		  fi
-
-		  # CHECK ME:  I think I busted this.  -Ossama
-		  if test "$prev" = dlprefiles; then
-		    # Preload the old-style object.
-		    dlprefiles="$dlprefiles $pic_object"
-		    prev=
-		  fi
-
-		  # A PIC object.
-		  func_append libobjs " $pic_object"
-		  arg="$pic_object"
-		fi
-
-		# Non-PIC object.
-		if test "$non_pic_object" != none; then
-		  # Prepend the subdirectory the object is found in.
-		  non_pic_object="$xdir$non_pic_object"
-
-		  # A standard non-PIC object
-		  func_append non_pic_objects " $non_pic_object"
-		  if test -z "$pic_object" || test "$pic_object" = none ; then
-		    arg="$non_pic_object"
-		  fi
-		else
-		  # If the PIC object exists, use it instead.
-		  # $xdir was prepended to $pic_object above.
-		  non_pic_object="$pic_object"
-		  func_append non_pic_objects " $non_pic_object"
-		fi
-	      else
-		# Only an error if not doing a dry-run.
-		if $opt_dry_run; then
-		  # Extract subdirectory from the argument.
-		  func_dirname "$arg" "/" ""
-		  xdir="$func_dirname_result"
-
-		  func_lo2o "$arg"
-		  pic_object=$xdir$objdir/$func_lo2o_result
-		  non_pic_object=$xdir$func_lo2o_result
-		  func_append libobjs " $pic_object"
-		  func_append non_pic_objects " $non_pic_object"
-	        else
-		  func_fatal_error "\`$arg' is not a valid libtool object"
-		fi
-	      fi
-	    done
-	  else
-	    func_fatal_error "link input file \`$arg' does not exist"
-	  fi
-	  arg=$save_arg
-	  prev=
-	  continue
-	  ;;
-	precious_regex)
-	  precious_files_regex="$arg"
-	  prev=
-	  continue
-	  ;;
-	release)
-	  release="-$arg"
-	  prev=
-	  continue
-	  ;;
-	rpath | xrpath)
-	  # We need an absolute path.
-	  case $arg in
-	  [\\/]* | [A-Za-z]:[\\/]*) ;;
-	  *)
-	    func_fatal_error "only absolute run-paths are allowed"
-	    ;;
-	  esac
-	  if test "$prev" = rpath; then
-	    case "$rpath " in
-	    *" $arg "*) ;;
-	    *) rpath="$rpath $arg" ;;
-	    esac
-	  else
-	    case "$xrpath " in
-	    *" $arg "*) ;;
-	    *) xrpath="$xrpath $arg" ;;
-	    esac
-	  fi
-	  prev=
-	  continue
-	  ;;
-	shrext)
-	  shrext_cmds="$arg"
-	  prev=
-	  continue
-	  ;;
-	weak)
-	  weak_libs="$weak_libs $arg"
-	  prev=
-	  continue
-	  ;;
-	xcclinker)
-	  linker_flags="$linker_flags $qarg"
-	  compiler_flags="$compiler_flags $qarg"
-	  prev=
-	  func_append compile_command " $qarg"
-	  func_append finalize_command " $qarg"
-	  continue
-	  ;;
-	xcompiler)
-	  compiler_flags="$compiler_flags $qarg"
-	  prev=
-	  func_append compile_command " $qarg"
-	  func_append finalize_command " $qarg"
-	  continue
-	  ;;
-	xlinker)
-	  linker_flags="$linker_flags $qarg"
-	  compiler_flags="$compiler_flags $wl$qarg"
-	  prev=
-	  func_append compile_command " $wl$qarg"
-	  func_append finalize_command " $wl$qarg"
-	  continue
-	  ;;
-	*)
-	  eval "$prev=\"\$arg\""
-	  prev=
-	  continue
-	  ;;
-	esac
-      fi # test -n "$prev"
-
-      prevarg="$arg"
-
-      case $arg in
-      -all-static)
-	if test -n "$link_static_flag"; then
-	  # See comment for -static flag below, for more details.
-	  func_append compile_command " $link_static_flag"
-	  func_append finalize_command " $link_static_flag"
-	fi
-	continue
-	;;
-
-      -allow-undefined)
-	# FIXME: remove this flag sometime in the future.
-	func_fatal_error "\`-allow-undefined' must not be used because it is the default"
-	;;
-
-      -avoid-version)
-	avoid_version=yes
-	continue
-	;;
-
-      -dlopen)
-	prev=dlfiles
-	continue
-	;;
-
-      -dlpreopen)
-	prev=dlprefiles
-	continue
-	;;
-
-      -export-dynamic)
-	export_dynamic=yes
-	continue
-	;;
-
-      -export-symbols | -export-symbols-regex)
-	if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
-	  func_fatal_error "more than one -exported-symbols argument is not allowed"
-	fi
-	if test "X$arg" = "X-export-symbols"; then
-	  prev=expsyms
-	else
-	  prev=expsyms_regex
-	fi
-	continue
-	;;
-
-      -framework)
-	prev=framework
-	continue
-	;;
-
-      -inst-prefix-dir)
-	prev=inst_prefix
-	continue
-	;;
-
-      # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
-      # so, if we see these flags be careful not to treat them like -L
-      -L[A-Z][A-Z]*:*)
-	case $with_gcc/$host in
-	no/*-*-irix* | /*-*-irix*)
-	  func_append compile_command " $arg"
-	  func_append finalize_command " $arg"
-	  ;;
-	esac
-	continue
-	;;
-
-      -L*)
-	func_stripname '-L' '' "$arg"
-	dir=$func_stripname_result
-	if test -z "$dir"; then
-	  if test "$#" -gt 0; then
-	    func_fatal_error "require no space between \`-L' and \`$1'"
-	  else
-	    func_fatal_error "need path for \`-L' option"
-	  fi
-	fi
-	# We need an absolute path.
-	case $dir in
-	[\\/]* | [A-Za-z]:[\\/]*) ;;
-	*)
-	  absdir=`cd "$dir" && pwd`
-	  test -z "$absdir" && \
-	    func_fatal_error "cannot determine absolute directory name of \`$dir'"
-	  dir="$absdir"
-	  ;;
-	esac
-	case "$deplibs " in
-	*" -L$dir "*) ;;
-	*)
-	  deplibs="$deplibs -L$dir"
-	  lib_search_path="$lib_search_path $dir"
-	  ;;
-	esac
-	case $host in
-	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
-	  testbindir=`$ECHO "X$dir" | $Xsed -e 's*/lib$*/bin*'`
-	  case :$dllsearchpath: in
-	  *":$dir:"*) ;;
-	  ::) dllsearchpath=$dir;;
-	  *) dllsearchpath="$dllsearchpath:$dir";;
-	  esac
-	  case :$dllsearchpath: in
-	  *":$testbindir:"*) ;;
-	  ::) dllsearchpath=$testbindir;;
-	  *) dllsearchpath="$dllsearchpath:$testbindir";;
-	  esac
-	  ;;
-	esac
-	continue
-	;;
-
-      -l*)
-	if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
-	  case $host in
-	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc*)
-	    # These systems don't actually have a C or math library (as such)
-	    continue
-	    ;;
-	  *-*-os2*)
-	    # These systems don't actually have a C library (as such)
-	    test "X$arg" = "X-lc" && continue
-	    ;;
-	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
-	    # Do not include libc due to us having libc/libc_r.
-	    test "X$arg" = "X-lc" && continue
-	    ;;
-	  *-*-rhapsody* | *-*-darwin1.[012])
-	    # Rhapsody C and math libraries are in the System framework
-	    deplibs="$deplibs System.ltframework"
-	    continue
-	    ;;
-	  *-*-sco3.2v5* | *-*-sco5v6*)
-	    # Causes problems with __ctype
-	    test "X$arg" = "X-lc" && continue
-	    ;;
-	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
-	    # Compiler inserts libc in the correct place for threads to work
-	    test "X$arg" = "X-lc" && continue
-	    ;;
-	  esac
-	elif test "X$arg" = "X-lc_r"; then
-	 case $host in
-	 *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
-	   # Do not include libc_r directly, use -pthread flag.
-	   continue
-	   ;;
-	 esac
-	fi
-	deplibs="$deplibs $arg"
-	continue
-	;;
-
-      -module)
-	module=yes
-	continue
-	;;
-
-      # Tru64 UNIX uses -model [arg] to determine the layout of C++
-      # classes, name mangling, and exception handling.
-      # Darwin uses the -arch flag to determine output architecture.
-      -model|-arch|-isysroot)
-	compiler_flags="$compiler_flags $arg"
-	func_append compile_command " $arg"
-	func_append finalize_command " $arg"
-	prev=xcompiler
-	continue
-	;;
-
-      -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
-	compiler_flags="$compiler_flags $arg"
-	func_append compile_command " $arg"
-	func_append finalize_command " $arg"
-	case "$new_inherited_linker_flags " in
-	    *" $arg "*) ;;
-	    * ) new_inherited_linker_flags="$new_inherited_linker_flags $arg" ;;
-	esac
-	continue
-	;;
-
-      -multi_module)
-	single_module="${wl}-multi_module"
-	continue
-	;;
-
-      -no-fast-install)
-	fast_install=no
-	continue
-	;;
-
-      -no-install)
-	case $host in
-	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*)
-	  # The PATH hackery in wrapper scripts is required on Windows
-	  # and Darwin in order for the loader to find any dlls it needs.
-	  func_warning "\`-no-install' is ignored for $host"
-	  func_warning "assuming \`-no-fast-install' instead"
-	  fast_install=no
-	  ;;
-	*) no_install=yes ;;
-	esac
-	continue
-	;;
-
-      -no-undefined)
-	allow_undefined=no
-	continue
-	;;
-
-      -objectlist)
-	prev=objectlist
-	continue
-	;;
-
-      -o) prev=output ;;
-
-      -precious-files-regex)
-	prev=precious_regex
-	continue
-	;;
-
-      -release)
-	prev=release
-	continue
-	;;
-
-      -rpath)
-	prev=rpath
-	continue
-	;;
-
-      -R)
-	prev=xrpath
-	continue
-	;;
-
-      -R*)
-	func_stripname '-R' '' "$arg"
-	dir=$func_stripname_result
-	# We need an absolute path.
-	case $dir in
-	[\\/]* | [A-Za-z]:[\\/]*) ;;
-	*)
-	  func_fatal_error "only absolute run-paths are allowed"
-	  ;;
-	esac
-	case "$xrpath " in
-	*" $dir "*) ;;
-	*) xrpath="$xrpath $dir" ;;
-	esac
-	continue
-	;;
-
-      -shared)
-	# The effects of -shared are defined in a previous loop.
-	continue
-	;;
-
-      -shrext)
-	prev=shrext
-	continue
-	;;
-
-      -static | -static-libtool-libs)
-	# The effects of -static are defined in a previous loop.
-	# We used to do the same as -all-static on platforms that
-	# didn't have a PIC flag, but the assumption that the effects
-	# would be equivalent was wrong.  It would break on at least
-	# Digital Unix and AIX.
-	continue
-	;;
-
-      -thread-safe)
-	thread_safe=yes
-	continue
-	;;
-
-      -version-info)
-	prev=vinfo
-	continue
-	;;
-
-      -version-number)
-	prev=vinfo
-	vinfo_number=yes
-	continue
-	;;
-
-      -weak)
-        prev=weak
-	continue
-	;;
-
-      -Wc,*)
-	func_stripname '-Wc,' '' "$arg"
-	args=$func_stripname_result
-	arg=
-	save_ifs="$IFS"; IFS=','
-	for flag in $args; do
-	  IFS="$save_ifs"
-          func_quote_for_eval "$flag"
-	  arg="$arg $wl$func_quote_for_eval_result"
-	  compiler_flags="$compiler_flags $func_quote_for_eval_result"
-	done
-	IFS="$save_ifs"
-	func_stripname ' ' '' "$arg"
-	arg=$func_stripname_result
-	;;
-
-      -Wl,*)
-	func_stripname '-Wl,' '' "$arg"
-	args=$func_stripname_result
-	arg=
-	save_ifs="$IFS"; IFS=','
-	for flag in $args; do
-	  IFS="$save_ifs"
-          func_quote_for_eval "$flag"
-	  arg="$arg $wl$func_quote_for_eval_result"
-	  compiler_flags="$compiler_flags $wl$func_quote_for_eval_result"
-	  linker_flags="$linker_flags $func_quote_for_eval_result"
-	done
-	IFS="$save_ifs"
-	func_stripname ' ' '' "$arg"
-	arg=$func_stripname_result
-	;;
-
-      -Xcompiler)
-	prev=xcompiler
-	continue
-	;;
-
-      -Xlinker)
-	prev=xlinker
-	continue
-	;;
-
-      -XCClinker)
-	prev=xcclinker
-	continue
-	;;
-
-      # -msg_* for osf cc
-      -msg_*)
-	func_quote_for_eval "$arg"
-	arg="$func_quote_for_eval_result"
-	;;
-
-      # -64, -mips[0-9] enable 64-bit mode on the SGI compiler
-      # -r[0-9][0-9]* specifies the processor on the SGI compiler
-      # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler
-      # +DA*, +DD* enable 64-bit mode on the HP compiler
-      # -q* pass through compiler args for the IBM compiler
-      # -m*, -t[45]*, -txscale* pass through architecture-specific
-      # compiler args for GCC
-      # -F/path gives path to uninstalled frameworks, gcc on darwin
-      # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC
-      # @file GCC response files
-      -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
-      -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*)
-        func_quote_for_eval "$arg"
-	arg="$func_quote_for_eval_result"
-        func_append compile_command " $arg"
-        func_append finalize_command " $arg"
-        compiler_flags="$compiler_flags $arg"
-        continue
-        ;;
-
-      # Some other compiler flag.
-      -* | +*)
-        func_quote_for_eval "$arg"
-	arg="$func_quote_for_eval_result"
-	;;
-
-      *.$objext)
-	# A standard object.
-	objs="$objs $arg"
-	;;
-
-      *.lo)
-	# A libtool-controlled object.
-
-	# Check to see that this really is a libtool object.
-	if func_lalib_unsafe_p "$arg"; then
-	  pic_object=
-	  non_pic_object=
-
-	  # Read the .lo file
-	  func_source "$arg"
-
-	  if test -z "$pic_object" ||
-	     test -z "$non_pic_object" ||
-	     test "$pic_object" = none &&
-	     test "$non_pic_object" = none; then
-	    func_fatal_error "cannot find name of object for \`$arg'"
-	  fi
-
-	  # Extract subdirectory from the argument.
-	  func_dirname "$arg" "/" ""
-	  xdir="$func_dirname_result"
-
-	  if test "$pic_object" != none; then
-	    # Prepend the subdirectory the object is found in.
-	    pic_object="$xdir$pic_object"
-
-	    if test "$prev" = dlfiles; then
-	      if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
-		dlfiles="$dlfiles $pic_object"
-		prev=
-		continue
-	      else
-		# If libtool objects are unsupported, then we need to preload.
-		prev=dlprefiles
-	      fi
-	    fi
-
-	    # CHECK ME:  I think I busted this.  -Ossama
-	    if test "$prev" = dlprefiles; then
-	      # Preload the old-style object.
-	      dlprefiles="$dlprefiles $pic_object"
-	      prev=
-	    fi
-
-	    # A PIC object.
-	    func_append libobjs " $pic_object"
-	    arg="$pic_object"
-	  fi
-
-	  # Non-PIC object.
-	  if test "$non_pic_object" != none; then
-	    # Prepend the subdirectory the object is found in.
-	    non_pic_object="$xdir$non_pic_object"
-
-	    # A standard non-PIC object
-	    func_append non_pic_objects " $non_pic_object"
-	    if test -z "$pic_object" || test "$pic_object" = none ; then
-	      arg="$non_pic_object"
-	    fi
-	  else
-	    # If the PIC object exists, use it instead.
-	    # $xdir was prepended to $pic_object above.
-	    non_pic_object="$pic_object"
-	    func_append non_pic_objects " $non_pic_object"
-	  fi
-	else
-	  # Only an error if not doing a dry-run.
-	  if $opt_dry_run; then
-	    # Extract subdirectory from the argument.
-	    func_dirname "$arg" "/" ""
-	    xdir="$func_dirname_result"
-
-	    func_lo2o "$arg"
-	    pic_object=$xdir$objdir/$func_lo2o_result
-	    non_pic_object=$xdir$func_lo2o_result
-	    func_append libobjs " $pic_object"
-	    func_append non_pic_objects " $non_pic_object"
-	  else
-	    func_fatal_error "\`$arg' is not a valid libtool object"
-	  fi
-	fi
-	;;
-
-      *.$libext)
-	# An archive.
-	deplibs="$deplibs $arg"
-	old_deplibs="$old_deplibs $arg"
-	continue
-	;;
-
-      *.la)
-	# A libtool-controlled library.
-
-	if test "$prev" = dlfiles; then
-	  # This library was specified with -dlopen.
-	  dlfiles="$dlfiles $arg"
-	  prev=
-	elif test "$prev" = dlprefiles; then
-	  # The library was specified with -dlpreopen.
-	  dlprefiles="$dlprefiles $arg"
-	  prev=
-	else
-	  deplibs="$deplibs $arg"
-	fi
-	continue
-	;;
-
-      # Some other compiler argument.
-      *)
-	# Unknown arguments in both finalize_command and compile_command need
-	# to be aesthetically quoted because they are evaled later.
-	func_quote_for_eval "$arg"
-	arg="$func_quote_for_eval_result"
-	;;
-      esac # arg
-
-      # Now actually substitute the argument into the commands.
-      if test -n "$arg"; then
-	func_append compile_command " $arg"
-	func_append finalize_command " $arg"
-      fi
-    done # argument parsing loop
-
-    test -n "$prev" && \
-      func_fatal_help "the \`$prevarg' option requires an argument"
-
-    if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
-      eval arg=\"$export_dynamic_flag_spec\"
-      func_append compile_command " $arg"
-      func_append finalize_command " $arg"
-    fi
-
-    oldlibs=
-    # calculate the name of the file, without its directory
-    func_basename "$output"
-    outputname="$func_basename_result"
-    libobjs_save="$libobjs"
-
-    if test -n "$shlibpath_var"; then
-      # get the directories listed in $shlibpath_var
-      eval shlib_search_path=\`\$ECHO \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\`
-    else
-      shlib_search_path=
-    fi
-    eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
-    eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
-
-    func_dirname "$output" "/" ""
-    output_objdir="$func_dirname_result$objdir"
-    # Create the object directory.
-    func_mkdir_p "$output_objdir"
-
-    # Determine the type of output
-    case $output in
-    "")
-      func_fatal_help "you must specify an output file"
-      ;;
-    *.$libext) linkmode=oldlib ;;
-    *.lo | *.$objext) linkmode=obj ;;
-    *.la) linkmode=lib ;;
-    *) linkmode=prog ;; # Anything else should be a program.
-    esac
-
-    specialdeplibs=
-
-    libs=
-    # Find all interdependent deplibs by searching for libraries
-    # that are linked more than once (e.g. -la -lb -la)
-    for deplib in $deplibs; do
-      if $opt_duplicate_deps ; then
-	case "$libs " in
-	*" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
-	esac
-      fi
-      libs="$libs $deplib"
-    done
-
-    if test "$linkmode" = lib; then
-      libs="$predeps $libs $compiler_lib_search_path $postdeps"
-
-      # Compute libraries that are listed more than once in $predeps
-      # $postdeps and mark them as special (i.e., whose duplicates are
-      # not to be eliminated).
-      pre_post_deps=
-      if $opt_duplicate_compiler_generated_deps; then
-	for pre_post_dep in $predeps $postdeps; do
-	  case "$pre_post_deps " in
-	  *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;;
-	  esac
-	  pre_post_deps="$pre_post_deps $pre_post_dep"
-	done
-      fi
-      pre_post_deps=
-    fi
-
-    deplibs=
-    newdependency_libs=
-    newlib_search_path=
-    need_relink=no # whether we're linking any uninstalled libtool libraries
-    notinst_deplibs= # not-installed libtool libraries
-    notinst_path= # paths that contain not-installed libtool libraries
-
-    case $linkmode in
-    lib)
-	passes="conv dlpreopen link"
-	for file in $dlfiles $dlprefiles; do
-	  case $file in
-	  *.la) ;;
-	  *)
-	    func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file"
-	    ;;
-	  esac
-	done
-	;;
-    prog)
-	compile_deplibs=
-	finalize_deplibs=
-	alldeplibs=no
-	newdlfiles=
-	newdlprefiles=
-	passes="conv scan dlopen dlpreopen link"
-	;;
-    *)  passes="conv"
-	;;
-    esac
-
-    for pass in $passes; do
-      # The preopen pass in lib mode reverses $deplibs; put it back here
-      # so that -L comes before libs that need it for instance...
-      if test "$linkmode,$pass" = "lib,link"; then
-	## FIXME: Find the place where the list is rebuilt in the wrong
-	##        order, and fix it there properly
-        tmp_deplibs=
-	for deplib in $deplibs; do
-	  tmp_deplibs="$deplib $tmp_deplibs"
-	done
-	deplibs="$tmp_deplibs"
-      fi
-
-      if test "$linkmode,$pass" = "lib,link" ||
-	 test "$linkmode,$pass" = "prog,scan"; then
-	libs="$deplibs"
-	deplibs=
-      fi
-      if test "$linkmode" = prog; then
-	case $pass in
-	dlopen) libs="$dlfiles" ;;
-	dlpreopen) libs="$dlprefiles" ;;
-	link)
-	  libs="$deplibs %DEPLIBS%"
-	  test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs"
-	  ;;
-	esac
-      fi
-      if test "$linkmode,$pass" = "lib,dlpreopen"; then
-	# Collect and forward deplibs of preopened libtool libs
-	for lib in $dlprefiles; do
-	  # Ignore non-libtool-libs
-	  dependency_libs=
-	  case $lib in
-	  *.la)	func_source "$lib" ;;
-	  esac
-
-	  # Collect preopened libtool deplibs, except any this library
-	  # has declared as weak libs
-	  for deplib in $dependency_libs; do
-            deplib_base=`$ECHO "X$deplib" | $Xsed -e "$basename"`
-	    case " $weak_libs " in
-	    *" $deplib_base "*) ;;
-	    *) deplibs="$deplibs $deplib" ;;
-	    esac
-	  done
-	done
-	libs="$dlprefiles"
-      fi
-      if test "$pass" = dlopen; then
-	# Collect dlpreopened libraries
-	save_deplibs="$deplibs"
-	deplibs=
-      fi
-
-      for deplib in $libs; do
-	lib=
-	found=no
-	case $deplib in
-	-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
-	  if test "$linkmode,$pass" = "prog,link"; then
-	    compile_deplibs="$deplib $compile_deplibs"
-	    finalize_deplibs="$deplib $finalize_deplibs"
-	  else
-	    compiler_flags="$compiler_flags $deplib"
-	    if test "$linkmode" = lib ; then
-		case "$new_inherited_linker_flags " in
-		    *" $deplib "*) ;;
-		    * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;;
-		esac
-	    fi
-	  fi
-	  continue
-	  ;;
-	-l*)
-	  if test "$linkmode" != lib && test "$linkmode" != prog; then
-	    func_warning "\`-l' is ignored for archives/objects"
-	    continue
-	  fi
-	  func_stripname '-l' '' "$deplib"
-	  name=$func_stripname_result
-	  if test "$linkmode" = lib; then
-	    searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path"
-	  else
-	    searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path"
-	  fi
-	  for searchdir in $searchdirs; do
-	    for search_ext in .la $std_shrext .so .a; do
-	      # Search the libtool library
-	      lib="$searchdir/lib${name}${search_ext}"
-	      if test -f "$lib"; then
-		if test "$search_ext" = ".la"; then
-		  found=yes
-		else
-		  found=no
-		fi
-		break 2
-	      fi
-	    done
-	  done
-	  if test "$found" != yes; then
-	    # deplib doesn't seem to be a libtool library
-	    if test "$linkmode,$pass" = "prog,link"; then
-	      compile_deplibs="$deplib $compile_deplibs"
-	      finalize_deplibs="$deplib $finalize_deplibs"
-	    else
-	      deplibs="$deplib $deplibs"
-	      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
-	    fi
-	    continue
-	  else # deplib is a libtool library
-	    # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
-	    # We need to do some special things here, and not later.
-	    if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
-	      case " $predeps $postdeps " in
-	      *" $deplib "*)
-		if func_lalib_p "$lib"; then
-		  library_names=
-		  old_library=
-		  func_source "$lib"
-		  for l in $old_library $library_names; do
-		    ll="$l"
-		  done
-		  if test "X$ll" = "X$old_library" ; then # only static version available
-		    found=no
-		    func_dirname "$lib" "" "."
-		    ladir="$func_dirname_result"
-		    lib=$ladir/$old_library
-		    if test "$linkmode,$pass" = "prog,link"; then
-		      compile_deplibs="$deplib $compile_deplibs"
-		      finalize_deplibs="$deplib $finalize_deplibs"
-		    else
-		      deplibs="$deplib $deplibs"
-		      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
-		    fi
-		    continue
-		  fi
-		fi
-		;;
-	      *) ;;
-	      esac
-	    fi
-	  fi
-	  ;; # -l
-	*.ltframework)
-	  if test "$linkmode,$pass" = "prog,link"; then
-	    compile_deplibs="$deplib $compile_deplibs"
-	    finalize_deplibs="$deplib $finalize_deplibs"
-	  else
-	    deplibs="$deplib $deplibs"
-	    if test "$linkmode" = lib ; then
-		case "$new_inherited_linker_flags " in
-		    *" $deplib "*) ;;
-		    * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;;
-		esac
-	    fi
-	  fi
-	  continue
-	  ;;
-	-L*)
-	  case $linkmode in
-	  lib)
-	    deplibs="$deplib $deplibs"
-	    test "$pass" = conv && continue
-	    newdependency_libs="$deplib $newdependency_libs"
-	    func_stripname '-L' '' "$deplib"
-	    newlib_search_path="$newlib_search_path $func_stripname_result"
-	    ;;
-	  prog)
-	    if test "$pass" = conv; then
-	      deplibs="$deplib $deplibs"
-	      continue
-	    fi
-	    if test "$pass" = scan; then
-	      deplibs="$deplib $deplibs"
-	    else
-	      compile_deplibs="$deplib $compile_deplibs"
-	      finalize_deplibs="$deplib $finalize_deplibs"
-	    fi
-	    func_stripname '-L' '' "$deplib"
-	    newlib_search_path="$newlib_search_path $func_stripname_result"
-	    ;;
-	  *)
-	    func_warning "\`-L' is ignored for archives/objects"
-	    ;;
-	  esac # linkmode
-	  continue
-	  ;; # -L
-	-R*)
-	  if test "$pass" = link; then
-	    func_stripname '-R' '' "$deplib"
-	    dir=$func_stripname_result
-	    # Make sure the xrpath contains only unique directories.
-	    case "$xrpath " in
-	    *" $dir "*) ;;
-	    *) xrpath="$xrpath $dir" ;;
-	    esac
-	  fi
-	  deplibs="$deplib $deplibs"
-	  continue
-	  ;;
-	*.la) lib="$deplib" ;;
-	*.$libext)
-	  if test "$pass" = conv; then
-	    deplibs="$deplib $deplibs"
-	    continue
-	  fi
-	  case $linkmode in
-	  lib)
-	    # Linking convenience modules into shared libraries is allowed,
-	    # but linking other static libraries is non-portable.
-	    case " $dlpreconveniencelibs " in
-	    *" $deplib "*) ;;
-	    *)
-	      valid_a_lib=no
-	      case $deplibs_check_method in
-		match_pattern*)
-		  set dummy $deplibs_check_method; shift
-		  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
-		  if eval "\$ECHO \"X$deplib\"" 2>/dev/null | $Xsed -e 10q \
-		    | $EGREP "$match_pattern_regex" > /dev/null; then
-		    valid_a_lib=yes
-		  fi
-		;;
-		pass_all)
-		  valid_a_lib=yes
-		;;
-	      esac
-	      if test "$valid_a_lib" != yes; then
-		$ECHO
-		$ECHO "*** Warning: Trying to link with static lib archive $deplib."
-		$ECHO "*** I have the capability to make that library automatically link in when"
-		$ECHO "*** you link to this library.  But I can only do this if you have a"
-		$ECHO "*** shared version of the library, which you do not appear to have"
-		$ECHO "*** because the file extensions .$libext of this argument makes me believe"
-		$ECHO "*** that it is just a static archive that I should not use here."
-	      else
-		$ECHO
-		$ECHO "*** Warning: Linking the shared library $output against the"
-		$ECHO "*** static library $deplib is not portable!"
-		deplibs="$deplib $deplibs"
-	      fi
-	      ;;
-	    esac
-	    continue
-	    ;;
-	  prog)
-	    if test "$pass" != link; then
-	      deplibs="$deplib $deplibs"
-	    else
-	      compile_deplibs="$deplib $compile_deplibs"
-	      finalize_deplibs="$deplib $finalize_deplibs"
-	    fi
-	    continue
-	    ;;
-	  esac # linkmode
-	  ;; # *.$libext
-	*.lo | *.$objext)
-	  if test "$pass" = conv; then
-	    deplibs="$deplib $deplibs"
-	  elif test "$linkmode" = prog; then
-	    if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
-	      # If there is no dlopen support or we're linking statically,
-	      # we need to preload.
-	      newdlprefiles="$newdlprefiles $deplib"
-	      compile_deplibs="$deplib $compile_deplibs"
-	      finalize_deplibs="$deplib $finalize_deplibs"
-	    else
-	      newdlfiles="$newdlfiles $deplib"
-	    fi
-	  fi
-	  continue
-	  ;;
-	%DEPLIBS%)
-	  alldeplibs=yes
-	  continue
-	  ;;
-	esac # case $deplib
-
-	if test "$found" = yes || test -f "$lib"; then :
-	else
-	  func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'"
-	fi
-
-	# Check to see that this really is a libtool archive.
-	func_lalib_unsafe_p "$lib" \
-	  || func_fatal_error "\`$lib' is not a valid libtool archive"
-
-	func_dirname "$lib" "" "."
-	ladir="$func_dirname_result"
-
-	dlname=
-	dlopen=
-	dlpreopen=
-	libdir=
-	library_names=
-	old_library=
-	inherited_linker_flags=
-	# If the library was installed with an old release of libtool,
-	# it will not redefine variables installed, or shouldnotlink
-	installed=yes
-	shouldnotlink=no
-	avoidtemprpath=
-
-
-	# Read the .la file
-	func_source "$lib"
-
-	# Convert "-framework foo" to "foo.ltframework"
-	if test -n "$inherited_linker_flags"; then
-	  tmp_inherited_linker_flags=`$ECHO "X$inherited_linker_flags" | $Xsed -e 's/-framework \([^ $]*\)/\1.ltframework/g'`
-	  for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do
-	    case " $new_inherited_linker_flags " in
-	      *" $tmp_inherited_linker_flag "*) ;;
-	      *) new_inherited_linker_flags="$new_inherited_linker_flags $tmp_inherited_linker_flag";;
-	    esac
-	  done
-	fi
-	dependency_libs=`$ECHO "X $dependency_libs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
-	if test "$linkmode,$pass" = "lib,link" ||
-	   test "$linkmode,$pass" = "prog,scan" ||
-	   { test "$linkmode" != prog && test "$linkmode" != lib; }; then
-	  test -n "$dlopen" && dlfiles="$dlfiles $dlopen"
-	  test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen"
-	fi
-
-	if test "$pass" = conv; then
-	  # Only check for convenience libraries
-	  deplibs="$lib $deplibs"
-	  if test -z "$libdir"; then
-	    if test -z "$old_library"; then
-	      func_fatal_error "cannot find name of link library for \`$lib'"
-	    fi
-	    # It is a libtool convenience library, so add in its objects.
-	    convenience="$convenience $ladir/$objdir/$old_library"
-	    old_convenience="$old_convenience $ladir/$objdir/$old_library"
-	    tmp_libs=
-	    for deplib in $dependency_libs; do
-	      deplibs="$deplib $deplibs"
-	      if $opt_duplicate_deps ; then
-		case "$tmp_libs " in
-		*" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
-		esac
-	      fi
-	      tmp_libs="$tmp_libs $deplib"
-	    done
-	  elif test "$linkmode" != prog && test "$linkmode" != lib; then
-	    func_fatal_error "\`$lib' is not a convenience library"
-	  fi
-	  continue
-	fi # $pass = conv
-
-
-	# Get the name of the library we link against.
-	linklib=
-	for l in $old_library $library_names; do
-	  linklib="$l"
-	done
-	if test -z "$linklib"; then
-	  func_fatal_error "cannot find name of link library for \`$lib'"
-	fi
-
-	# This library was specified with -dlopen.
-	if test "$pass" = dlopen; then
-	  if test -z "$libdir"; then
-	    func_fatal_error "cannot -dlopen a convenience library: \`$lib'"
-	  fi
-	  if test -z "$dlname" ||
-	     test "$dlopen_support" != yes ||
-	     test "$build_libtool_libs" = no; then
-	    # If there is no dlname, no dlopen support or we're linking
-	    # statically, we need to preload.  We also need to preload any
-	    # dependent libraries so libltdl's deplib preloader doesn't
-	    # bomb out in the load deplibs phase.
-	    dlprefiles="$dlprefiles $lib $dependency_libs"
-	  else
-	    newdlfiles="$newdlfiles $lib"
-	  fi
-	  continue
-	fi # $pass = dlopen
-
-	# We need an absolute path.
-	case $ladir in
-	[\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
-	*)
-	  abs_ladir=`cd "$ladir" && pwd`
-	  if test -z "$abs_ladir"; then
-	    func_warning "cannot determine absolute directory name of \`$ladir'"
-	    func_warning "passing it literally to the linker, although it might fail"
-	    abs_ladir="$ladir"
-	  fi
-	  ;;
-	esac
-	func_basename "$lib"
-	laname="$func_basename_result"
-
-	# Find the relevant object directory and library name.
-	if test "X$installed" = Xyes; then
-	  if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
-	    func_warning "library \`$lib' was moved."
-	    dir="$ladir"
-	    absdir="$abs_ladir"
-	    libdir="$abs_ladir"
-	  else
-	    dir="$libdir"
-	    absdir="$libdir"
-	  fi
-	  test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
-	else
-	  if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
-	    dir="$ladir"
-	    absdir="$abs_ladir"
-	    # Remove this search path later
-	    notinst_path="$notinst_path $abs_ladir"
-	  else
-	    dir="$ladir/$objdir"
-	    absdir="$abs_ladir/$objdir"
-	    # Remove this search path later
-	    notinst_path="$notinst_path $abs_ladir"
-	  fi
-	fi # $installed = yes
-	func_stripname 'lib' '.la' "$laname"
-	name=$func_stripname_result
-
-	# This library was specified with -dlpreopen.
-	if test "$pass" = dlpreopen; then
-	  if test -z "$libdir" && test "$linkmode" = prog; then
-	    func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'"
-	  fi
-	  # Prefer using a static library (so that no silly _DYNAMIC symbols
-	  # are required to link).
-	  if test -n "$old_library"; then
-	    newdlprefiles="$newdlprefiles $dir/$old_library"
-	    # Keep a list of preopened convenience libraries to check
-	    # that they are being used correctly in the link pass.
-	    test -z "$libdir" && \
-		dlpreconveniencelibs="$dlpreconveniencelibs $dir/$old_library"
-	  # Otherwise, use the dlname, so that lt_dlopen finds it.
-	  elif test -n "$dlname"; then
-	    newdlprefiles="$newdlprefiles $dir/$dlname"
-	  else
-	    newdlprefiles="$newdlprefiles $dir/$linklib"
-	  fi
-	fi # $pass = dlpreopen
-
-	if test -z "$libdir"; then
-	  # Link the convenience library
-	  if test "$linkmode" = lib; then
-	    deplibs="$dir/$old_library $deplibs"
-	  elif test "$linkmode,$pass" = "prog,link"; then
-	    compile_deplibs="$dir/$old_library $compile_deplibs"
-	    finalize_deplibs="$dir/$old_library $finalize_deplibs"
-	  else
-	    deplibs="$lib $deplibs" # used for prog,scan pass
-	  fi
-	  continue
-	fi
-
-
-	if test "$linkmode" = prog && test "$pass" != link; then
-	  newlib_search_path="$newlib_search_path $ladir"
-	  deplibs="$lib $deplibs"
-
-	  linkalldeplibs=no
-	  if test "$link_all_deplibs" != no || test -z "$library_names" ||
-	     test "$build_libtool_libs" = no; then
-	    linkalldeplibs=yes
-	  fi
-
-	  tmp_libs=
-	  for deplib in $dependency_libs; do
-	    case $deplib in
-	    -L*) func_stripname '-L' '' "$deplib"
-	         newlib_search_path="$newlib_search_path $func_stripname_result"
-		 ;;
-	    esac
-	    # Need to link against all dependency_libs?
-	    if test "$linkalldeplibs" = yes; then
-	      deplibs="$deplib $deplibs"
-	    else
-	      # Need to hardcode shared library paths
-	      # or/and link against static libraries
-	      newdependency_libs="$deplib $newdependency_libs"
-	    fi
-	    if $opt_duplicate_deps ; then
-	      case "$tmp_libs " in
-	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
-	      esac
-	    fi
-	    tmp_libs="$tmp_libs $deplib"
-	  done # for deplib
-	  continue
-	fi # $linkmode = prog...
-
-	if test "$linkmode,$pass" = "prog,link"; then
-	  if test -n "$library_names" &&
-	     { { test "$prefer_static_libs" = no ||
-	         test "$prefer_static_libs,$installed" = "built,yes"; } ||
-	       test -z "$old_library"; }; then
-	    # We need to hardcode the library path
-	    if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then
-	      # Make sure the rpath contains only unique directories.
-	      case "$temp_rpath:" in
-	      *"$absdir:"*) ;;
-	      *) temp_rpath="$temp_rpath$absdir:" ;;
-	      esac
-	    fi
-
-	    # Hardcode the library path.
-	    # Skip directories that are in the system default run-time
-	    # search path.
-	    case " $sys_lib_dlsearch_path " in
-	    *" $absdir "*) ;;
-	    *)
-	      case "$compile_rpath " in
-	      *" $absdir "*) ;;
-	      *) compile_rpath="$compile_rpath $absdir"
-	      esac
-	      ;;
-	    esac
-	    case " $sys_lib_dlsearch_path " in
-	    *" $libdir "*) ;;
-	    *)
-	      case "$finalize_rpath " in
-	      *" $libdir "*) ;;
-	      *) finalize_rpath="$finalize_rpath $libdir"
-	      esac
-	      ;;
-	    esac
-	  fi # $linkmode,$pass = prog,link...
-
-	  if test "$alldeplibs" = yes &&
-	     { test "$deplibs_check_method" = pass_all ||
-	       { test "$build_libtool_libs" = yes &&
-		 test -n "$library_names"; }; }; then
-	    # We only need to search for static libraries
-	    continue
-	  fi
-	fi
-
-	link_static=no # Whether the deplib will be linked statically
-	use_static_libs=$prefer_static_libs
-	if test "$use_static_libs" = built && test "$installed" = yes; then
-	  use_static_libs=no
-	fi
-	if test -n "$library_names" &&
-	   { test "$use_static_libs" = no || test -z "$old_library"; }; then
-	  case $host in
-	  *cygwin* | *mingw* | *cegcc*)
-	      # No point in relinking DLLs because paths are not encoded
-	      notinst_deplibs="$notinst_deplibs $lib"
-	      need_relink=no
-	    ;;
-	  *)
-	    if test "$installed" = no; then
-	      notinst_deplibs="$notinst_deplibs $lib"
-	      need_relink=yes
-	    fi
-	    ;;
-	  esac
-	  # This is a shared library
-
-	  # Warn about portability, can't link against -module's on some
-	  # systems (darwin).  Don't bleat about dlopened modules though!
-	  dlopenmodule=""
-	  for dlpremoduletest in $dlprefiles; do
-	    if test "X$dlpremoduletest" = "X$lib"; then
-	      dlopenmodule="$dlpremoduletest"
-	      break
-	    fi
-	  done
-	  if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then
-	    $ECHO
-	    if test "$linkmode" = prog; then
-	      $ECHO "*** Warning: Linking the executable $output against the loadable module"
-	    else
-	      $ECHO "*** Warning: Linking the shared library $output against the loadable module"
-	    fi
-	    $ECHO "*** $linklib is not portable!"
-	  fi
-	  if test "$linkmode" = lib &&
-	     test "$hardcode_into_libs" = yes; then
-	    # Hardcode the library path.
-	    # Skip directories that are in the system default run-time
-	    # search path.
-	    case " $sys_lib_dlsearch_path " in
-	    *" $absdir "*) ;;
-	    *)
-	      case "$compile_rpath " in
-	      *" $absdir "*) ;;
-	      *) compile_rpath="$compile_rpath $absdir"
-	      esac
-	      ;;
-	    esac
-	    case " $sys_lib_dlsearch_path " in
-	    *" $libdir "*) ;;
-	    *)
-	      case "$finalize_rpath " in
-	      *" $libdir "*) ;;
-	      *) finalize_rpath="$finalize_rpath $libdir"
-	      esac
-	      ;;
-	    esac
-	  fi
-
-	  if test -n "$old_archive_from_expsyms_cmds"; then
-	    # figure out the soname
-	    set dummy $library_names
-	    shift
-	    realname="$1"
-	    shift
-	    libname=`eval "\\$ECHO \"$libname_spec\""`
-	    # use dlname if we got it. it's perfectly good, no?
-	    if test -n "$dlname"; then
-	      soname="$dlname"
-	    elif test -n "$soname_spec"; then
-	      # bleh windows
-	      case $host in
-	      *cygwin* | mingw* | *cegcc*)
-	        func_arith $current - $age
-		major=$func_arith_result
-		versuffix="-$major"
-		;;
-	      esac
-	      eval soname=\"$soname_spec\"
-	    else
-	      soname="$realname"
-	    fi
-
-	    # Make a new name for the extract_expsyms_cmds to use
-	    soroot="$soname"
-	    func_basename "$soroot"
-	    soname="$func_basename_result"
-	    func_stripname 'lib' '.dll' "$soname"
-	    newlib=libimp-$func_stripname_result.a
-
-	    # If the library has no export list, then create one now
-	    if test -f "$output_objdir/$soname-def"; then :
-	    else
-	      func_verbose "extracting exported symbol list from \`$soname'"
-	      func_execute_cmds "$extract_expsyms_cmds" 'exit $?'
-	    fi
-
-	    # Create $newlib
-	    if test -f "$output_objdir/$newlib"; then :; else
-	      func_verbose "generating import library for \`$soname'"
-	      func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?'
-	    fi
-	    # make sure the library variables are pointing to the new library
-	    dir=$output_objdir
-	    linklib=$newlib
-	  fi # test -n "$old_archive_from_expsyms_cmds"
-
-	  if test "$linkmode" = prog || test "$mode" != relink; then
-	    add_shlibpath=
-	    add_dir=
-	    add=
-	    lib_linked=yes
-	    case $hardcode_action in
-	    immediate | unsupported)
-	      if test "$hardcode_direct" = no; then
-		add="$dir/$linklib"
-		case $host in
-		  *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;;
-		  *-*-sysv4*uw2*) add_dir="-L$dir" ;;
-		  *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
-		    *-*-unixware7*) add_dir="-L$dir" ;;
-		  *-*-darwin* )
-		    # if the lib is a (non-dlopened) module then we can not
-		    # link against it, someone is ignoring the earlier warnings
-		    if /usr/bin/file -L $add 2> /dev/null |
-			 $GREP ": [^:]* bundle" >/dev/null ; then
-		      if test "X$dlopenmodule" != "X$lib"; then
-			$ECHO "*** Warning: lib $linklib is a module, not a shared library"
-			if test -z "$old_library" ; then
-			  $ECHO
-			  $ECHO "*** And there doesn't seem to be a static archive available"
-			  $ECHO "*** The link will probably fail, sorry"
-			else
-			  add="$dir/$old_library"
-			fi
-		      elif test -n "$old_library"; then
-			add="$dir/$old_library"
-		      fi
-		    fi
-		esac
-	      elif test "$hardcode_minus_L" = no; then
-		case $host in
-		*-*-sunos*) add_shlibpath="$dir" ;;
-		esac
-		add_dir="-L$dir"
-		add="-l$name"
-	      elif test "$hardcode_shlibpath_var" = no; then
-		add_shlibpath="$dir"
-		add="-l$name"
-	      else
-		lib_linked=no
-	      fi
-	      ;;
-	    relink)
-	      if test "$hardcode_direct" = yes &&
-	         test "$hardcode_direct_absolute" = no; then
-		add="$dir/$linklib"
-	      elif test "$hardcode_minus_L" = yes; then
-		add_dir="-L$dir"
-		# Try looking first in the location we're being installed to.
-		if test -n "$inst_prefix_dir"; then
-		  case $libdir in
-		    [\\/]*)
-		      add_dir="$add_dir -L$inst_prefix_dir$libdir"
-		      ;;
-		  esac
-		fi
-		add="-l$name"
-	      elif test "$hardcode_shlibpath_var" = yes; then
-		add_shlibpath="$dir"
-		add="-l$name"
-	      else
-		lib_linked=no
-	      fi
-	      ;;
-	    *) lib_linked=no ;;
-	    esac
-
-	    if test "$lib_linked" != yes; then
-	      func_fatal_configuration "unsupported hardcode properties"
-	    fi
-
-	    if test -n "$add_shlibpath"; then
-	      case :$compile_shlibpath: in
-	      *":$add_shlibpath:"*) ;;
-	      *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;;
-	      esac
-	    fi
-	    if test "$linkmode" = prog; then
-	      test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
-	      test -n "$add" && compile_deplibs="$add $compile_deplibs"
-	    else
-	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
-	      test -n "$add" && deplibs="$add $deplibs"
-	      if test "$hardcode_direct" != yes &&
-		 test "$hardcode_minus_L" != yes &&
-		 test "$hardcode_shlibpath_var" = yes; then
-		case :$finalize_shlibpath: in
-		*":$libdir:"*) ;;
-		*) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
-		esac
-	      fi
-	    fi
-	  fi
-
-	  if test "$linkmode" = prog || test "$mode" = relink; then
-	    add_shlibpath=
-	    add_dir=
-	    add=
-	    # Finalize command for both is simple: just hardcode it.
-	    if test "$hardcode_direct" = yes &&
-	       test "$hardcode_direct_absolute" = no; then
-	      add="$libdir/$linklib"
-	    elif test "$hardcode_minus_L" = yes; then
-	      add_dir="-L$libdir"
-	      add="-l$name"
-	    elif test "$hardcode_shlibpath_var" = yes; then
-	      case :$finalize_shlibpath: in
-	      *":$libdir:"*) ;;
-	      *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
-	      esac
-	      add="-l$name"
-	    elif test "$hardcode_automatic" = yes; then
-	      if test -n "$inst_prefix_dir" &&
-		 test -f "$inst_prefix_dir$libdir/$linklib" ; then
-		add="$inst_prefix_dir$libdir/$linklib"
-	      else
-		add="$libdir/$linklib"
-	      fi
-	    else
-	      # We cannot seem to hardcode it, guess we'll fake it.
-	      add_dir="-L$libdir"
-	      # Try looking first in the location we're being installed to.
-	      if test -n "$inst_prefix_dir"; then
-		case $libdir in
-		  [\\/]*)
-		    add_dir="$add_dir -L$inst_prefix_dir$libdir"
-		    ;;
-		esac
-	      fi
-	      add="-l$name"
-	    fi
-
-	    if test "$linkmode" = prog; then
-	      test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
-	      test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
-	    else
-	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
-	      test -n "$add" && deplibs="$add $deplibs"
-	    fi
-	  fi
-	elif test "$linkmode" = prog; then
-	  # Here we assume that one of hardcode_direct or hardcode_minus_L
-	  # is not unsupported.  This is valid on all known static and
-	  # shared platforms.
-	  if test "$hardcode_direct" != unsupported; then
-	    test -n "$old_library" && linklib="$old_library"
-	    compile_deplibs="$dir/$linklib $compile_deplibs"
-	    finalize_deplibs="$dir/$linklib $finalize_deplibs"
-	  else
-	    compile_deplibs="-l$name -L$dir $compile_deplibs"
-	    finalize_deplibs="-l$name -L$dir $finalize_deplibs"
-	  fi
-	elif test "$build_libtool_libs" = yes; then
-	  # Not a shared library
-	  if test "$deplibs_check_method" != pass_all; then
-	    # We're trying link a shared library against a static one
-	    # but the system doesn't support it.
-
-	    # Just print a warning and add the library to dependency_libs so
-	    # that the program can be linked against the static library.
-	    $ECHO
-	    $ECHO "*** Warning: This system can not link to static lib archive $lib."
-	    $ECHO "*** I have the capability to make that library automatically link in when"
-	    $ECHO "*** you link to this library.  But I can only do this if you have a"
-	    $ECHO "*** shared version of the library, which you do not appear to have."
-	    if test "$module" = yes; then
-	      $ECHO "*** But as you try to build a module library, libtool will still create "
-	      $ECHO "*** a static module, that should work as long as the dlopening application"
-	      $ECHO "*** is linked with the -dlopen flag to resolve symbols at runtime."
-	      if test -z "$global_symbol_pipe"; then
-		$ECHO
-		$ECHO "*** However, this would only work if libtool was able to extract symbol"
-		$ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could"
-		$ECHO "*** not find such a program.  So, this module is probably useless."
-		$ECHO "*** \`nm' from GNU binutils and a full rebuild may help."
-	      fi
-	      if test "$build_old_libs" = no; then
-		build_libtool_libs=module
-		build_old_libs=yes
-	      else
-		build_libtool_libs=no
-	      fi
-	    fi
-	  else
-	    deplibs="$dir/$old_library $deplibs"
-	    link_static=yes
-	  fi
-	fi # link shared/static library?
-
-	if test "$linkmode" = lib; then
-	  if test -n "$dependency_libs" &&
-	     { test "$hardcode_into_libs" != yes ||
-	       test "$build_old_libs" = yes ||
-	       test "$link_static" = yes; }; then
-	    # Extract -R from dependency_libs
-	    temp_deplibs=
-	    for libdir in $dependency_libs; do
-	      case $libdir in
-	      -R*) func_stripname '-R' '' "$libdir"
-	           temp_xrpath=$func_stripname_result
-		   case " $xrpath " in
-		   *" $temp_xrpath "*) ;;
-		   *) xrpath="$xrpath $temp_xrpath";;
-		   esac;;
-	      *) temp_deplibs="$temp_deplibs $libdir";;
-	      esac
-	    done
-	    dependency_libs="$temp_deplibs"
-	  fi
-
-	  newlib_search_path="$newlib_search_path $absdir"
-	  # Link against this library
-	  test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
-	  # ... and its dependency_libs
-	  tmp_libs=
-	  for deplib in $dependency_libs; do
-	    newdependency_libs="$deplib $newdependency_libs"
-	    if $opt_duplicate_deps ; then
-	      case "$tmp_libs " in
-	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
-	      esac
-	    fi
-	    tmp_libs="$tmp_libs $deplib"
-	  done
-
-	  if test "$link_all_deplibs" != no; then
-	    # Add the search paths of all dependency libraries
-	    for deplib in $dependency_libs; do
-	      path=
-	      case $deplib in
-	      -L*) path="$deplib" ;;
-	      *.la)
-	        func_dirname "$deplib" "" "."
-		dir="$func_dirname_result"
-		# We need an absolute path.
-		case $dir in
-		[\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
-		*)
-		  absdir=`cd "$dir" && pwd`
-		  if test -z "$absdir"; then
-		    func_warning "cannot determine absolute directory name of \`$dir'"
-		    absdir="$dir"
-		  fi
-		  ;;
-		esac
-		if $GREP "^installed=no" $deplib > /dev/null; then
-		case $host in
-		*-*-darwin*)
-		  depdepl=
-		  eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
-		  if test -n "$deplibrary_names" ; then
-		    for tmp in $deplibrary_names ; do
-		      depdepl=$tmp
-		    done
-		    if test -f "$absdir/$objdir/$depdepl" ; then
-		      depdepl="$absdir/$objdir/$depdepl"
-		      darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
-                      if test -z "$darwin_install_name"; then
-                          darwin_install_name=`${OTOOL64} -L $depdepl  | awk '{if (NR == 2) {print $1;exit}}'`
-                      fi
-		      compiler_flags="$compiler_flags ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}"
-		      linker_flags="$linker_flags -dylib_file ${darwin_install_name}:${depdepl}"
-		      path=
-		    fi
-		  fi
-		  ;;
-		*)
-		  path="-L$absdir/$objdir"
-		  ;;
-		esac
-		else
-		  eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
-		  test -z "$libdir" && \
-		    func_fatal_error "\`$deplib' is not a valid libtool archive"
-		  test "$absdir" != "$libdir" && \
-		    func_warning "\`$deplib' seems to be moved"
-
-		  path="-L$absdir"
-		fi
-		;;
-	      esac
-	      case " $deplibs " in
-	      *" $path "*) ;;
-	      *) deplibs="$path $deplibs" ;;
-	      esac
-	    done
-	  fi # link_all_deplibs != no
-	fi # linkmode = lib
-      done # for deplib in $libs
-      if test "$pass" = link; then
-	if test "$linkmode" = "prog"; then
-	  compile_deplibs="$new_inherited_linker_flags $compile_deplibs"
-	  finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs"
-	else
-	  compiler_flags="$compiler_flags "`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
-	fi
-      fi
-      dependency_libs="$newdependency_libs"
-      if test "$pass" = dlpreopen; then
-	# Link the dlpreopened libraries before other libraries
-	for deplib in $save_deplibs; do
-	  deplibs="$deplib $deplibs"
-	done
-      fi
-      if test "$pass" != dlopen; then
-	if test "$pass" != conv; then
-	  # Make sure lib_search_path contains only unique directories.
-	  lib_search_path=
-	  for dir in $newlib_search_path; do
-	    case "$lib_search_path " in
-	    *" $dir "*) ;;
-	    *) lib_search_path="$lib_search_path $dir" ;;
-	    esac
-	  done
-	  newlib_search_path=
-	fi
-
-	if test "$linkmode,$pass" != "prog,link"; then
-	  vars="deplibs"
-	else
-	  vars="compile_deplibs finalize_deplibs"
-	fi
-	for var in $vars dependency_libs; do
-	  # Add libraries to $var in reverse order
-	  eval tmp_libs=\"\$$var\"
-	  new_libs=
-	  for deplib in $tmp_libs; do
-	    # FIXME: Pedantically, this is the right thing to do, so
-	    #        that some nasty dependency loop isn't accidentally
-	    #        broken:
-	    #new_libs="$deplib $new_libs"
-	    # Pragmatically, this seems to cause very few problems in
-	    # practice:
-	    case $deplib in
-	    -L*) new_libs="$deplib $new_libs" ;;
-	    -R*) ;;
-	    *)
-	      # And here is the reason: when a library appears more
-	      # than once as an explicit dependence of a library, or
-	      # is implicitly linked in more than once by the
-	      # compiler, it is considered special, and multiple
-	      # occurrences thereof are not removed.  Compare this
-	      # with having the same library being listed as a
-	      # dependency of multiple other libraries: in this case,
-	      # we know (pedantically, we assume) the library does not
-	      # need to be listed more than once, so we keep only the
-	      # last copy.  This is not always right, but it is rare
-	      # enough that we require users that really mean to play
-	      # such unportable linking tricks to link the library
-	      # using -Wl,-lname, so that libtool does not consider it
-	      # for duplicate removal.
-	      case " $specialdeplibs " in
-	      *" $deplib "*) new_libs="$deplib $new_libs" ;;
-	      *)
-		case " $new_libs " in
-		*" $deplib "*) ;;
-		*) new_libs="$deplib $new_libs" ;;
-		esac
-		;;
-	      esac
-	      ;;
-	    esac
-	  done
-	  tmp_libs=
-	  for deplib in $new_libs; do
-	    case $deplib in
-	    -L*)
-	      case " $tmp_libs " in
-	      *" $deplib "*) ;;
-	      *) tmp_libs="$tmp_libs $deplib" ;;
-	      esac
-	      ;;
-	    *) tmp_libs="$tmp_libs $deplib" ;;
-	    esac
-	  done
-	  eval $var=\"$tmp_libs\"
-	done # for var
-      fi
-      # Last step: remove runtime libs from dependency_libs
-      # (they stay in deplibs)
-      tmp_libs=
-      for i in $dependency_libs ; do
-	case " $predeps $postdeps $compiler_lib_search_path " in
-	*" $i "*)
-	  i=""
-	  ;;
-	esac
-	if test -n "$i" ; then
-	  tmp_libs="$tmp_libs $i"
-	fi
-      done
-      dependency_libs=$tmp_libs
-    done # for pass
-    if test "$linkmode" = prog; then
-      dlfiles="$newdlfiles"
-    fi
-    if test "$linkmode" = prog || test "$linkmode" = lib; then
-      dlprefiles="$newdlprefiles"
-    fi
-
-    case $linkmode in
-    oldlib)
-      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
-	func_warning "\`-dlopen' is ignored for archives"
-      fi
-
-      case " $deplibs" in
-      *\ -l* | *\ -L*)
-	func_warning "\`-l' and \`-L' are ignored for archives" ;;
-      esac
-
-      test -n "$rpath" && \
-	func_warning "\`-rpath' is ignored for archives"
-
-      test -n "$xrpath" && \
-	func_warning "\`-R' is ignored for archives"
-
-      test -n "$vinfo" && \
-	func_warning "\`-version-info/-version-number' is ignored for archives"
-
-      test -n "$release" && \
-	func_warning "\`-release' is ignored for archives"
-
-      test -n "$export_symbols$export_symbols_regex" && \
-	func_warning "\`-export-symbols' is ignored for archives"
-
-      # Now set the variables for building old libraries.
-      build_libtool_libs=no
-      oldlibs="$output"
-      objs="$objs$old_deplibs"
-      ;;
-
-    lib)
-      # Make sure we only generate libraries of the form `libNAME.la'.
-      case $outputname in
-      lib*)
-	func_stripname 'lib' '.la' "$outputname"
-	name=$func_stripname_result
-	eval shared_ext=\"$shrext_cmds\"
-	eval libname=\"$libname_spec\"
-	;;
-      *)
-	test "$module" = no && \
-	  func_fatal_help "libtool library \`$output' must begin with \`lib'"
-
-	if test "$need_lib_prefix" != no; then
-	  # Add the "lib" prefix for modules if required
-	  func_stripname '' '.la' "$outputname"
-	  name=$func_stripname_result
-	  eval shared_ext=\"$shrext_cmds\"
-	  eval libname=\"$libname_spec\"
-	else
-	  func_stripname '' '.la' "$outputname"
-	  libname=$func_stripname_result
-	fi
-	;;
-      esac
-
-      if test -n "$objs"; then
-	if test "$deplibs_check_method" != pass_all; then
-	  func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs"
-	else
-	  $ECHO
-	  $ECHO "*** Warning: Linking the shared library $output against the non-libtool"
-	  $ECHO "*** objects $objs is not portable!"
-	  libobjs="$libobjs $objs"
-	fi
-      fi
-
-      test "$dlself" != no && \
-	func_warning "\`-dlopen self' is ignored for libtool libraries"
-
-      set dummy $rpath
-      shift
-      test "$#" -gt 1 && \
-	func_warning "ignoring multiple \`-rpath's for a libtool library"
-
-      install_libdir="$1"
-
-      oldlibs=
-      if test -z "$rpath"; then
-	if test "$build_libtool_libs" = yes; then
-	  # Building a libtool convenience library.
-	  # Some compilers have problems with a `.al' extension so
-	  # convenience libraries should have the same extension an
-	  # archive normally would.
-	  oldlibs="$output_objdir/$libname.$libext $oldlibs"
-	  build_libtool_libs=convenience
-	  build_old_libs=yes
-	fi
-
-	test -n "$vinfo" && \
-	  func_warning "\`-version-info/-version-number' is ignored for convenience libraries"
-
-	test -n "$release" && \
-	  func_warning "\`-release' is ignored for convenience libraries"
-      else
-
-	# Parse the version information argument.
-	save_ifs="$IFS"; IFS=':'
-	set dummy $vinfo 0 0 0
-	shift
-	IFS="$save_ifs"
-
-	test -n "$7" && \
-	  func_fatal_help "too many parameters to \`-version-info'"
-
-	# convert absolute version numbers to libtool ages
-	# this retains compatibility with .la files and attempts
-	# to make the code below a bit more comprehensible
-
-	case $vinfo_number in
-	yes)
-	  number_major="$1"
-	  number_minor="$2"
-	  number_revision="$3"
-	  #
-	  # There are really only two kinds -- those that
-	  # use the current revision as the major version
-	  # and those that subtract age and use age as
-	  # a minor version.  But, then there is irix
-	  # which has an extra 1 added just for fun
-	  #
-	  case $version_type in
-	  darwin|linux|osf|windows|none)
-	    func_arith $number_major + $number_minor
-	    current=$func_arith_result
-	    age="$number_minor"
-	    revision="$number_revision"
-	    ;;
-	  freebsd-aout|freebsd-elf|sunos)
-	    current="$number_major"
-	    revision="$number_minor"
-	    age="0"
-	    ;;
-	  irix|nonstopux)
-	    func_arith $number_major + $number_minor
-	    current=$func_arith_result
-	    age="$number_minor"
-	    revision="$number_minor"
-	    lt_irix_increment=no
-	    ;;
-	  *)
-	    func_fatal_configuration "$modename: unknown library version type \`$version_type'"
-	    ;;
-	  esac
-	  ;;
-	no)
-	  current="$1"
-	  revision="$2"
-	  age="$3"
-	  ;;
-	esac
-
-	# Check that each of the things are valid numbers.
-	case $current in
-	0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
-	*)
-	  func_error "CURRENT \`$current' must be a nonnegative integer"
-	  func_fatal_error "\`$vinfo' is not valid version information"
-	  ;;
-	esac
-
-	case $revision in
-	0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
-	*)
-	  func_error "REVISION \`$revision' must be a nonnegative integer"
-	  func_fatal_error "\`$vinfo' is not valid version information"
-	  ;;
-	esac
-
-	case $age in
-	0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
-	*)
-	  func_error "AGE \`$age' must be a nonnegative integer"
-	  func_fatal_error "\`$vinfo' is not valid version information"
-	  ;;
-	esac
-
-	if test "$age" -gt "$current"; then
-	  func_error "AGE \`$age' is greater than the current interface number \`$current'"
-	  func_fatal_error "\`$vinfo' is not valid version information"
-	fi
-
-	# Calculate the version variables.
-	major=
-	versuffix=
-	verstring=
-	case $version_type in
-	none) ;;
-
-	darwin)
-	  # Like Linux, but with the current version available in
-	  # verstring for coding it into the library header
-	  func_arith $current - $age
-	  major=.$func_arith_result
-	  versuffix="$major.$age.$revision"
-	  # Darwin ld doesn't like 0 for these options...
-	  func_arith $current + 1
-	  minor_current=$func_arith_result
-	  xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
-	  verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
-	  ;;
-
-	freebsd-aout)
-	  major=".$current"
-	  versuffix=".$current.$revision";
-	  ;;
-
-	freebsd-elf)
-	  major=".$current"
-	  versuffix=".$current"
-	  ;;
-
-	irix | nonstopux)
-	  if test "X$lt_irix_increment" = "Xno"; then
-	    func_arith $current - $age
-	  else
-	    func_arith $current - $age + 1
-	  fi
-	  major=$func_arith_result
-
-	  case $version_type in
-	    nonstopux) verstring_prefix=nonstopux ;;
-	    *)         verstring_prefix=sgi ;;
-	  esac
-	  verstring="$verstring_prefix$major.$revision"
-
-	  # Add in all the interfaces that we are compatible with.
-	  loop=$revision
-	  while test "$loop" -ne 0; do
-	    func_arith $revision - $loop
-	    iface=$func_arith_result
-	    func_arith $loop - 1
-	    loop=$func_arith_result
-	    verstring="$verstring_prefix$major.$iface:$verstring"
-	  done
-
-	  # Before this point, $major must not contain `.'.
-	  major=.$major
-	  versuffix="$major.$revision"
-	  ;;
-
-	linux)
-	  func_arith $current - $age
-	  major=.$func_arith_result
-	  versuffix="$major.$age.$revision"
-	  ;;
-
-	osf)
-	  func_arith $current - $age
-	  major=.$func_arith_result
-	  versuffix=".$current.$age.$revision"
-	  verstring="$current.$age.$revision"
-
-	  # Add in all the interfaces that we are compatible with.
-	  loop=$age
-	  while test "$loop" -ne 0; do
-	    func_arith $current - $loop
-	    iface=$func_arith_result
-	    func_arith $loop - 1
-	    loop=$func_arith_result
-	    verstring="$verstring:${iface}.0"
-	  done
-
-	  # Make executables depend on our current version.
-	  verstring="$verstring:${current}.0"
-	  ;;
-
-	qnx)
-	  major=".$current"
-	  versuffix=".$current"
-	  ;;
-
-	sunos)
-	  major=".$current"
-	  versuffix=".$current.$revision"
-	  ;;
-
-	windows)
-	  # Use '-' rather than '.', since we only want one
-	  # extension on DOS 8.3 filesystems.
-	  func_arith $current - $age
-	  major=$func_arith_result
-	  versuffix="-$major"
-	  ;;
-
-	*)
-	  func_fatal_configuration "unknown library version type \`$version_type'"
-	  ;;
-	esac
-
-	# Clear the version info if we defaulted, and they specified a release.
-	if test -z "$vinfo" && test -n "$release"; then
-	  major=
-	  case $version_type in
-	  darwin)
-	    # we can't check for "0.0" in archive_cmds due to quoting
-	    # problems, so we reset it completely
-	    verstring=
-	    ;;
-	  *)
-	    verstring="0.0"
-	    ;;
-	  esac
-	  if test "$need_version" = no; then
-	    versuffix=
-	  else
-	    versuffix=".0.0"
-	  fi
-	fi
-
-	# Remove version info from name if versioning should be avoided
-	if test "$avoid_version" = yes && test "$need_version" = no; then
-	  major=
-	  versuffix=
-	  verstring=""
-	fi
-
-	# Check to see if the archive will have undefined symbols.
-	if test "$allow_undefined" = yes; then
-	  if test "$allow_undefined_flag" = unsupported; then
-	    func_warning "undefined symbols not allowed in $host shared libraries"
-	    build_libtool_libs=no
-	    build_old_libs=yes
-	  fi
-	else
-	  # Don't allow undefined symbols.
-	  allow_undefined_flag="$no_undefined_flag"
-	fi
-
-      fi
-
-      func_generate_dlsyms "$libname" "$libname" "yes"
-      libobjs="$libobjs $symfileobj"
-      test "X$libobjs" = "X " && libobjs=
-
-      if test "$mode" != relink; then
-	# Remove our outputs, but don't remove object files since they
-	# may have been created when compiling PIC objects.
-	removelist=
-	tempremovelist=`$ECHO "$output_objdir/*"`
-	for p in $tempremovelist; do
-	  case $p in
-	    *.$objext | *.gcno)
-	       ;;
-	    $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
-	       if test "X$precious_files_regex" != "X"; then
-		 if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
-		 then
-		   continue
-		 fi
-	       fi
-	       removelist="$removelist $p"
-	       ;;
-	    *) ;;
-	  esac
-	done
-	test -n "$removelist" && \
-	  func_show_eval "${RM}r \$removelist"
-      fi
-
-      # Now set the variables for building old libraries.
-      if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
-	oldlibs="$oldlibs $output_objdir/$libname.$libext"
-
-	# Transform .lo files to .o files.
-	oldobjs="$objs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP`
-      fi
-
-      # Eliminate all temporary directories.
-      #for path in $notinst_path; do
-      #	lib_search_path=`$ECHO "X$lib_search_path " | $Xsed -e "s% $path % %g"`
-      #	deplibs=`$ECHO "X$deplibs " | $Xsed -e "s% -L$path % %g"`
-      #	dependency_libs=`$ECHO "X$dependency_libs " | $Xsed -e "s% -L$path % %g"`
-      #done
-
-      if test -n "$xrpath"; then
-	# If the user specified any rpath flags, then add them.
-	temp_xrpath=
-	for libdir in $xrpath; do
-	  temp_xrpath="$temp_xrpath -R$libdir"
-	  case "$finalize_rpath " in
-	  *" $libdir "*) ;;
-	  *) finalize_rpath="$finalize_rpath $libdir" ;;
-	  esac
-	done
-	if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
-	  dependency_libs="$temp_xrpath $dependency_libs"
-	fi
-      fi
-
-      # Make sure dlfiles contains only unique files that won't be dlpreopened
-      old_dlfiles="$dlfiles"
-      dlfiles=
-      for lib in $old_dlfiles; do
-	case " $dlprefiles $dlfiles " in
-	*" $lib "*) ;;
-	*) dlfiles="$dlfiles $lib" ;;
-	esac
-      done
-
-      # Make sure dlprefiles contains only unique files
-      old_dlprefiles="$dlprefiles"
-      dlprefiles=
-      for lib in $old_dlprefiles; do
-	case "$dlprefiles " in
-	*" $lib "*) ;;
-	*) dlprefiles="$dlprefiles $lib" ;;
-	esac
-      done
-
-      if test "$build_libtool_libs" = yes; then
-	if test -n "$rpath"; then
-	  case $host in
-	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc*)
-	    # these systems don't actually have a c library (as such)!
-	    ;;
-	  *-*-rhapsody* | *-*-darwin1.[012])
-	    # Rhapsody C library is in the System framework
-	    deplibs="$deplibs System.ltframework"
-	    ;;
-	  *-*-netbsd*)
-	    # Don't link with libc until the a.out ld.so is fixed.
-	    ;;
-	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
-	    # Do not include libc due to us having libc/libc_r.
-	    ;;
-	  *-*-sco3.2v5* | *-*-sco5v6*)
-	    # Causes problems with __ctype
-	    ;;
-	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
-	    # Compiler inserts libc in the correct place for threads to work
-	    ;;
-	  *)
-	    # Add libc to deplibs on all other systems if necessary.
-	    if test "$build_libtool_need_lc" = "yes"; then
-	      deplibs="$deplibs -lc"
-	    fi
-	    ;;
-	  esac
-	fi
-
-	# Transform deplibs into only deplibs that can be linked in shared.
-	name_save=$name
-	libname_save=$libname
-	release_save=$release
-	versuffix_save=$versuffix
-	major_save=$major
-	# I'm not sure if I'm treating the release correctly.  I think
-	# release should show up in the -l (ie -lgmp5) so we don't want to
-	# add it in twice.  Is that correct?
-	release=""
-	versuffix=""
-	major=""
-	newdeplibs=
-	droppeddeps=no
-	case $deplibs_check_method in
-	pass_all)
-	  # Don't check for shared/static.  Everything works.
-	  # This might be a little naive.  We might want to check
-	  # whether the library exists or not.  But this is on
-	  # osf3 & osf4 and I'm not really sure... Just
-	  # implementing what was already the behavior.
-	  newdeplibs=$deplibs
-	  ;;
-	test_compile)
-	  # This code stresses the "libraries are programs" paradigm to its
-	  # limits. Maybe even breaks it.  We compile a program, linking it
-	  # against the deplibs as a proxy for the library.  Then we can check
-	  # whether they linked in statically or dynamically with ldd.
-	  $opt_dry_run || $RM conftest.c
-	  cat > conftest.c <<EOF
-	  int main() { return 0; }
-EOF
-	  $opt_dry_run || $RM conftest
-	  if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then
-	    ldd_output=`ldd conftest`
-	    for i in $deplibs; do
-	      case $i in
-	      -l*)
-		func_stripname -l '' "$i"
-		name=$func_stripname_result
-		if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
-		  case " $predeps $postdeps " in
-		  *" $i "*)
-		    newdeplibs="$newdeplibs $i"
-		    i=""
-		    ;;
-		  esac
-		fi
-		if test -n "$i" ; then
-		  libname=`eval "\\$ECHO \"$libname_spec\""`
-		  deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
-		  set dummy $deplib_matches; shift
-		  deplib_match=$1
-		  if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
-		    newdeplibs="$newdeplibs $i"
-		  else
-		    droppeddeps=yes
-		    $ECHO
-		    $ECHO "*** Warning: dynamic linker does not accept needed library $i."
-		    $ECHO "*** I have the capability to make that library automatically link in when"
-		    $ECHO "*** you link to this library.  But I can only do this if you have a"
-		    $ECHO "*** shared version of the library, which I believe you do not have"
-		    $ECHO "*** because a test_compile did reveal that the linker did not use it for"
-		    $ECHO "*** its dynamic dependency list that programs get resolved with at runtime."
-		  fi
-		fi
-		;;
-	      *)
-		newdeplibs="$newdeplibs $i"
-		;;
-	      esac
-	    done
-	  else
-	    # Error occurred in the first compile.  Let's try to salvage
-	    # the situation: Compile a separate program for each library.
-	    for i in $deplibs; do
-	      case $i in
-	      -l*)
-		func_stripname -l '' "$i"
-		name=$func_stripname_result
-		$opt_dry_run || $RM conftest
-		if $LTCC $LTCFLAGS -o conftest conftest.c $i; then
-		  ldd_output=`ldd conftest`
-		  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
-		    case " $predeps $postdeps " in
-		    *" $i "*)
-		      newdeplibs="$newdeplibs $i"
-		      i=""
-		      ;;
-		    esac
-		  fi
-		  if test -n "$i" ; then
-		    libname=`eval "\\$ECHO \"$libname_spec\""`
-		    deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
-		    set dummy $deplib_matches; shift
-		    deplib_match=$1
-		    if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
-		      newdeplibs="$newdeplibs $i"
-		    else
-		      droppeddeps=yes
-		      $ECHO
-		      $ECHO "*** Warning: dynamic linker does not accept needed library $i."
-		      $ECHO "*** I have the capability to make that library automatically link in when"
-		      $ECHO "*** you link to this library.  But I can only do this if you have a"
-		      $ECHO "*** shared version of the library, which you do not appear to have"
-		      $ECHO "*** because a test_compile did reveal that the linker did not use this one"
-		      $ECHO "*** as a dynamic dependency that programs can get resolved with at runtime."
-		    fi
-		  fi
-		else
-		  droppeddeps=yes
-		  $ECHO
-		  $ECHO "*** Warning!  Library $i is needed by this library but I was not able to"
-		  $ECHO "*** make it link in!  You will probably need to install it or some"
-		  $ECHO "*** library that it depends on before this library will be fully"
-		  $ECHO "*** functional.  Installing it before continuing would be even better."
-		fi
-		;;
-	      *)
-		newdeplibs="$newdeplibs $i"
-		;;
-	      esac
-	    done
-	  fi
-	  ;;
-	file_magic*)
-	  set dummy $deplibs_check_method; shift
-	  file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
-	  for a_deplib in $deplibs; do
-	    case $a_deplib in
-	    -l*)
-	      func_stripname -l '' "$a_deplib"
-	      name=$func_stripname_result
-	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
-		case " $predeps $postdeps " in
-		*" $a_deplib "*)
-		  newdeplibs="$newdeplibs $a_deplib"
-		  a_deplib=""
-		  ;;
-		esac
-	      fi
-	      if test -n "$a_deplib" ; then
-		libname=`eval "\\$ECHO \"$libname_spec\""`
-		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
-		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
-		  for potent_lib in $potential_libs; do
-		      # Follow soft links.
-		      if ls -lLd "$potent_lib" 2>/dev/null |
-			 $GREP " -> " >/dev/null; then
-			continue
-		      fi
-		      # The statement above tries to avoid entering an
-		      # endless loop below, in case of cyclic links.
-		      # We might still enter an endless loop, since a link
-		      # loop can be closed while we follow links,
-		      # but so what?
-		      potlib="$potent_lib"
-		      while test -h "$potlib" 2>/dev/null; do
-			potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
-			case $potliblink in
-			[\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
-			*) potlib=`$ECHO "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";;
-			esac
-		      done
-		      if eval $file_magic_cmd \"\$potlib\" 2>/dev/null |
-			 $SED -e 10q |
-			 $EGREP "$file_magic_regex" > /dev/null; then
-			newdeplibs="$newdeplibs $a_deplib"
-			a_deplib=""
-			break 2
-		      fi
-		  done
-		done
-	      fi
-	      if test -n "$a_deplib" ; then
-		droppeddeps=yes
-		$ECHO
-		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
-		$ECHO "*** I have the capability to make that library automatically link in when"
-		$ECHO "*** you link to this library.  But I can only do this if you have a"
-		$ECHO "*** shared version of the library, which you do not appear to have"
-		$ECHO "*** because I did check the linker path looking for a file starting"
-		if test -z "$potlib" ; then
-		  $ECHO "*** with $libname but no candidates were found. (...for file magic test)"
-		else
-		  $ECHO "*** with $libname and none of the candidates passed a file format test"
-		  $ECHO "*** using a file magic. Last file checked: $potlib"
-		fi
-	      fi
-	      ;;
-	    *)
-	      # Add a -L argument.
-	      newdeplibs="$newdeplibs $a_deplib"
-	      ;;
-	    esac
-	  done # Gone through all deplibs.
-	  ;;
-	match_pattern*)
-	  set dummy $deplibs_check_method; shift
-	  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
-	  for a_deplib in $deplibs; do
-	    case $a_deplib in
-	    -l*)
-	      func_stripname -l '' "$a_deplib"
-	      name=$func_stripname_result
-	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
-		case " $predeps $postdeps " in
-		*" $a_deplib "*)
-		  newdeplibs="$newdeplibs $a_deplib"
-		  a_deplib=""
-		  ;;
-		esac
-	      fi
-	      if test -n "$a_deplib" ; then
-		libname=`eval "\\$ECHO \"$libname_spec\""`
-		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
-		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
-		  for potent_lib in $potential_libs; do
-		    potlib="$potent_lib" # see symlink-check above in file_magic test
-		    if eval "\$ECHO \"X$potent_lib\"" 2>/dev/null | $Xsed -e 10q | \
-		       $EGREP "$match_pattern_regex" > /dev/null; then
-		      newdeplibs="$newdeplibs $a_deplib"
-		      a_deplib=""
-		      break 2
-		    fi
-		  done
-		done
-	      fi
-	      if test -n "$a_deplib" ; then
-		droppeddeps=yes
-		$ECHO
-		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
-		$ECHO "*** I have the capability to make that library automatically link in when"
-		$ECHO "*** you link to this library.  But I can only do this if you have a"
-		$ECHO "*** shared version of the library, which you do not appear to have"
-		$ECHO "*** because I did check the linker path looking for a file starting"
-		if test -z "$potlib" ; then
-		  $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)"
-		else
-		  $ECHO "*** with $libname and none of the candidates passed a file format test"
-		  $ECHO "*** using a regex pattern. Last file checked: $potlib"
-		fi
-	      fi
-	      ;;
-	    *)
-	      # Add a -L argument.
-	      newdeplibs="$newdeplibs $a_deplib"
-	      ;;
-	    esac
-	  done # Gone through all deplibs.
-	  ;;
-	none | unknown | *)
-	  newdeplibs=""
-	  tmp_deplibs=`$ECHO "X $deplibs" | $Xsed \
-	      -e 's/ -lc$//' -e 's/ -[LR][^ ]*//g'`
-	  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
-	    for i in $predeps $postdeps ; do
-	      # can't use Xsed below, because $i might contain '/'
-	      tmp_deplibs=`$ECHO "X $tmp_deplibs" | $Xsed -e "s,$i,,"`
-	    done
-	  fi
-	  if $ECHO "X $tmp_deplibs" | $Xsed -e 's/[	 ]//g' |
-	     $GREP . >/dev/null; then
-	    $ECHO
-	    if test "X$deplibs_check_method" = "Xnone"; then
-	      $ECHO "*** Warning: inter-library dependencies are not supported in this platform."
-	    else
-	      $ECHO "*** Warning: inter-library dependencies are not known to be supported."
-	    fi
-	    $ECHO "*** All declared inter-library dependencies are being dropped."
-	    droppeddeps=yes
-	  fi
-	  ;;
-	esac
-	versuffix=$versuffix_save
-	major=$major_save
-	release=$release_save
-	libname=$libname_save
-	name=$name_save
-
-	case $host in
-	*-*-rhapsody* | *-*-darwin1.[012])
-	  # On Rhapsody replace the C library with the System framework
-	  newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
-	  ;;
-	esac
-
-	if test "$droppeddeps" = yes; then
-	  if test "$module" = yes; then
-	    $ECHO
-	    $ECHO "*** Warning: libtool could not satisfy all declared inter-library"
-	    $ECHO "*** dependencies of module $libname.  Therefore, libtool will create"
-	    $ECHO "*** a static module, that should work as long as the dlopening"
-	    $ECHO "*** application is linked with the -dlopen flag."
-	    if test -z "$global_symbol_pipe"; then
-	      $ECHO
-	      $ECHO "*** However, this would only work if libtool was able to extract symbol"
-	      $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could"
-	      $ECHO "*** not find such a program.  So, this module is probably useless."
-	      $ECHO "*** \`nm' from GNU binutils and a full rebuild may help."
-	    fi
-	    if test "$build_old_libs" = no; then
-	      oldlibs="$output_objdir/$libname.$libext"
-	      build_libtool_libs=module
-	      build_old_libs=yes
-	    else
-	      build_libtool_libs=no
-	    fi
-	  else
-	    $ECHO "*** The inter-library dependencies that have been dropped here will be"
-	    $ECHO "*** automatically added whenever a program is linked with this library"
-	    $ECHO "*** or is declared to -dlopen it."
-
-	    if test "$allow_undefined" = no; then
-	      $ECHO
-	      $ECHO "*** Since this library must not contain undefined symbols,"
-	      $ECHO "*** because either the platform does not support them or"
-	      $ECHO "*** it was explicitly requested with -no-undefined,"
-	      $ECHO "*** libtool will only create a static version of it."
-	      if test "$build_old_libs" = no; then
-		oldlibs="$output_objdir/$libname.$libext"
-		build_libtool_libs=module
-		build_old_libs=yes
-	      else
-		build_libtool_libs=no
-	      fi
-	    fi
-	  fi
-	fi
-	# Done checking deplibs!
-	deplibs=$newdeplibs
-      fi
-      # Time to change all our "foo.ltframework" stuff back to "-framework foo"
-      case $host in
-	*-*-darwin*)
-	  newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
-	  new_inherited_linker_flags=`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
-	  deplibs=`$ECHO "X $deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
-	  ;;
-      esac
-
-      # move library search paths that coincide with paths to not yet
-      # installed libraries to the beginning of the library search list
-      new_libs=
-      for path in $notinst_path; do
-	case " $new_libs " in
-	*" -L$path/$objdir "*) ;;
-	*)
-	  case " $deplibs " in
-	  *" -L$path/$objdir "*)
-	    new_libs="$new_libs -L$path/$objdir" ;;
-	  esac
-	  ;;
-	esac
-      done
-      for deplib in $deplibs; do
-	case $deplib in
-	-L*)
-	  case " $new_libs " in
-	  *" $deplib "*) ;;
-	  *) new_libs="$new_libs $deplib" ;;
-	  esac
-	  ;;
-	*) new_libs="$new_libs $deplib" ;;
-	esac
-      done
-      deplibs="$new_libs"
-
-      # All the library-specific variables (install_libdir is set above).
-      library_names=
-      old_library=
-      dlname=
-
-      # Test again, we may have decided not to build it any more
-      if test "$build_libtool_libs" = yes; then
-	if test "$hardcode_into_libs" = yes; then
-	  # Hardcode the library paths
-	  hardcode_libdirs=
-	  dep_rpath=
-	  rpath="$finalize_rpath"
-	  test "$mode" != relink && rpath="$compile_rpath$rpath"
-	  for libdir in $rpath; do
-	    if test -n "$hardcode_libdir_flag_spec"; then
-	      if test -n "$hardcode_libdir_separator"; then
-		if test -z "$hardcode_libdirs"; then
-		  hardcode_libdirs="$libdir"
-		else
-		  # Just accumulate the unique libdirs.
-		  case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
-		  *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
-		    ;;
-		  *)
-		    hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
-		    ;;
-		  esac
-		fi
-	      else
-		eval flag=\"$hardcode_libdir_flag_spec\"
-		dep_rpath="$dep_rpath $flag"
-	      fi
-	    elif test -n "$runpath_var"; then
-	      case "$perm_rpath " in
-	      *" $libdir "*) ;;
-	      *) perm_rpath="$perm_rpath $libdir" ;;
-	      esac
-	    fi
-	  done
-	  # Substitute the hardcoded libdirs into the rpath.
-	  if test -n "$hardcode_libdir_separator" &&
-	     test -n "$hardcode_libdirs"; then
-	    libdir="$hardcode_libdirs"
-	    if test -n "$hardcode_libdir_flag_spec_ld"; then
-	      eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\"
-	    else
-	      eval dep_rpath=\"$hardcode_libdir_flag_spec\"
-	    fi
-	  fi
-	  if test -n "$runpath_var" && test -n "$perm_rpath"; then
-	    # We should set the runpath_var.
-	    rpath=
-	    for dir in $perm_rpath; do
-	      rpath="$rpath$dir:"
-	    done
-	    eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
-	  fi
-	  test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
-	fi
-
-	shlibpath="$finalize_shlibpath"
-	test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
-	if test -n "$shlibpath"; then
-	  eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
-	fi
-
-	# Get the real and link names of the library.
-	eval shared_ext=\"$shrext_cmds\"
-	eval library_names=\"$library_names_spec\"
-	set dummy $library_names
-	shift
-	realname="$1"
-	shift
-
-	if test -n "$soname_spec"; then
-	  eval soname=\"$soname_spec\"
-	else
-	  soname="$realname"
-	fi
-	if test -z "$dlname"; then
-	  dlname=$soname
-	fi
-
-	lib="$output_objdir/$realname"
-	linknames=
-	for link
-	do
-	  linknames="$linknames $link"
-	done
-
-	# Use standard objects if they are pic
-	test -z "$pic_flag" && libobjs=`$ECHO "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
-	test "X$libobjs" = "X " && libobjs=
-
-	delfiles=
-	if test -n "$export_symbols" && test -n "$include_expsyms"; then
-	  $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp"
-	  export_symbols="$output_objdir/$libname.uexp"
-	  delfiles="$delfiles $export_symbols"
-	fi
-
-	orig_export_symbols=
-	case $host_os in
-	cygwin* | mingw* | cegcc*)
-	  if test -n "$export_symbols" && test -z "$export_symbols_regex"; then
-	    # exporting using user supplied symfile
-	    if test "x`$SED 1q $export_symbols`" != xEXPORTS; then
-	      # and it's NOT already a .def file. Must figure out
-	      # which of the given symbols are data symbols and tag
-	      # them as such. So, trigger use of export_symbols_cmds.
-	      # export_symbols gets reassigned inside the "prepare
-	      # the list of exported symbols" if statement, so the
-	      # include_expsyms logic still works.
-	      orig_export_symbols="$export_symbols"
-	      export_symbols=
-	      always_export_symbols=yes
-	    fi
-	  fi
-	  ;;
-	esac
-
-	# Prepare the list of exported symbols
-	if test -z "$export_symbols"; then
-	  if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
-	    func_verbose "generating symbol list for \`$libname.la'"
-	    export_symbols="$output_objdir/$libname.exp"
-	    $opt_dry_run || $RM $export_symbols
-	    cmds=$export_symbols_cmds
-	    save_ifs="$IFS"; IFS='~'
-	    for cmd in $cmds; do
-	      IFS="$save_ifs"
-	      eval cmd=\"$cmd\"
-	      func_len " $cmd"
-	      len=$func_len_result
-	      if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
-		func_show_eval "$cmd" 'exit $?'
-		skipped_export=false
-	      else
-		# The command line is too long to execute in one step.
-		func_verbose "using reloadable object file for export list..."
-		skipped_export=:
-		# Break out early, otherwise skipped_export may be
-		# set to false by a later but shorter cmd.
-		break
-	      fi
-	    done
-	    IFS="$save_ifs"
-	    if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then
-	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
-	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
-	    fi
-	  fi
-	fi
-
-	if test -n "$export_symbols" && test -n "$include_expsyms"; then
-	  tmp_export_symbols="$export_symbols"
-	  test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
-	  $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"'
-	fi
-
-	if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then
-	  # The given exports_symbols file has to be filtered, so filter it.
-	  func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
-	  # FIXME: $output_objdir/$libname.filter potentially contains lots of
-	  # 's' commands which not all seds can handle. GNU sed should be fine
-	  # though. Also, the filter scales superlinearly with the number of
-	  # global variables. join(1) would be nice here, but unfortunately
-	  # isn't a blessed tool.
-	  $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
-	  delfiles="$delfiles $export_symbols $output_objdir/$libname.filter"
-	  export_symbols=$output_objdir/$libname.def
-	  $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
-	fi
-
-	tmp_deplibs=
-	for test_deplib in $deplibs; do
-	  case " $convenience " in
-	  *" $test_deplib "*) ;;
-	  *)
-	    tmp_deplibs="$tmp_deplibs $test_deplib"
-	    ;;
-	  esac
-	done
-	deplibs="$tmp_deplibs"
-
-	if test -n "$convenience"; then
-	  if test -n "$whole_archive_flag_spec" &&
-	    test "$compiler_needs_object" = yes &&
-	    test -z "$libobjs"; then
-	    # extract the archives, so we have objects to list.
-	    # TODO: could optimize this to just extract one archive.
-	    whole_archive_flag_spec=
-	  fi
-	  if test -n "$whole_archive_flag_spec"; then
-	    save_libobjs=$libobjs
-	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
-	    test "X$libobjs" = "X " && libobjs=
-	  else
-	    gentop="$output_objdir/${outputname}x"
-	    generated="$generated $gentop"
-
-	    func_extract_archives $gentop $convenience
-	    libobjs="$libobjs $func_extract_archives_result"
-	    test "X$libobjs" = "X " && libobjs=
-	  fi
-	fi
-
-	if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
-	  eval flag=\"$thread_safe_flag_spec\"
-	  linker_flags="$linker_flags $flag"
-	fi
-
-	# Make a backup of the uninstalled library when relinking
-	if test "$mode" = relink; then
-	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $?
-	fi
-
-	# Do each of the archive commands.
-	if test "$module" = yes && test -n "$module_cmds" ; then
-	  if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
-	    eval test_cmds=\"$module_expsym_cmds\"
-	    cmds=$module_expsym_cmds
-	  else
-	    eval test_cmds=\"$module_cmds\"
-	    cmds=$module_cmds
-	  fi
-	else
-	  if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
-	    eval test_cmds=\"$archive_expsym_cmds\"
-	    cmds=$archive_expsym_cmds
-	  else
-	    eval test_cmds=\"$archive_cmds\"
-	    cmds=$archive_cmds
-	  fi
-	fi
-
-	if test "X$skipped_export" != "X:" &&
-	   func_len " $test_cmds" &&
-	   len=$func_len_result &&
-	   test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
-	  :
-	else
-	  # The command line is too long to link in one step, link piecewise
-	  # or, if using GNU ld and skipped_export is not :, use a linker
-	  # script.
-
-	  # Save the value of $output and $libobjs because we want to
-	  # use them later.  If we have whole_archive_flag_spec, we
-	  # want to use save_libobjs as it was before
-	  # whole_archive_flag_spec was expanded, because we can't
-	  # assume the linker understands whole_archive_flag_spec.
-	  # This may have to be revisited, in case too many
-	  # convenience libraries get linked in and end up exceeding
-	  # the spec.
-	  if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
-	    save_libobjs=$libobjs
-	  fi
-	  save_output=$output
-	  output_la=`$ECHO "X$output" | $Xsed -e "$basename"`
-
-	  # Clear the reloadable object creation command queue and
-	  # initialize k to one.
-	  test_cmds=
-	  concat_cmds=
-	  objlist=
-	  last_robj=
-	  k=1
-
-	  if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then
-	    output=${output_objdir}/${output_la}.lnkscript
-	    func_verbose "creating GNU ld script: $output"
-	    $ECHO 'INPUT (' > $output
-	    for obj in $save_libobjs
-	    do
-	      $ECHO "$obj" >> $output
-	    done
-	    $ECHO ')' >> $output
-	    delfiles="$delfiles $output"
-	  elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then
-	    output=${output_objdir}/${output_la}.lnk
-	    func_verbose "creating linker input file list: $output"
-	    : > $output
-	    set x $save_libobjs
-	    shift
-	    firstobj=
-	    if test "$compiler_needs_object" = yes; then
-	      firstobj="$1 "
-	      shift
-	    fi
-	    for obj
-	    do
-	      $ECHO "$obj" >> $output
-	    done
-	    delfiles="$delfiles $output"
-	    output=$firstobj\"$file_list_spec$output\"
-	  else
-	    if test -n "$save_libobjs"; then
-	      func_verbose "creating reloadable object files..."
-	      output=$output_objdir/$output_la-${k}.$objext
-	      eval test_cmds=\"$reload_cmds\"
-	      func_len " $test_cmds"
-	      len0=$func_len_result
-	      len=$len0
-
-	      # Loop over the list of objects to be linked.
-	      for obj in $save_libobjs
-	      do
-		func_len " $obj"
-		func_arith $len + $func_len_result
-		len=$func_arith_result
-		if test "X$objlist" = X ||
-		   test "$len" -lt "$max_cmd_len"; then
-		  func_append objlist " $obj"
-		else
-		  # The command $test_cmds is almost too long, add a
-		  # command to the queue.
-		  if test "$k" -eq 1 ; then
-		    # The first file doesn't have a previous command to add.
-		    eval concat_cmds=\"$reload_cmds $objlist $last_robj\"
-		  else
-		    # All subsequent reloadable object files will link in
-		    # the last one created.
-		    eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj~\$RM $last_robj\"
-		  fi
-		  last_robj=$output_objdir/$output_la-${k}.$objext
-		  func_arith $k + 1
-		  k=$func_arith_result
-		  output=$output_objdir/$output_la-${k}.$objext
-		  objlist=$obj
-		  func_len " $last_robj"
-		  func_arith $len0 + $func_len_result
-		  len=$func_arith_result
-		fi
-	      done
-	      # Handle the remaining objects by creating one last
-	      # reloadable object file.  All subsequent reloadable object
-	      # files will link in the last one created.
-	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
-	      eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\"
-	      if test -n "$last_robj"; then
-	        eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\"
-	      fi
-	      delfiles="$delfiles $output"
-
-	    else
-	      output=
-	    fi
-
-	    if ${skipped_export-false}; then
-	      func_verbose "generating symbol list for \`$libname.la'"
-	      export_symbols="$output_objdir/$libname.exp"
-	      $opt_dry_run || $RM $export_symbols
-	      libobjs=$output
-	      # Append the command to create the export file.
-	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
-	      eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\"
-	      if test -n "$last_robj"; then
-		eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\"
-	      fi
-	    fi
-
-	    test -n "$save_libobjs" &&
-	      func_verbose "creating a temporary reloadable object file: $output"
-
-	    # Loop through the commands generated above and execute them.
-	    save_ifs="$IFS"; IFS='~'
-	    for cmd in $concat_cmds; do
-	      IFS="$save_ifs"
-	      $opt_silent || {
-		  func_quote_for_expand "$cmd"
-		  eval "func_echo $func_quote_for_expand_result"
-	      }
-	      $opt_dry_run || eval "$cmd" || {
-		lt_exit=$?
-
-		# Restore the uninstalled library and exit
-		if test "$mode" = relink; then
-		  ( cd "$output_objdir" && \
-		    $RM "${realname}T" && \
-		    $MV "${realname}U" "$realname" )
-		fi
-
-		exit $lt_exit
-	      }
-	    done
-	    IFS="$save_ifs"
-
-	    if test -n "$export_symbols_regex" && ${skipped_export-false}; then
-	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
-	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
-	    fi
-	  fi
-
-          if ${skipped_export-false}; then
-	    if test -n "$export_symbols" && test -n "$include_expsyms"; then
-	      tmp_export_symbols="$export_symbols"
-	      test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
-	      $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"'
-	    fi
-
-	    if test -n "$orig_export_symbols"; then
-	      # The given exports_symbols file has to be filtered, so filter it.
-	      func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
-	      # FIXME: $output_objdir/$libname.filter potentially contains lots of
-	      # 's' commands which not all seds can handle. GNU sed should be fine
-	      # though. Also, the filter scales superlinearly with the number of
-	      # global variables. join(1) would be nice here, but unfortunately
-	      # isn't a blessed tool.
-	      $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
-	      delfiles="$delfiles $export_symbols $output_objdir/$libname.filter"
-	      export_symbols=$output_objdir/$libname.def
-	      $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
-	    fi
-	  fi
-
-	  libobjs=$output
-	  # Restore the value of output.
-	  output=$save_output
-
-	  if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
-	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
-	    test "X$libobjs" = "X " && libobjs=
-	  fi
-	  # Expand the library linking commands again to reset the
-	  # value of $libobjs for piecewise linking.
-
-	  # Do each of the archive commands.
-	  if test "$module" = yes && test -n "$module_cmds" ; then
-	    if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
-	      cmds=$module_expsym_cmds
-	    else
-	      cmds=$module_cmds
-	    fi
-	  else
-	    if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
-	      cmds=$archive_expsym_cmds
-	    else
-	      cmds=$archive_cmds
-	    fi
-	  fi
-	fi
-
-	if test -n "$delfiles"; then
-	  # Append the command to remove temporary files to $cmds.
-	  eval cmds=\"\$cmds~\$RM $delfiles\"
-	fi
-
-	# Add any objects from preloaded convenience libraries
-	if test -n "$dlprefiles"; then
-	  gentop="$output_objdir/${outputname}x"
-	  generated="$generated $gentop"
-
-	  func_extract_archives $gentop $dlprefiles
-	  libobjs="$libobjs $func_extract_archives_result"
-	  test "X$libobjs" = "X " && libobjs=
-	fi
-
-	save_ifs="$IFS"; IFS='~'
-	for cmd in $cmds; do
-	  IFS="$save_ifs"
-	  eval cmd=\"$cmd\"
-	  $opt_silent || {
-	    func_quote_for_expand "$cmd"
-	    eval "func_echo $func_quote_for_expand_result"
-	  }
-	  $opt_dry_run || eval "$cmd" || {
-	    lt_exit=$?
-
-	    # Restore the uninstalled library and exit
-	    if test "$mode" = relink; then
-	      ( cd "$output_objdir" && \
-	        $RM "${realname}T" && \
-		$MV "${realname}U" "$realname" )
-	    fi
-
-	    exit $lt_exit
-	  }
-	done
-	IFS="$save_ifs"
-
-	# Restore the uninstalled library and exit
-	if test "$mode" = relink; then
-	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $?
-
-	  if test -n "$convenience"; then
-	    if test -z "$whole_archive_flag_spec"; then
-	      func_show_eval '${RM}r "$gentop"'
-	    fi
-	  fi
-
-	  exit $EXIT_SUCCESS
-	fi
-
-	# Create links to the real library.
-	for linkname in $linknames; do
-	  if test "$realname" != "$linkname"; then
-	    func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?'
-	  fi
-	done
-
-	# If -module or -export-dynamic was specified, set the dlname.
-	if test "$module" = yes || test "$export_dynamic" = yes; then
-	  # On all known operating systems, these are identical.
-	  dlname="$soname"
-	fi
-      fi
-      ;;
-
-    obj)
-      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
-	func_warning "\`-dlopen' is ignored for objects"
-      fi
-
-      case " $deplibs" in
-      *\ -l* | *\ -L*)
-	func_warning "\`-l' and \`-L' are ignored for objects" ;;
-      esac
-
-      test -n "$rpath" && \
-	func_warning "\`-rpath' is ignored for objects"
-
-      test -n "$xrpath" && \
-	func_warning "\`-R' is ignored for objects"
-
-      test -n "$vinfo" && \
-	func_warning "\`-version-info' is ignored for objects"
-
-      test -n "$release" && \
-	func_warning "\`-release' is ignored for objects"
-
-      case $output in
-      *.lo)
-	test -n "$objs$old_deplibs" && \
-	  func_fatal_error "cannot build library object \`$output' from non-libtool objects"
-
-	libobj=$output
-	func_lo2o "$libobj"
-	obj=$func_lo2o_result
-	;;
-      *)
-	libobj=
-	obj="$output"
-	;;
-      esac
-
-      # Delete the old objects.
-      $opt_dry_run || $RM $obj $libobj
-
-      # Objects from convenience libraries.  This assumes
-      # single-version convenience libraries.  Whenever we create
-      # different ones for PIC/non-PIC, this we'll have to duplicate
-      # the extraction.
-      reload_conv_objs=
-      gentop=
-      # reload_cmds runs $LD directly, so let us get rid of
-      # -Wl from whole_archive_flag_spec and hope we can get by with
-      # turning comma into space..
-      wl=
-
-      if test -n "$convenience"; then
-	if test -n "$whole_archive_flag_spec"; then
-	  eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\"
-	  reload_conv_objs=$reload_objs\ `$ECHO "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'`
-	else
-	  gentop="$output_objdir/${obj}x"
-	  generated="$generated $gentop"
-
-	  func_extract_archives $gentop $convenience
-	  reload_conv_objs="$reload_objs $func_extract_archives_result"
-	fi
-      fi
-
-      # Create the old-style object.
-      reload_objs="$objs$old_deplibs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test
-
-      output="$obj"
-      func_execute_cmds "$reload_cmds" 'exit $?'
-
-      # Exit if we aren't doing a library object file.
-      if test -z "$libobj"; then
-	if test -n "$gentop"; then
-	  func_show_eval '${RM}r "$gentop"'
-	fi
-
-	exit $EXIT_SUCCESS
-      fi
-
-      if test "$build_libtool_libs" != yes; then
-	if test -n "$gentop"; then
-	  func_show_eval '${RM}r "$gentop"'
-	fi
-
-	# Create an invalid libtool object if no PIC, so that we don't
-	# accidentally link it into a program.
-	# $show "echo timestamp > $libobj"
-	# $opt_dry_run || eval "echo timestamp > $libobj" || exit $?
-	exit $EXIT_SUCCESS
-      fi
-
-      if test -n "$pic_flag" || test "$pic_mode" != default; then
-	# Only do commands if we really have different PIC objects.
-	reload_objs="$libobjs $reload_conv_objs"
-	output="$libobj"
-	func_execute_cmds "$reload_cmds" 'exit $?'
-      fi
-
-      if test -n "$gentop"; then
-	func_show_eval '${RM}r "$gentop"'
-      fi
-
-      exit $EXIT_SUCCESS
-      ;;
-
-    prog)
-      case $host in
-	*cygwin*) func_stripname '' '.exe' "$output"
-	          output=$func_stripname_result.exe;;
-      esac
-      test -n "$vinfo" && \
-	func_warning "\`-version-info' is ignored for programs"
-
-      test -n "$release" && \
-	func_warning "\`-release' is ignored for programs"
-
-      test "$preload" = yes \
-        && test "$dlopen_support" = unknown \
-	&& test "$dlopen_self" = unknown \
-	&& test "$dlopen_self_static" = unknown && \
-	  func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support."
-
-      case $host in
-      *-*-rhapsody* | *-*-darwin1.[012])
-	# On Rhapsody replace the C library is the System framework
-	compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
-	finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
-	;;
-      esac
-
-      case $host in
-      *-*-darwin*)
-	# Don't allow lazy linking, it breaks C++ global constructors
-	# But is supposedly fixed on 10.4 or later (yay!).
-	if test "$tagname" = CXX ; then
-	  case ${MACOSX_DEPLOYMENT_TARGET-10.0} in
-	    10.[0123])
-	      compile_command="$compile_command ${wl}-bind_at_load"
-	      finalize_command="$finalize_command ${wl}-bind_at_load"
-	    ;;
-	  esac
-	fi
-	# Time to change all our "foo.ltframework" stuff back to "-framework foo"
-	compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
-	finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
-	;;
-      esac
-
-
-      # move library search paths that coincide with paths to not yet
-      # installed libraries to the beginning of the library search list
-      new_libs=
-      for path in $notinst_path; do
-	case " $new_libs " in
-	*" -L$path/$objdir "*) ;;
-	*)
-	  case " $compile_deplibs " in
-	  *" -L$path/$objdir "*)
-	    new_libs="$new_libs -L$path/$objdir" ;;
-	  esac
-	  ;;
-	esac
-      done
-      for deplib in $compile_deplibs; do
-	case $deplib in
-	-L*)
-	  case " $new_libs " in
-	  *" $deplib "*) ;;
-	  *) new_libs="$new_libs $deplib" ;;
-	  esac
-	  ;;
-	*) new_libs="$new_libs $deplib" ;;
-	esac
-      done
-      compile_deplibs="$new_libs"
-
-
-      compile_command="$compile_command $compile_deplibs"
-      finalize_command="$finalize_command $finalize_deplibs"
-
-      if test -n "$rpath$xrpath"; then
-	# If the user specified any rpath flags, then add them.
-	for libdir in $rpath $xrpath; do
-	  # This is the magic to use -rpath.
-	  case "$finalize_rpath " in
-	  *" $libdir "*) ;;
-	  *) finalize_rpath="$finalize_rpath $libdir" ;;
-	  esac
-	done
-      fi
-
-      # Now hardcode the library paths
-      rpath=
-      hardcode_libdirs=
-      for libdir in $compile_rpath $finalize_rpath; do
-	if test -n "$hardcode_libdir_flag_spec"; then
-	  if test -n "$hardcode_libdir_separator"; then
-	    if test -z "$hardcode_libdirs"; then
-	      hardcode_libdirs="$libdir"
-	    else
-	      # Just accumulate the unique libdirs.
-	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
-	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
-		;;
-	      *)
-		hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
-		;;
-	      esac
-	    fi
-	  else
-	    eval flag=\"$hardcode_libdir_flag_spec\"
-	    rpath="$rpath $flag"
-	  fi
-	elif test -n "$runpath_var"; then
-	  case "$perm_rpath " in
-	  *" $libdir "*) ;;
-	  *) perm_rpath="$perm_rpath $libdir" ;;
-	  esac
-	fi
-	case $host in
-	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
-	  testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'`
-	  case :$dllsearchpath: in
-	  *":$libdir:"*) ;;
-	  ::) dllsearchpath=$libdir;;
-	  *) dllsearchpath="$dllsearchpath:$libdir";;
-	  esac
-	  case :$dllsearchpath: in
-	  *":$testbindir:"*) ;;
-	  ::) dllsearchpath=$testbindir;;
-	  *) dllsearchpath="$dllsearchpath:$testbindir";;
-	  esac
-	  ;;
-	esac
-      done
-      # Substitute the hardcoded libdirs into the rpath.
-      if test -n "$hardcode_libdir_separator" &&
-	 test -n "$hardcode_libdirs"; then
-	libdir="$hardcode_libdirs"
-	eval rpath=\" $hardcode_libdir_flag_spec\"
-      fi
-      compile_rpath="$rpath"
-
-      rpath=
-      hardcode_libdirs=
-      for libdir in $finalize_rpath; do
-	if test -n "$hardcode_libdir_flag_spec"; then
-	  if test -n "$hardcode_libdir_separator"; then
-	    if test -z "$hardcode_libdirs"; then
-	      hardcode_libdirs="$libdir"
-	    else
-	      # Just accumulate the unique libdirs.
-	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
-	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
-		;;
-	      *)
-		hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
-		;;
-	      esac
-	    fi
-	  else
-	    eval flag=\"$hardcode_libdir_flag_spec\"
-	    rpath="$rpath $flag"
-	  fi
-	elif test -n "$runpath_var"; then
-	  case "$finalize_perm_rpath " in
-	  *" $libdir "*) ;;
-	  *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;;
-	  esac
-	fi
-      done
-      # Substitute the hardcoded libdirs into the rpath.
-      if test -n "$hardcode_libdir_separator" &&
-	 test -n "$hardcode_libdirs"; then
-	libdir="$hardcode_libdirs"
-	eval rpath=\" $hardcode_libdir_flag_spec\"
-      fi
-      finalize_rpath="$rpath"
-
-      if test -n "$libobjs" && test "$build_old_libs" = yes; then
-	# Transform all the library objects into standard objects.
-	compile_command=`$ECHO "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
-	finalize_command=`$ECHO "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
-      fi
-
-      func_generate_dlsyms "$outputname" "@PROGRAM@" "no"
-
-      # template prelinking step
-      if test -n "$prelink_cmds"; then
-	func_execute_cmds "$prelink_cmds" 'exit $?'
-      fi
-
-      wrappers_required=yes
-      case $host in
-      *cygwin* | *mingw* )
-        if test "$build_libtool_libs" != yes; then
-          wrappers_required=no
-        fi
-        ;;
-      *cegcc)
-        # Disable wrappers for cegcc, we are cross compiling anyway.
-        wrappers_required=no
-        ;;
-      *)
-        if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
-          wrappers_required=no
-        fi
-        ;;
-      esac
-      if test "$wrappers_required" = no; then
-	# Replace the output file specification.
-	compile_command=`$ECHO "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
-	link_command="$compile_command$compile_rpath"
-
-	# We have no uninstalled library dependencies, so finalize right now.
-	exit_status=0
-	func_show_eval "$link_command" 'exit_status=$?'
-
-	# Delete the generated files.
-	if test -f "$output_objdir/${outputname}S.${objext}"; then
-	  func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"'
-	fi
-
-	exit $exit_status
-      fi
-
-      if test -n "$compile_shlibpath$finalize_shlibpath"; then
-	compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
-      fi
-      if test -n "$finalize_shlibpath"; then
-	finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
-      fi
-
-      compile_var=
-      finalize_var=
-      if test -n "$runpath_var"; then
-	if test -n "$perm_rpath"; then
-	  # We should set the runpath_var.
-	  rpath=
-	  for dir in $perm_rpath; do
-	    rpath="$rpath$dir:"
-	  done
-	  compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
-	fi
-	if test -n "$finalize_perm_rpath"; then
-	  # We should set the runpath_var.
-	  rpath=
-	  for dir in $finalize_perm_rpath; do
-	    rpath="$rpath$dir:"
-	  done
-	  finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
-	fi
-      fi
-
-      if test "$no_install" = yes; then
-	# We don't need to create a wrapper script.
-	link_command="$compile_var$compile_command$compile_rpath"
-	# Replace the output file specification.
-	link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
-	# Delete the old output file.
-	$opt_dry_run || $RM $output
-	# Link the executable and exit
-	func_show_eval "$link_command" 'exit $?'
-	exit $EXIT_SUCCESS
-      fi
-
-      if test "$hardcode_action" = relink; then
-	# Fast installation is not supported
-	link_command="$compile_var$compile_command$compile_rpath"
-	relink_command="$finalize_var$finalize_command$finalize_rpath"
-
-	func_warning "this platform does not like uninstalled shared libraries"
-	func_warning "\`$output' will be relinked during installation"
-      else
-	if test "$fast_install" != no; then
-	  link_command="$finalize_var$compile_command$finalize_rpath"
-	  if test "$fast_install" = yes; then
-	    relink_command=`$ECHO "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'`
-	  else
-	    # fast_install is set to needless
-	    relink_command=
-	  fi
-	else
-	  link_command="$compile_var$compile_command$compile_rpath"
-	  relink_command="$finalize_var$finalize_command$finalize_rpath"
-	fi
-      fi
-
-      # Replace the output file specification.
-      link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
-
-      # Delete the old output files.
-      $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname
-
-      func_show_eval "$link_command" 'exit $?'
-
-      # Now create the wrapper script.
-      func_verbose "creating $output"
-
-      # Quote the relink command for shipping.
-      if test -n "$relink_command"; then
-	# Preserve any variables that may affect compiler behavior
-	for var in $variables_saved_for_relink; do
-	  if eval test -z \"\${$var+set}\"; then
-	    relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
-	  elif eval var_value=\$$var; test -z "$var_value"; then
-	    relink_command="$var=; export $var; $relink_command"
-	  else
-	    func_quote_for_eval "$var_value"
-	    relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
-	  fi
-	done
-	relink_command="(cd `pwd`; $relink_command)"
-	relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"`
-      fi
-
-      # Quote $ECHO for shipping.
-      if test "X$ECHO" = "X$SHELL $progpath --fallback-echo"; then
-	case $progpath in
-	[\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";;
-	*) qecho="$SHELL `pwd`/$progpath --fallback-echo";;
-	esac
-	qecho=`$ECHO "X$qecho" | $Xsed -e "$sed_quote_subst"`
-      else
-	qecho=`$ECHO "X$ECHO" | $Xsed -e "$sed_quote_subst"`
-      fi
-
-      # Only actually do things if not in dry run mode.
-      $opt_dry_run || {
-	# win32 will think the script is a binary if it has
-	# a .exe suffix, so we strip it off here.
-	case $output in
-	  *.exe) func_stripname '' '.exe' "$output"
-	         output=$func_stripname_result ;;
-	esac
-	# test for cygwin because mv fails w/o .exe extensions
-	case $host in
-	  *cygwin*)
-	    exeext=.exe
-	    func_stripname '' '.exe' "$outputname"
-	    outputname=$func_stripname_result ;;
-	  *) exeext= ;;
-	esac
-	case $host in
-	  *cygwin* | *mingw* )
-	    func_dirname_and_basename "$output" "" "."
-	    output_name=$func_basename_result
-	    output_path=$func_dirname_result
-	    cwrappersource="$output_path/$objdir/lt-$output_name.c"
-	    cwrapper="$output_path/$output_name.exe"
-	    $RM $cwrappersource $cwrapper
-	    trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
-
-	    func_emit_cwrapperexe_src > $cwrappersource
-
-	    # The wrapper executable is built using the $host compiler,
-	    # because it contains $host paths and files. If cross-
-	    # compiling, it, like the target executable, must be
-	    # executed on the $host or under an emulation environment.
-	    $opt_dry_run || {
-	      $LTCC $LTCFLAGS -o $cwrapper $cwrappersource
-	      $STRIP $cwrapper
-	    }
-
-	    # Now, create the wrapper script for func_source use:
-	    func_ltwrapper_scriptname $cwrapper
-	    $RM $func_ltwrapper_scriptname_result
-	    trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15
-	    $opt_dry_run || {
-	      # note: this script will not be executed, so do not chmod.
-	      if test "x$build" = "x$host" ; then
-		$cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result
-	      else
-		func_emit_wrapper no > $func_ltwrapper_scriptname_result
-	      fi
-	    }
-	  ;;
-	  * )
-	    $RM $output
-	    trap "$RM $output; exit $EXIT_FAILURE" 1 2 15
-
-	    func_emit_wrapper no > $output
-	    chmod +x $output
-	  ;;
-	esac
-      }
-      exit $EXIT_SUCCESS
-      ;;
-    esac
-
-    # See if we need to build an old-fashioned archive.
-    for oldlib in $oldlibs; do
-
-      if test "$build_libtool_libs" = convenience; then
-	oldobjs="$libobjs_save $symfileobj"
-	addlibs="$convenience"
-	build_libtool_libs=no
-      else
-	if test "$build_libtool_libs" = module; then
-	  oldobjs="$libobjs_save"
-	  build_libtool_libs=no
-	else
-	  oldobjs="$old_deplibs $non_pic_objects"
-	  if test "$preload" = yes && test -f "$symfileobj"; then
-	    oldobjs="$oldobjs $symfileobj"
-	  fi
-	fi
-	addlibs="$old_convenience"
-      fi
-
-      if test -n "$addlibs"; then
-	gentop="$output_objdir/${outputname}x"
-	generated="$generated $gentop"
-
-	func_extract_archives $gentop $addlibs
-	oldobjs="$oldobjs $func_extract_archives_result"
-      fi
-
-      # Do each command in the archive commands.
-      if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
-	cmds=$old_archive_from_new_cmds
-      else
-
-	# Add any objects from preloaded convenience libraries
-	if test -n "$dlprefiles"; then
-	  gentop="$output_objdir/${outputname}x"
-	  generated="$generated $gentop"
-
-	  func_extract_archives $gentop $dlprefiles
-	  oldobjs="$oldobjs $func_extract_archives_result"
-	fi
-
-	# POSIX demands no paths to be encoded in archives.  We have
-	# to avoid creating archives with duplicate basenames if we
-	# might have to extract them afterwards, e.g., when creating a
-	# static archive out of a convenience library, or when linking
-	# the entirety of a libtool archive into another (currently
-	# not supported by libtool).
-	if (for obj in $oldobjs
-	    do
-	      func_basename "$obj"
-	      $ECHO "$func_basename_result"
-	    done | sort | sort -uc >/dev/null 2>&1); then
-	  :
-	else
-	  $ECHO "copying selected object files to avoid basename conflicts..."
-	  gentop="$output_objdir/${outputname}x"
-	  generated="$generated $gentop"
-	  func_mkdir_p "$gentop"
-	  save_oldobjs=$oldobjs
-	  oldobjs=
-	  counter=1
-	  for obj in $save_oldobjs
-	  do
-	    func_basename "$obj"
-	    objbase="$func_basename_result"
-	    case " $oldobjs " in
-	    " ") oldobjs=$obj ;;
-	    *[\ /]"$objbase "*)
-	      while :; do
-		# Make sure we don't pick an alternate name that also
-		# overlaps.
-		newobj=lt$counter-$objbase
-		func_arith $counter + 1
-		counter=$func_arith_result
-		case " $oldobjs " in
-		*[\ /]"$newobj "*) ;;
-		*) if test ! -f "$gentop/$newobj"; then break; fi ;;
-		esac
-	      done
-	      func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
-	      oldobjs="$oldobjs $gentop/$newobj"
-	      ;;
-	    *) oldobjs="$oldobjs $obj" ;;
-	    esac
-	  done
-	fi
-	eval cmds=\"$old_archive_cmds\"
-
-	func_len " $cmds"
-	len=$func_len_result
-	if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
-	  cmds=$old_archive_cmds
-	else
-	  # the command line is too long to link in one step, link in parts
-	  func_verbose "using piecewise archive linking..."
-	  save_RANLIB=$RANLIB
-	  RANLIB=:
-	  objlist=
-	  concat_cmds=
-	  save_oldobjs=$oldobjs
-	  oldobjs=
-	  # Is there a better way of finding the last object in the list?
-	  for obj in $save_oldobjs
-	  do
-	    last_oldobj=$obj
-	  done
-	  eval test_cmds=\"$old_archive_cmds\"
-	  func_len " $test_cmds"
-	  len0=$func_len_result
-	  len=$len0
-	  for obj in $save_oldobjs
-	  do
-	    func_len " $obj"
-	    func_arith $len + $func_len_result
-	    len=$func_arith_result
-	    func_append objlist " $obj"
-	    if test "$len" -lt "$max_cmd_len"; then
-	      :
-	    else
-	      # the above command should be used before it gets too long
-	      oldobjs=$objlist
-	      if test "$obj" = "$last_oldobj" ; then
-		RANLIB=$save_RANLIB
-	      fi
-	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
-	      eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
-	      objlist=
-	      len=$len0
-	    fi
-	  done
-	  RANLIB=$save_RANLIB
-	  oldobjs=$objlist
-	  if test "X$oldobjs" = "X" ; then
-	    eval cmds=\"\$concat_cmds\"
-	  else
-	    eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
-	  fi
-	fi
-      fi
-      func_execute_cmds "$cmds" 'exit $?'
-    done
-
-    test -n "$generated" && \
-      func_show_eval "${RM}r$generated"
-
-    # Now create the libtool archive.
-    case $output in
-    *.la)
-      old_library=
-      test "$build_old_libs" = yes && old_library="$libname.$libext"
-      func_verbose "creating $output"
-
-      # Preserve any variables that may affect compiler behavior
-      for var in $variables_saved_for_relink; do
-	if eval test -z \"\${$var+set}\"; then
-	  relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
-	elif eval var_value=\$$var; test -z "$var_value"; then
-	  relink_command="$var=; export $var; $relink_command"
-	else
-	  func_quote_for_eval "$var_value"
-	  relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
-	fi
-      done
-      # Quote the link command for shipping.
-      relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
-      relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"`
-      if test "$hardcode_automatic" = yes ; then
-	relink_command=
-      fi
-
-      # Only create the output if not a dry run.
-      $opt_dry_run || {
-	for installed in no yes; do
-	  if test "$installed" = yes; then
-	    if test -z "$install_libdir"; then
-	      break
-	    fi
-	    output="$output_objdir/$outputname"i
-	    # Replace all uninstalled libtool libraries with the installed ones
-	    newdependency_libs=
-	    for deplib in $dependency_libs; do
-	      case $deplib in
-	      *.la)
-		func_basename "$deplib"
-		name="$func_basename_result"
-		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
-		test -z "$libdir" && \
-		  func_fatal_error "\`$deplib' is not a valid libtool archive"
-		newdependency_libs="$newdependency_libs $libdir/$name"
-		;;
-	      *) newdependency_libs="$newdependency_libs $deplib" ;;
-	      esac
-	    done
-	    dependency_libs="$newdependency_libs"
-	    newdlfiles=
-
-	    for lib in $dlfiles; do
-	      case $lib in
-	      *.la)
-	        func_basename "$lib"
-		name="$func_basename_result"
-		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
-		test -z "$libdir" && \
-		  func_fatal_error "\`$lib' is not a valid libtool archive"
-		newdlfiles="$newdlfiles $libdir/$name"
-		;;
-	      *) newdlfiles="$newdlfiles $lib" ;;
-	      esac
-	    done
-	    dlfiles="$newdlfiles"
-	    newdlprefiles=
-	    for lib in $dlprefiles; do
-	      case $lib in
-	      *.la)
-		# Only pass preopened files to the pseudo-archive (for
-		# eventual linking with the app. that links it) if we
-		# didn't already link the preopened objects directly into
-		# the library:
-		func_basename "$lib"
-		name="$func_basename_result"
-		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
-		test -z "$libdir" && \
-		  func_fatal_error "\`$lib' is not a valid libtool archive"
-		newdlprefiles="$newdlprefiles $libdir/$name"
-		;;
-	      esac
-	    done
-	    dlprefiles="$newdlprefiles"
-	  else
-	    newdlfiles=
-	    for lib in $dlfiles; do
-	      case $lib in
-		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
-		*) abs=`pwd`"/$lib" ;;
-	      esac
-	      newdlfiles="$newdlfiles $abs"
-	    done
-	    dlfiles="$newdlfiles"
-	    newdlprefiles=
-	    for lib in $dlprefiles; do
-	      case $lib in
-		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
-		*) abs=`pwd`"/$lib" ;;
-	      esac
-	      newdlprefiles="$newdlprefiles $abs"
-	    done
-	    dlprefiles="$newdlprefiles"
-	  fi
-	  $RM $output
-	  # place dlname in correct position for cygwin
-	  tdlname=$dlname
-	  case $host,$output,$installed,$module,$dlname in
-	    *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;;
-	  esac
-	  $ECHO > $output "\
-# $outputname - a libtool library file
-# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
-#
-# Please DO NOT delete this file!
-# It is necessary for linking the library.
-
-# The name that we can dlopen(3).
-dlname='$tdlname'
-
-# Names of this library.
-library_names='$library_names'
-
-# The name of the static archive.
-old_library='$old_library'
-
-# Linker flags that can not go in dependency_libs.
-inherited_linker_flags='$new_inherited_linker_flags'
-
-# Libraries that this one depends upon.
-dependency_libs='$dependency_libs'
-
-# Names of additional weak libraries provided by this library
-weak_library_names='$weak_libs'
-
-# Version information for $libname.
-current=$current
-age=$age
-revision=$revision
-
-# Is this an already installed library?
-installed=$installed
-
-# Should we warn about portability when linking against -modules?
-shouldnotlink=$module
-
-# Files to dlopen/dlpreopen
-dlopen='$dlfiles'
-dlpreopen='$dlprefiles'
-
-# Directory that this library needs to be installed in:
-libdir='$install_libdir'"
-	  if test "$installed" = no && test "$need_relink" = yes; then
-	    $ECHO >> $output "\
-relink_command=\"$relink_command\""
-	  fi
-	done
-      }
-
-      # Do a symbolic link so that the libtool archive can be found in
-      # LD_LIBRARY_PATH before the program is installed.
-      func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?'
-      ;;
-    esac
-    exit $EXIT_SUCCESS
-}
-
-{ test "$mode" = link || test "$mode" = relink; } &&
-    func_mode_link ${1+"$@"}
-
-
-# func_mode_uninstall arg...
-func_mode_uninstall ()
-{
-    $opt_debug
-    RM="$nonopt"
-    files=
-    rmforce=
-    exit_status=0
-
-    # This variable tells wrapper scripts just to set variables rather
-    # than running their programs.
-    libtool_install_magic="$magic"
-
-    for arg
-    do
-      case $arg in
-      -f) RM="$RM $arg"; rmforce=yes ;;
-      -*) RM="$RM $arg" ;;
-      *) files="$files $arg" ;;
-      esac
-    done
-
-    test -z "$RM" && \
-      func_fatal_help "you must specify an RM program"
-
-    rmdirs=
-
-    origobjdir="$objdir"
-    for file in $files; do
-      func_dirname "$file" "" "."
-      dir="$func_dirname_result"
-      if test "X$dir" = X.; then
-	objdir="$origobjdir"
-      else
-	objdir="$dir/$origobjdir"
-      fi
-      func_basename "$file"
-      name="$func_basename_result"
-      test "$mode" = uninstall && objdir="$dir"
-
-      # Remember objdir for removal later, being careful to avoid duplicates
-      if test "$mode" = clean; then
-	case " $rmdirs " in
-	  *" $objdir "*) ;;
-	  *) rmdirs="$rmdirs $objdir" ;;
-	esac
-      fi
-
-      # Don't error if the file doesn't exist and rm -f was used.
-      if { test -L "$file"; } >/dev/null 2>&1 ||
-	 { test -h "$file"; } >/dev/null 2>&1 ||
-	 test -f "$file"; then
-	:
-      elif test -d "$file"; then
-	exit_status=1
-	continue
-      elif test "$rmforce" = yes; then
-	continue
-      fi
-
-      rmfiles="$file"
-
-      case $name in
-      *.la)
-	# Possibly a libtool archive, so verify it.
-	if func_lalib_p "$file"; then
-	  func_source $dir/$name
-
-	  # Delete the libtool libraries and symlinks.
-	  for n in $library_names; do
-	    rmfiles="$rmfiles $objdir/$n"
-	  done
-	  test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library"
-
-	  case "$mode" in
-	  clean)
-	    case "  $library_names " in
-	    # "  " in the beginning catches empty $dlname
-	    *" $dlname "*) ;;
-	    *) rmfiles="$rmfiles $objdir/$dlname" ;;
-	    esac
-	    test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
-	    ;;
-	  uninstall)
-	    if test -n "$library_names"; then
-	      # Do each command in the postuninstall commands.
-	      func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
-	    fi
-
-	    if test -n "$old_library"; then
-	      # Do each command in the old_postuninstall commands.
-	      func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
-	    fi
-	    # FIXME: should reinstall the best remaining shared library.
-	    ;;
-	  esac
-	fi
-	;;
-
-      *.lo)
-	# Possibly a libtool object, so verify it.
-	if func_lalib_p "$file"; then
-
-	  # Read the .lo file
-	  func_source $dir/$name
-
-	  # Add PIC object to the list of files to remove.
-	  if test -n "$pic_object" &&
-	     test "$pic_object" != none; then
-	    rmfiles="$rmfiles $dir/$pic_object"
-	  fi
-
-	  # Add non-PIC object to the list of files to remove.
-	  if test -n "$non_pic_object" &&
-	     test "$non_pic_object" != none; then
-	    rmfiles="$rmfiles $dir/$non_pic_object"
-	  fi
-	fi
-	;;
-
-      *)
-	if test "$mode" = clean ; then
-	  noexename=$name
-	  case $file in
-	  *.exe)
-	    func_stripname '' '.exe' "$file"
-	    file=$func_stripname_result
-	    func_stripname '' '.exe' "$name"
-	    noexename=$func_stripname_result
-	    # $file with .exe has already been added to rmfiles,
-	    # add $file without .exe
-	    rmfiles="$rmfiles $file"
-	    ;;
-	  esac
-	  # Do a test to see if this is a libtool program.
-	  if func_ltwrapper_p "$file"; then
-	    if func_ltwrapper_executable_p "$file"; then
-	      func_ltwrapper_scriptname "$file"
-	      relink_command=
-	      func_source $func_ltwrapper_scriptname_result
-	      rmfiles="$rmfiles $func_ltwrapper_scriptname_result"
-	    else
-	      relink_command=
-	      func_source $dir/$noexename
-	    fi
-
-	    # note $name still contains .exe if it was in $file originally
-	    # as does the version of $file that was added into $rmfiles
-	    rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}"
-	    if test "$fast_install" = yes && test -n "$relink_command"; then
-	      rmfiles="$rmfiles $objdir/lt-$name"
-	    fi
-	    if test "X$noexename" != "X$name" ; then
-	      rmfiles="$rmfiles $objdir/lt-${noexename}.c"
-	    fi
-	  fi
-	fi
-	;;
-      esac
-      func_show_eval "$RM $rmfiles" 'exit_status=1'
-    done
-    objdir="$origobjdir"
-
-    # Try to remove the ${objdir}s in the directories where we deleted files
-    for dir in $rmdirs; do
-      if test -d "$dir"; then
-	func_show_eval "rmdir $dir >/dev/null 2>&1"
-      fi
-    done
-
-    exit $exit_status
-}
-
-{ test "$mode" = uninstall || test "$mode" = clean; } &&
-    func_mode_uninstall ${1+"$@"}
-
-test -z "$mode" && {
-  help="$generic_help"
-  func_fatal_help "you must specify a MODE"
-}
-
-test -z "$exec_cmd" && \
-  func_fatal_help "invalid operation mode \`$mode'"
-
-if test -n "$exec_cmd"; then
-  eval exec "$exec_cmd"
-  exit $EXIT_FAILURE
-fi
-
-exit $exit_status
-
-
-# The TAGs below are defined such that we never get into a situation
-# in which we disable both kinds of libraries.  Given conflicting
-# choices, we go for a static library, that is the most portable,
-# since we can't tell whether shared libraries were disabled because
-# the user asked for that or because the platform doesn't support
-# them.  This is particularly important on AIX, because we don't
-# support having both static and shared libraries enabled at the same
-# time on that platform, so we default to a shared-only configuration.
-# If a disable-shared tag is given, we'll fallback to a static-only
-# configuration.  But we'll never go from static-only to shared-only.
-
-# ### BEGIN LIBTOOL TAG CONFIG: disable-shared
-build_libtool_libs=no
-build_old_libs=yes
-# ### END LIBTOOL TAG CONFIG: disable-shared
-
-# ### BEGIN LIBTOOL TAG CONFIG: disable-static
-build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
-# ### END LIBTOOL TAG CONFIG: disable-static
-
-# Local Variables:
-# mode:shell-script
-# sh-indentation:2
-# End:
-# vi:sw=2
-
diff --git a/m4/libtool.m4 b/m4/libtool.m4
deleted file mode 100644
index a3fee53..0000000
--- a/m4/libtool.m4
+++ /dev/null
@@ -1,7377 +0,0 @@
-# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
-#
-#   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
-#                 2006, 2007, 2008 Free Software Foundation, Inc.
-#   Written by Gordon Matzigkeit, 1996
-#
-# This file is free software; the Free Software Foundation gives
-# unlimited permission to copy and/or distribute it, with or without
-# modifications, as long as this notice is preserved.
-
-m4_define([_LT_COPYING], [dnl
-#   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
-#                 2006, 2007, 2008 Free Software Foundation, Inc.
-#   Written by Gordon Matzigkeit, 1996
-#
-#   This file is part of GNU Libtool.
-#
-# GNU Libtool is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License as
-# published by the Free Software Foundation; either version 2 of
-# the License, or (at your option) any later version.
-#
-# As a special exception to the GNU General Public License,
-# if you distribute this file as part of a program or library that
-# is built using GNU Libtool, you may include this file under the
-# same distribution terms that you use for the rest of that program.
-#
-# GNU Libtool is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GNU Libtool; see the file COPYING.  If not, a copy
-# can be downloaded from http://www.gnu.org/licenses/gpl.html, or
-# obtained by writing to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-])
-
-# serial 56 LT_INIT
-
-
-# LT_PREREQ(VERSION)
-# ------------------
-# Complain and exit if this libtool version is less that VERSION.
-m4_defun([LT_PREREQ],
-[m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1,
-       [m4_default([$3],
-		   [m4_fatal([Libtool version $1 or higher is required],
-		             63)])],
-       [$2])])
-
-
-# _LT_CHECK_BUILDDIR
-# ------------------
-# Complain if the absolute build directory name contains unusual characters
-m4_defun([_LT_CHECK_BUILDDIR],
-[case `pwd` in
-  *\ * | *\	*)
-    AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;;
-esac
-])
-
-
-# LT_INIT([OPTIONS])
-# ------------------
-AC_DEFUN([LT_INIT],
-[AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT
-AC_BEFORE([$0], [LT_LANG])dnl
-AC_BEFORE([$0], [LT_OUTPUT])dnl
-AC_BEFORE([$0], [LTDL_INIT])dnl
-m4_require([_LT_CHECK_BUILDDIR])dnl
-
-dnl Autoconf doesn't catch unexpanded LT_ macros by default:
-m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl
-m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl
-dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4
-dnl unless we require an AC_DEFUNed macro:
-AC_REQUIRE([LTOPTIONS_VERSION])dnl
-AC_REQUIRE([LTSUGAR_VERSION])dnl
-AC_REQUIRE([LTVERSION_VERSION])dnl
-AC_REQUIRE([LTOBSOLETE_VERSION])dnl
-m4_require([_LT_PROG_LTMAIN])dnl
-
-dnl Parse OPTIONS
-_LT_SET_OPTIONS([$0], [$1])
-
-# This can be used to rebuild libtool when needed
-LIBTOOL_DEPS="$ltmain"
-
-# Always use our own libtool.
-LIBTOOL='$(SHELL) $(top_builddir)/libtool'
-AC_SUBST(LIBTOOL)dnl
-
-_LT_SETUP
-
-# Only expand once:
-m4_define([LT_INIT])
-])# LT_INIT
-
-# Old names:
-AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT])
-AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_PROG_LIBTOOL], [])
-dnl AC_DEFUN([AM_PROG_LIBTOOL], [])
-
-
-# _LT_CC_BASENAME(CC)
-# -------------------
-# Calculate cc_basename.  Skip known compiler wrappers and cross-prefix.
-m4_defun([_LT_CC_BASENAME],
-[for cc_temp in $1""; do
-  case $cc_temp in
-    compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;;
-    distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;;
-    \-*) ;;
-    *) break;;
-  esac
-done
-cc_basename=`$ECHO "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
-])
-
-
-# _LT_FILEUTILS_DEFAULTS
-# ----------------------
-# It is okay to use these file commands and assume they have been set
-# sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'.
-m4_defun([_LT_FILEUTILS_DEFAULTS],
-[: ${CP="cp -f"}
-: ${MV="mv -f"}
-: ${RM="rm -f"}
-])# _LT_FILEUTILS_DEFAULTS
-
-
-# _LT_SETUP
-# ---------
-m4_defun([_LT_SETUP],
-[AC_REQUIRE([AC_CANONICAL_HOST])dnl
-AC_REQUIRE([AC_CANONICAL_BUILD])dnl
-_LT_DECL([], [host_alias], [0], [The host system])dnl
-_LT_DECL([], [host], [0])dnl
-_LT_DECL([], [host_os], [0])dnl
-dnl
-_LT_DECL([], [build_alias], [0], [The build system])dnl
-_LT_DECL([], [build], [0])dnl
-_LT_DECL([], [build_os], [0])dnl
-dnl
-AC_REQUIRE([AC_PROG_CC])dnl
-AC_REQUIRE([LT_PATH_LD])dnl
-AC_REQUIRE([LT_PATH_NM])dnl
-dnl
-AC_REQUIRE([AC_PROG_LN_S])dnl
-test -z "$LN_S" && LN_S="ln -s"
-_LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl
-dnl
-AC_REQUIRE([LT_CMD_MAX_LEN])dnl
-_LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl
-_LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl
-dnl
-m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-m4_require([_LT_CHECK_SHELL_FEATURES])dnl
-m4_require([_LT_CMD_RELOAD])dnl
-m4_require([_LT_CHECK_MAGIC_METHOD])dnl
-m4_require([_LT_CMD_OLD_ARCHIVE])dnl
-m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl
-
-_LT_CONFIG_LIBTOOL_INIT([
-# See if we are running on zsh, and set the options which allow our
-# commands through without removal of \ escapes INIT.
-if test -n "\${ZSH_VERSION+set}" ; then
-   setopt NO_GLOB_SUBST
-fi
-])
-if test -n "${ZSH_VERSION+set}" ; then
-   setopt NO_GLOB_SUBST
-fi
-
-_LT_CHECK_OBJDIR
-
-m4_require([_LT_TAG_COMPILER])dnl
-_LT_PROG_ECHO_BACKSLASH
-
-case $host_os in
-aix3*)
-  # AIX sometimes has problems with the GCC collect2 program.  For some
-  # reason, if we set the COLLECT_NAMES environment variable, the problems
-  # vanish in a puff of smoke.
-  if test "X${COLLECT_NAMES+set}" != Xset; then
-    COLLECT_NAMES=
-    export COLLECT_NAMES
-  fi
-  ;;
-esac
-
-# Sed substitution that helps us do robust quoting.  It backslashifies
-# metacharacters that are still active within double-quoted strings.
-sed_quote_subst='s/\([["`$\\]]\)/\\\1/g'
-
-# Same as above, but do not quote variable references.
-double_quote_subst='s/\([["`\\]]\)/\\\1/g'
-
-# Sed substitution to delay expansion of an escaped shell variable in a
-# double_quote_subst'ed string.
-delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
-
-# Sed substitution to delay expansion of an escaped single quote.
-delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g'
-
-# Sed substitution to avoid accidental globbing in evaled expressions
-no_glob_subst='s/\*/\\\*/g'
-
-# Global variables:
-ofile=libtool
-can_build_shared=yes
-
-# All known linkers require a `.a' archive for static linking (except MSVC,
-# which needs '.lib').
-libext=a
-
-with_gnu_ld="$lt_cv_prog_gnu_ld"
-
-old_CC="$CC"
-old_CFLAGS="$CFLAGS"
-
-# Set sane defaults for various variables
-test -z "$CC" && CC=cc
-test -z "$LTCC" && LTCC=$CC
-test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS
-test -z "$LD" && LD=ld
-test -z "$ac_objext" && ac_objext=o
-
-_LT_CC_BASENAME([$compiler])
-
-# Only perform the check for file, if the check method requires it
-test -z "$MAGIC_CMD" && MAGIC_CMD=file
-case $deplibs_check_method in
-file_magic*)
-  if test "$file_magic_cmd" = '$MAGIC_CMD'; then
-    _LT_PATH_MAGIC
-  fi
-  ;;
-esac
-
-# Use C for the default configuration in the libtool script
-LT_SUPPORTED_TAG([CC])
-_LT_LANG_C_CONFIG
-_LT_LANG_DEFAULT_CONFIG
-_LT_CONFIG_COMMANDS
-])# _LT_SETUP
-
-
-# _LT_PROG_LTMAIN
-# ---------------
-# Note that this code is called both from `configure', and `config.status'
-# now that we use AC_CONFIG_COMMANDS to generate libtool.  Notably,
-# `config.status' has no value for ac_aux_dir unless we are using Automake,
-# so we pass a copy along to make sure it has a sensible value anyway.
-m4_defun([_LT_PROG_LTMAIN],
-[m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl
-_LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir'])
-ltmain="$ac_aux_dir/ltmain.sh"
-])# _LT_PROG_LTMAIN
-
-
-## ------------------------------------- ##
-## Accumulate code for creating libtool. ##
-## ------------------------------------- ##
-
-# So that we can recreate a full libtool script including additional
-# tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS
-# in macros and then make a single call at the end using the `libtool'
-# label.
-
-
-# _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS])
-# ----------------------------------------
-# Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later.
-m4_define([_LT_CONFIG_LIBTOOL_INIT],
-[m4_ifval([$1],
-          [m4_append([_LT_OUTPUT_LIBTOOL_INIT],
-                     [$1
-])])])
-
-# Initialize.
-m4_define([_LT_OUTPUT_LIBTOOL_INIT])
-
-
-# _LT_CONFIG_LIBTOOL([COMMANDS])
-# ------------------------------
-# Register COMMANDS to be passed to AC_CONFIG_COMMANDS later.
-m4_define([_LT_CONFIG_LIBTOOL],
-[m4_ifval([$1],
-          [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS],
-                     [$1
-])])])
-
-# Initialize.
-m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS])
-
-
-# _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS])
-# -----------------------------------------------------
-m4_defun([_LT_CONFIG_SAVE_COMMANDS],
-[_LT_CONFIG_LIBTOOL([$1])
-_LT_CONFIG_LIBTOOL_INIT([$2])
-])
-
-
-# _LT_FORMAT_COMMENT([COMMENT])
-# -----------------------------
-# Add leading comment marks to the start of each line, and a trailing
-# full-stop to the whole comment if one is not present already.
-m4_define([_LT_FORMAT_COMMENT],
-[m4_ifval([$1], [
-m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])],
-              [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.])
-)])
-
-
-
-## ------------------------ ##
-## FIXME: Eliminate VARNAME ##
-## ------------------------ ##
-
-
-# _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?])
-# -------------------------------------------------------------------
-# CONFIGNAME is the name given to the value in the libtool script.
-# VARNAME is the (base) name used in the configure script.
-# VALUE may be 0, 1 or 2 for a computed quote escaped value based on
-# VARNAME.  Any other value will be used directly.
-m4_define([_LT_DECL],
-[lt_if_append_uniq([lt_decl_varnames], [$2], [, ],
-    [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name],
-	[m4_ifval([$1], [$1], [$2])])
-    lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3])
-    m4_ifval([$4],
-	[lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])])
-    lt_dict_add_subkey([lt_decl_dict], [$2],
-	[tagged?], [m4_ifval([$5], [yes], [no])])])
-])
-
-
-# _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION])
-# --------------------------------------------------------
-m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])])
-
-
-# lt_decl_tag_varnames([SEPARATOR], [VARNAME1...])
-# ------------------------------------------------
-m4_define([lt_decl_tag_varnames],
-[_lt_decl_filter([tagged?], [yes], $@)])
-
-
-# _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..])
-# ---------------------------------------------------------
-m4_define([_lt_decl_filter],
-[m4_case([$#],
-  [0], [m4_fatal([$0: too few arguments: $#])],
-  [1], [m4_fatal([$0: too few arguments: $#: $1])],
-  [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)],
-  [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)],
-  [lt_dict_filter([lt_decl_dict], $@)])[]dnl
-])
-
-
-# lt_decl_quote_varnames([SEPARATOR], [VARNAME1...])
-# --------------------------------------------------
-m4_define([lt_decl_quote_varnames],
-[_lt_decl_filter([value], [1], $@)])
-
-
-# lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...])
-# ---------------------------------------------------
-m4_define([lt_decl_dquote_varnames],
-[_lt_decl_filter([value], [2], $@)])
-
-
-# lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...])
-# ---------------------------------------------------
-m4_define([lt_decl_varnames_tagged],
-[m4_assert([$# <= 2])dnl
-_$0(m4_quote(m4_default([$1], [[, ]])),
-    m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]),
-    m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))])
-m4_define([_lt_decl_varnames_tagged],
-[m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])])
-
-
-# lt_decl_all_varnames([SEPARATOR], [VARNAME1...])
-# ------------------------------------------------
-m4_define([lt_decl_all_varnames],
-[_$0(m4_quote(m4_default([$1], [[, ]])),
-     m4_if([$2], [],
-	   m4_quote(lt_decl_varnames),
-	m4_quote(m4_shift($@))))[]dnl
-])
-m4_define([_lt_decl_all_varnames],
-[lt_join($@, lt_decl_varnames_tagged([$1],
-			lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl
-])
-
-
-# _LT_CONFIG_STATUS_DECLARE([VARNAME])
-# ------------------------------------
-# Quote a variable value, and forward it to `config.status' so that its
-# declaration there will have the same value as in `configure'.  VARNAME
-# must have a single quote delimited value for this to work.
-m4_define([_LT_CONFIG_STATUS_DECLARE],
-[$1='`$ECHO "X$][$1" | $Xsed -e "$delay_single_quote_subst"`'])
-
-
-# _LT_CONFIG_STATUS_DECLARATIONS
-# ------------------------------
-# We delimit libtool config variables with single quotes, so when
-# we write them to config.status, we have to be sure to quote all
-# embedded single quotes properly.  In configure, this macro expands
-# each variable declared with _LT_DECL (and _LT_TAGDECL) into:
-#
-#    <var>='`$ECHO "X$<var>" | $Xsed -e "$delay_single_quote_subst"`'
-m4_defun([_LT_CONFIG_STATUS_DECLARATIONS],
-[m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames),
-    [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])])
-
-
-# _LT_LIBTOOL_TAGS
-# ----------------
-# Output comment and list of tags supported by the script
-m4_defun([_LT_LIBTOOL_TAGS],
-[_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl
-available_tags="_LT_TAGS"dnl
-])
-
-
-# _LT_LIBTOOL_DECLARE(VARNAME, [TAG])
-# -----------------------------------
-# Extract the dictionary values for VARNAME (optionally with TAG) and
-# expand to a commented shell variable setting:
-#
-#    # Some comment about what VAR is for.
-#    visible_name=$lt_internal_name
-m4_define([_LT_LIBTOOL_DECLARE],
-[_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1],
-					   [description])))[]dnl
-m4_pushdef([_libtool_name],
-    m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl
-m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])),
-    [0], [_libtool_name=[$]$1],
-    [1], [_libtool_name=$lt_[]$1],
-    [2], [_libtool_name=$lt_[]$1],
-    [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl
-m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl
-])
-
-
-# _LT_LIBTOOL_CONFIG_VARS
-# -----------------------
-# Produce commented declarations of non-tagged libtool config variables
-# suitable for insertion in the LIBTOOL CONFIG section of the `libtool'
-# script.  Tagged libtool config variables (even for the LIBTOOL CONFIG
-# section) are produced by _LT_LIBTOOL_TAG_VARS.
-m4_defun([_LT_LIBTOOL_CONFIG_VARS],
-[m4_foreach([_lt_var],
-    m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)),
-    [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])])
-
-
-# _LT_LIBTOOL_TAG_VARS(TAG)
-# -------------------------
-m4_define([_LT_LIBTOOL_TAG_VARS],
-[m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames),
-    [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])])
-
-
-# _LT_TAGVAR(VARNAME, [TAGNAME])
-# ------------------------------
-m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])])
-
-
-# _LT_CONFIG_COMMANDS
-# -------------------
-# Send accumulated output to $CONFIG_STATUS.  Thanks to the lists of
-# variables for single and double quote escaping we saved from calls
-# to _LT_DECL, we can put quote escaped variables declarations
-# into `config.status', and then the shell code to quote escape them in
-# for loops in `config.status'.  Finally, any additional code accumulated
-# from calls to _LT_CONFIG_LIBTOOL_INIT is expanded.
-m4_defun([_LT_CONFIG_COMMANDS],
-[AC_PROVIDE_IFELSE([LT_OUTPUT],
-	dnl If the libtool generation code has been placed in $CONFIG_LT,
-	dnl instead of duplicating it all over again into config.status,
-	dnl then we will have config.status run $CONFIG_LT later, so it
-	dnl needs to know what name is stored there:
-        [AC_CONFIG_COMMANDS([libtool],
-            [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])],
-    dnl If the libtool generation code is destined for config.status,
-    dnl expand the accumulated commands and init code now:
-    [AC_CONFIG_COMMANDS([libtool],
-        [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])])
-])#_LT_CONFIG_COMMANDS
-
-
-# Initialize.
-m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT],
-[
-
-# The HP-UX ksh and POSIX shell print the target directory to stdout
-# if CDPATH is set.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-sed_quote_subst='$sed_quote_subst'
-double_quote_subst='$double_quote_subst'
-delay_variable_subst='$delay_variable_subst'
-_LT_CONFIG_STATUS_DECLARATIONS
-LTCC='$LTCC'
-LTCFLAGS='$LTCFLAGS'
-compiler='$compiler_DEFAULT'
-
-# Quote evaled strings.
-for var in lt_decl_all_varnames([[ \
-]], lt_decl_quote_varnames); do
-    case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in
-    *[[\\\\\\\`\\"\\\$]]*)
-      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$sed_quote_subst\\"\\\`\\\\\\""
-      ;;
-    *)
-      eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
-      ;;
-    esac
-done
-
-# Double-quote double-evaled strings.
-for var in lt_decl_all_varnames([[ \
-]], lt_decl_dquote_varnames); do
-    case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in
-    *[[\\\\\\\`\\"\\\$]]*)
-      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\""
-      ;;
-    *)
-      eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
-      ;;
-    esac
-done
-
-# Fix-up fallback echo if it was mangled by the above quoting rules.
-case \$lt_ECHO in
-*'\\\[$]0 --fallback-echo"')dnl "
-  lt_ECHO=\`\$ECHO "X\$lt_ECHO" | \$Xsed -e 's/\\\\\\\\\\\\\\\[$]0 --fallback-echo"\[$]/\[$]0 --fallback-echo"/'\`
-  ;;
-esac
-
-_LT_OUTPUT_LIBTOOL_INIT
-])
-
-
-# LT_OUTPUT
-# ---------
-# This macro allows early generation of the libtool script (before
-# AC_OUTPUT is called), incase it is used in configure for compilation
-# tests.
-AC_DEFUN([LT_OUTPUT],
-[: ${CONFIG_LT=./config.lt}
-AC_MSG_NOTICE([creating $CONFIG_LT])
-cat >"$CONFIG_LT" <<_LTEOF
-#! $SHELL
-# Generated by $as_me.
-# Run this file to recreate a libtool stub with the current configuration.
-
-lt_cl_silent=false
-SHELL=\${CONFIG_SHELL-$SHELL}
-_LTEOF
-
-cat >>"$CONFIG_LT" <<\_LTEOF
-AS_SHELL_SANITIZE
-_AS_PREPARE
-
-exec AS_MESSAGE_FD>&1
-exec AS_MESSAGE_LOG_FD>>config.log
-{
-  echo
-  AS_BOX([Running $as_me.])
-} >&AS_MESSAGE_LOG_FD
-
-lt_cl_help="\
-\`$as_me' creates a local libtool stub from the current configuration,
-for use in further configure time tests before the real libtool is
-generated.
-
-Usage: $[0] [[OPTIONS]]
-
-  -h, --help      print this help, then exit
-  -V, --version   print version number, then exit
-  -q, --quiet     do not print progress messages
-  -d, --debug     don't remove temporary files
-
-Report bugs to <bug-libtool at gnu.org>."
-
-lt_cl_version="\
-m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl
-m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION])
-configured by $[0], generated by m4_PACKAGE_STRING.
-
-Copyright (C) 2008 Free Software Foundation, Inc.
-This config.lt script is free software; the Free Software Foundation
-gives unlimited permision to copy, distribute and modify it."
-
-while test $[#] != 0
-do
-  case $[1] in
-    --version | --v* | -V )
-      echo "$lt_cl_version"; exit 0 ;;
-    --help | --h* | -h )
-      echo "$lt_cl_help"; exit 0 ;;
-    --debug | --d* | -d )
-      debug=: ;;
-    --quiet | --q* | --silent | --s* | -q )
-      lt_cl_silent=: ;;
-
-    -*) AC_MSG_ERROR([unrecognized option: $[1]
-Try \`$[0] --help' for more information.]) ;;
-
-    *) AC_MSG_ERROR([unrecognized argument: $[1]
-Try \`$[0] --help' for more information.]) ;;
-  esac
-  shift
-done
-
-if $lt_cl_silent; then
-  exec AS_MESSAGE_FD>/dev/null
-fi
-_LTEOF
-
-cat >>"$CONFIG_LT" <<_LTEOF
-_LT_OUTPUT_LIBTOOL_COMMANDS_INIT
-_LTEOF
-
-cat >>"$CONFIG_LT" <<\_LTEOF
-AC_MSG_NOTICE([creating $ofile])
-_LT_OUTPUT_LIBTOOL_COMMANDS
-AS_EXIT(0)
-_LTEOF
-chmod +x "$CONFIG_LT"
-
-# configure is writing to config.log, but config.lt does its own redirection,
-# appending to config.log, which fails on DOS, as config.log is still kept
-# open by configure.  Here we exec the FD to /dev/null, effectively closing
-# config.log, so it can be properly (re)opened and appended to by config.lt.
-if test "$no_create" != yes; then
-  lt_cl_success=:
-  test "$silent" = yes &&
-    lt_config_lt_args="$lt_config_lt_args --quiet"
-  exec AS_MESSAGE_LOG_FD>/dev/null
-  $SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false
-  exec AS_MESSAGE_LOG_FD>>config.log
-  $lt_cl_success || AS_EXIT(1)
-fi
-])# LT_OUTPUT
-
-
-# _LT_CONFIG(TAG)
-# ---------------
-# If TAG is the built-in tag, create an initial libtool script with a
-# default configuration from the untagged config vars.  Otherwise add code
-# to config.status for appending the configuration named by TAG from the
-# matching tagged config vars.
-m4_defun([_LT_CONFIG],
-[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-_LT_CONFIG_SAVE_COMMANDS([
-  m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl
-  m4_if(_LT_TAG, [C], [
-    # See if we are running on zsh, and set the options which allow our
-    # commands through without removal of \ escapes.
-    if test -n "${ZSH_VERSION+set}" ; then
-      setopt NO_GLOB_SUBST
-    fi
-
-    cfgfile="${ofile}T"
-    trap "$RM \"$cfgfile\"; exit 1" 1 2 15
-    $RM "$cfgfile"
-
-    cat <<_LT_EOF >> "$cfgfile"
-#! $SHELL
-
-# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
-# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION
-# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
-# NOTE: Changes made to this file will be lost: look at ltmain.sh.
-#
-_LT_COPYING
-_LT_LIBTOOL_TAGS
-
-# ### BEGIN LIBTOOL CONFIG
-_LT_LIBTOOL_CONFIG_VARS
-_LT_LIBTOOL_TAG_VARS
-# ### END LIBTOOL CONFIG
-
-_LT_EOF
-
-  case $host_os in
-  aix3*)
-    cat <<\_LT_EOF >> "$cfgfile"
-# AIX sometimes has problems with the GCC collect2 program.  For some
-# reason, if we set the COLLECT_NAMES environment variable, the problems
-# vanish in a puff of smoke.
-if test "X${COLLECT_NAMES+set}" != Xset; then
-  COLLECT_NAMES=
-  export COLLECT_NAMES
-fi
-_LT_EOF
-    ;;
-  esac
-
-  _LT_PROG_LTMAIN
-
-  # We use sed instead of cat because bash on DJGPP gets confused if
-  # if finds mixed CR/LF and LF-only lines.  Since sed operates in
-  # text mode, it properly converts lines to CR/LF.  This bash problem
-  # is reportedly fixed, but why not run on old versions too?
-  sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \
-    || (rm -f "$cfgfile"; exit 1)
-
-  _LT_PROG_XSI_SHELLFNS
-
-  sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \
-    || (rm -f "$cfgfile"; exit 1)
-
-  mv -f "$cfgfile" "$ofile" ||
-    (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
-  chmod +x "$ofile"
-],
-[cat <<_LT_EOF >> "$ofile"
-
-dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded
-dnl in a comment (ie after a #).
-# ### BEGIN LIBTOOL TAG CONFIG: $1
-_LT_LIBTOOL_TAG_VARS(_LT_TAG)
-# ### END LIBTOOL TAG CONFIG: $1
-_LT_EOF
-])dnl /m4_if
-],
-[m4_if([$1], [], [
-    PACKAGE='$PACKAGE'
-    VERSION='$VERSION'
-    TIMESTAMP='$TIMESTAMP'
-    RM='$RM'
-    ofile='$ofile'], [])
-])dnl /_LT_CONFIG_SAVE_COMMANDS
-])# _LT_CONFIG
-
-
-# LT_SUPPORTED_TAG(TAG)
-# ---------------------
-# Trace this macro to discover what tags are supported by the libtool
-# --tag option, using:
-#    autoconf --trace 'LT_SUPPORTED_TAG:$1'
-AC_DEFUN([LT_SUPPORTED_TAG], [])
-
-
-# C support is built-in for now
-m4_define([_LT_LANG_C_enabled], [])
-m4_define([_LT_TAGS], [])
-
-
-# LT_LANG(LANG)
-# -------------
-# Enable libtool support for the given language if not already enabled.
-AC_DEFUN([LT_LANG],
-[AC_BEFORE([$0], [LT_OUTPUT])dnl
-m4_case([$1],
-  [C],			[_LT_LANG(C)],
-  [C++],		[_LT_LANG(CXX)],
-  [Java],		[_LT_LANG(GCJ)],
-  [Fortran 77],		[_LT_LANG(F77)],
-  [Fortran],		[_LT_LANG(FC)],
-  [Windows Resource],	[_LT_LANG(RC)],
-  [m4_ifdef([_LT_LANG_]$1[_CONFIG],
-    [_LT_LANG($1)],
-    [m4_fatal([$0: unsupported language: "$1"])])])dnl
-])# LT_LANG
-
-
-# _LT_LANG(LANGNAME)
-# ------------------
-m4_defun([_LT_LANG],
-[m4_ifdef([_LT_LANG_]$1[_enabled], [],
-  [LT_SUPPORTED_TAG([$1])dnl
-  m4_append([_LT_TAGS], [$1 ])dnl
-  m4_define([_LT_LANG_]$1[_enabled], [])dnl
-  _LT_LANG_$1_CONFIG($1)])dnl
-])# _LT_LANG
-
-
-# _LT_LANG_DEFAULT_CONFIG
-# -----------------------
-m4_defun([_LT_LANG_DEFAULT_CONFIG],
-[AC_PROVIDE_IFELSE([AC_PROG_CXX],
-  [LT_LANG(CXX)],
-  [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])])
-
-AC_PROVIDE_IFELSE([AC_PROG_F77],
-  [LT_LANG(F77)],
-  [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])])
-
-AC_PROVIDE_IFELSE([AC_PROG_FC],
-  [LT_LANG(FC)],
-  [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])])
-
-dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal
-dnl pulling things in needlessly.
-AC_PROVIDE_IFELSE([AC_PROG_GCJ],
-  [LT_LANG(GCJ)],
-  [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],
-    [LT_LANG(GCJ)],
-    [AC_PROVIDE_IFELSE([LT_PROG_GCJ],
-      [LT_LANG(GCJ)],
-      [m4_ifdef([AC_PROG_GCJ],
-	[m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])])
-       m4_ifdef([A][M_PROG_GCJ],
-	[m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])])
-       m4_ifdef([LT_PROG_GCJ],
-	[m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])])
-
-AC_PROVIDE_IFELSE([LT_PROG_RC],
-  [LT_LANG(RC)],
-  [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])])
-])# _LT_LANG_DEFAULT_CONFIG
-
-# Obsolete macros:
-AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)])
-AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)])
-AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)])
-AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_LIBTOOL_CXX], [])
-dnl AC_DEFUN([AC_LIBTOOL_F77], [])
-dnl AC_DEFUN([AC_LIBTOOL_FC], [])
-dnl AC_DEFUN([AC_LIBTOOL_GCJ], [])
-
-
-# _LT_TAG_COMPILER
-# ----------------
-m4_defun([_LT_TAG_COMPILER],
-[AC_REQUIRE([AC_PROG_CC])dnl
-
-_LT_DECL([LTCC], [CC], [1], [A C compiler])dnl
-_LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl
-_LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl
-_LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl
-
-# If no C compiler was specified, use CC.
-LTCC=${LTCC-"$CC"}
-
-# If no C compiler flags were specified, use CFLAGS.
-LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
-
-# Allow CC to be a program name with arguments.
-compiler=$CC
-])# _LT_TAG_COMPILER
-
-
-# _LT_COMPILER_BOILERPLATE
-# ------------------------
-# Check for compiler boilerplate output or warnings with
-# the simple compiler test code.
-m4_defun([_LT_COMPILER_BOILERPLATE],
-[m4_require([_LT_DECL_SED])dnl
-ac_outfile=conftest.$ac_objext
-echo "$lt_simple_compile_test_code" >conftest.$ac_ext
-eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
-_lt_compiler_boilerplate=`cat conftest.err`
-$RM conftest*
-])# _LT_COMPILER_BOILERPLATE
-
-
-# _LT_LINKER_BOILERPLATE
-# ----------------------
-# Check for linker boilerplate output or warnings with
-# the simple link test code.
-m4_defun([_LT_LINKER_BOILERPLATE],
-[m4_require([_LT_DECL_SED])dnl
-ac_outfile=conftest.$ac_objext
-echo "$lt_simple_link_test_code" >conftest.$ac_ext
-eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
-_lt_linker_boilerplate=`cat conftest.err`
-$RM -r conftest*
-])# _LT_LINKER_BOILERPLATE
-
-# _LT_REQUIRED_DARWIN_CHECKS
-# -------------------------
-m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[
-  case $host_os in
-    rhapsody* | darwin*)
-    AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:])
-    AC_CHECK_TOOL([NMEDIT], [nmedit], [:])
-    AC_CHECK_TOOL([LIPO], [lipo], [:])
-    AC_CHECK_TOOL([OTOOL], [otool], [:])
-    AC_CHECK_TOOL([OTOOL64], [otool64], [:])
-    _LT_DECL([], [DSYMUTIL], [1],
-      [Tool to manipulate archived DWARF debug symbol files on Mac OS X])
-    _LT_DECL([], [NMEDIT], [1],
-      [Tool to change global to local symbols on Mac OS X])
-    _LT_DECL([], [LIPO], [1],
-      [Tool to manipulate fat objects and archives on Mac OS X])
-    _LT_DECL([], [OTOOL], [1],
-      [ldd/readelf like tool for Mach-O binaries on Mac OS X])
-    _LT_DECL([], [OTOOL64], [1],
-      [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4])
-
-    AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod],
-      [lt_cv_apple_cc_single_mod=no
-      if test -z "${LT_MULTI_MODULE}"; then
-	# By default we will add the -single_module flag. You can override
-	# by either setting the environment variable LT_MULTI_MODULE
-	# non-empty at configure time, or by adding -multi_module to the
-	# link flags.
-	rm -rf libconftest.dylib*
-	echo "int foo(void){return 1;}" > conftest.c
-	echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
--dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD
-	$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
-	  -dynamiclib -Wl,-single_module conftest.c 2>conftest.err
-        _lt_result=$?
-	if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then
-	  lt_cv_apple_cc_single_mod=yes
-	else
-	  cat conftest.err >&AS_MESSAGE_LOG_FD
-	fi
-	rm -rf libconftest.dylib*
-	rm -f conftest.*
-      fi])
-    AC_CACHE_CHECK([for -exported_symbols_list linker flag],
-      [lt_cv_ld_exported_symbols_list],
-      [lt_cv_ld_exported_symbols_list=no
-      save_LDFLAGS=$LDFLAGS
-      echo "_main" > conftest.sym
-      LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym"
-      AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],
-	[lt_cv_ld_exported_symbols_list=yes],
-	[lt_cv_ld_exported_symbols_list=no])
-	LDFLAGS="$save_LDFLAGS"
-    ])
-    case $host_os in
-    rhapsody* | darwin1.[[012]])
-      _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;;
-    darwin1.*)
-      _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
-    darwin*) # darwin 5.x on
-      # if running on 10.5 or later, the deployment target defaults
-      # to the OS version, if on x86, and 10.4, the deployment
-      # target defaults to 10.4. Don't you love it?
-      case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
-	10.0,*86*-darwin8*|10.0,*-darwin[[91]]*)
-	  _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
-	10.[[012]]*)
-	  _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
-	10.*)
-	  _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
-      esac
-    ;;
-  esac
-    if test "$lt_cv_apple_cc_single_mod" = "yes"; then
-      _lt_dar_single_mod='$single_module'
-    fi
-    if test "$lt_cv_ld_exported_symbols_list" = "yes"; then
-      _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym'
-    else
-      _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}'
-    fi
-    if test "$DSYMUTIL" != ":"; then
-      _lt_dsymutil='~$DSYMUTIL $lib || :'
-    else
-      _lt_dsymutil=
-    fi
-    ;;
-  esac
-])
-
-
-# _LT_DARWIN_LINKER_FEATURES
-# --------------------------
-# Checks for linker and compiler features on darwin
-m4_defun([_LT_DARWIN_LINKER_FEATURES],
-[
-  m4_require([_LT_REQUIRED_DARWIN_CHECKS])
-  _LT_TAGVAR(archive_cmds_need_lc, $1)=no
-  _LT_TAGVAR(hardcode_direct, $1)=no
-  _LT_TAGVAR(hardcode_automatic, $1)=yes
-  _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
-  _LT_TAGVAR(whole_archive_flag_spec, $1)=''
-  _LT_TAGVAR(link_all_deplibs, $1)=yes
-  _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined"
-  case $cc_basename in
-     ifort*) _lt_dar_can_shared=yes ;;
-     *) _lt_dar_can_shared=$GCC ;;
-  esac
-  if test "$_lt_dar_can_shared" = "yes"; then
-    output_verbose_link_cmd=echo
-    _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
-    _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
-    _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
-    _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
-    m4_if([$1], [CXX],
-[   if test "$lt_cv_apple_cc_single_mod" != "yes"; then
-      _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}"
-      _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}"
-    fi
-],[])
-  else
-  _LT_TAGVAR(ld_shlibs, $1)=no
-  fi
-])
-
-# _LT_SYS_MODULE_PATH_AIX
-# -----------------------
-# Links a minimal program and checks the executable
-# for the system default hardcoded library path. In most cases,
-# this is /usr/lib:/lib, but when the MPI compilers are used
-# the location of the communication and MPI libs are included too.
-# If we don't find anything, use the default library path according
-# to the aix ld manual.
-m4_defun([_LT_SYS_MODULE_PATH_AIX],
-[m4_require([_LT_DECL_SED])dnl
-AC_LINK_IFELSE(AC_LANG_PROGRAM,[
-lt_aix_libpath_sed='
-    /Import File Strings/,/^$/ {
-	/^0/ {
-	    s/^0  *\(.*\)$/\1/
-	    p
-	}
-    }'
-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-# Check for a 64-bit object if we didn't find anything.
-if test -z "$aix_libpath"; then
-  aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-fi],[])
-if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
-])# _LT_SYS_MODULE_PATH_AIX
-
-
-# _LT_SHELL_INIT(ARG)
-# -------------------
-m4_define([_LT_SHELL_INIT],
-[ifdef([AC_DIVERSION_NOTICE],
-	     [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)],
-	 [AC_DIVERT_PUSH(NOTICE)])
-$1
-AC_DIVERT_POP
-])# _LT_SHELL_INIT
-
-
-# _LT_PROG_ECHO_BACKSLASH
-# -----------------------
-# Add some code to the start of the generated configure script which
-# will find an echo command which doesn't interpret backslashes.
-m4_defun([_LT_PROG_ECHO_BACKSLASH],
-[_LT_SHELL_INIT([
-# Check that we are running under the correct shell.
-SHELL=${CONFIG_SHELL-/bin/sh}
-
-case X$lt_ECHO in
-X*--fallback-echo)
-  # Remove one level of quotation (which was required for Make).
-  ECHO=`echo "$lt_ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','`
-  ;;
-esac
-
-ECHO=${lt_ECHO-echo}
-if test "X[$]1" = X--no-reexec; then
-  # Discard the --no-reexec flag, and continue.
-  shift
-elif test "X[$]1" = X--fallback-echo; then
-  # Avoid inline document here, it may be left over
-  :
-elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' ; then
-  # Yippee, $ECHO works!
-  :
-else
-  # Restart under the correct shell.
-  exec $SHELL "[$]0" --no-reexec ${1+"[$]@"}
-fi
-
-if test "X[$]1" = X--fallback-echo; then
-  # used as fallback echo
-  shift
-  cat <<_LT_EOF
-[$]*
-_LT_EOF
-  exit 0
-fi
-
-# The HP-UX ksh and POSIX shell print the target directory to stdout
-# if CDPATH is set.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-if test -z "$lt_ECHO"; then
-  if test "X${echo_test_string+set}" != Xset; then
-    # find a string as large as possible, as long as the shell can cope with it
-    for cmd in 'sed 50q "[$]0"' 'sed 20q "[$]0"' 'sed 10q "[$]0"' 'sed 2q "[$]0"' 'echo test'; do
-      # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ...
-      if { echo_test_string=`eval $cmd`; } 2>/dev/null &&
-	 { test "X$echo_test_string" = "X$echo_test_string"; } 2>/dev/null
-      then
-        break
-      fi
-    done
-  fi
-
-  if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' &&
-     echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` &&
-     test "X$echo_testing_string" = "X$echo_test_string"; then
-    :
-  else
-    # The Solaris, AIX, and Digital Unix default echo programs unquote
-    # backslashes.  This makes it impossible to quote backslashes using
-    #   echo "$something" | sed 's/\\/\\\\/g'
-    #
-    # So, first we look for a working echo in the user's PATH.
-
-    lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-    for dir in $PATH /usr/ucb; do
-      IFS="$lt_save_ifs"
-      if (test -f $dir/echo || test -f $dir/echo$ac_exeext) &&
-         test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' &&
-         echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` &&
-         test "X$echo_testing_string" = "X$echo_test_string"; then
-        ECHO="$dir/echo"
-        break
-      fi
-    done
-    IFS="$lt_save_ifs"
-
-    if test "X$ECHO" = Xecho; then
-      # We didn't find a better echo, so look for alternatives.
-      if test "X`{ print -r '\t'; } 2>/dev/null`" = 'X\t' &&
-         echo_testing_string=`{ print -r "$echo_test_string"; } 2>/dev/null` &&
-         test "X$echo_testing_string" = "X$echo_test_string"; then
-        # This shell has a builtin print -r that does the trick.
-        ECHO='print -r'
-      elif { test -f /bin/ksh || test -f /bin/ksh$ac_exeext; } &&
-	   test "X$CONFIG_SHELL" != X/bin/ksh; then
-        # If we have ksh, try running configure again with it.
-        ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
-        export ORIGINAL_CONFIG_SHELL
-        CONFIG_SHELL=/bin/ksh
-        export CONFIG_SHELL
-        exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"}
-      else
-        # Try using printf.
-        ECHO='printf %s\n'
-        if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' &&
-	   echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` &&
-	   test "X$echo_testing_string" = "X$echo_test_string"; then
-	  # Cool, printf works
-	  :
-        elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` &&
-	     test "X$echo_testing_string" = 'X\t' &&
-	     echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
-	     test "X$echo_testing_string" = "X$echo_test_string"; then
-	  CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL
-	  export CONFIG_SHELL
-	  SHELL="$CONFIG_SHELL"
-	  export SHELL
-	  ECHO="$CONFIG_SHELL [$]0 --fallback-echo"
-        elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` &&
-	     test "X$echo_testing_string" = 'X\t' &&
-	     echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
-	     test "X$echo_testing_string" = "X$echo_test_string"; then
-	  ECHO="$CONFIG_SHELL [$]0 --fallback-echo"
-        else
-	  # maybe with a smaller string...
-	  prev=:
-
-	  for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do
-	    if { test "X$echo_test_string" = "X`eval $cmd`"; } 2>/dev/null
-	    then
-	      break
-	    fi
-	    prev="$cmd"
-	  done
-
-	  if test "$prev" != 'sed 50q "[$]0"'; then
-	    echo_test_string=`eval $prev`
-	    export echo_test_string
-	    exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"}
-	  else
-	    # Oops.  We lost completely, so just stick with echo.
-	    ECHO=echo
-	  fi
-        fi
-      fi
-    fi
-  fi
-fi
-
-# Copy echo and quote the copy suitably for passing to libtool from
-# the Makefile, instead of quoting the original, which is used later.
-lt_ECHO=$ECHO
-if test "X$lt_ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then
-   lt_ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo"
-fi
-
-AC_SUBST(lt_ECHO)
-])
-_LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts])
-_LT_DECL([], [ECHO], [1],
-    [An echo program that does not interpret backslashes])
-])# _LT_PROG_ECHO_BACKSLASH
-
-
-# _LT_ENABLE_LOCK
-# ---------------
-m4_defun([_LT_ENABLE_LOCK],
-[AC_ARG_ENABLE([libtool-lock],
-  [AS_HELP_STRING([--disable-libtool-lock],
-    [avoid locking (might break parallel builds)])])
-test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
-
-# Some flags need to be propagated to the compiler or linker for good
-# libtool support.
-case $host in
-ia64-*-hpux*)
-  # Find out which ABI we are using.
-  echo 'int i;' > conftest.$ac_ext
-  if AC_TRY_EVAL(ac_compile); then
-    case `/usr/bin/file conftest.$ac_objext` in
-      *ELF-32*)
-	HPUX_IA64_MODE="32"
-	;;
-      *ELF-64*)
-	HPUX_IA64_MODE="64"
-	;;
-    esac
-  fi
-  rm -rf conftest*
-  ;;
-*-*-irix6*)
-  # Find out which ABI we are using.
-  echo '[#]line __oline__ "configure"' > conftest.$ac_ext
-  if AC_TRY_EVAL(ac_compile); then
-    if test "$lt_cv_prog_gnu_ld" = yes; then
-      case `/usr/bin/file conftest.$ac_objext` in
-	*32-bit*)
-	  LD="${LD-ld} -melf32bsmip"
-	  ;;
-	*N32*)
-	  LD="${LD-ld} -melf32bmipn32"
-	  ;;
-	*64-bit*)
-	  LD="${LD-ld} -melf64bmip"
-	;;
-      esac
-    else
-      case `/usr/bin/file conftest.$ac_objext` in
-	*32-bit*)
-	  LD="${LD-ld} -32"
-	  ;;
-	*N32*)
-	  LD="${LD-ld} -n32"
-	  ;;
-	*64-bit*)
-	  LD="${LD-ld} -64"
-	  ;;
-      esac
-    fi
-  fi
-  rm -rf conftest*
-  ;;
-
-x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
-s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
-  # Find out which ABI we are using.
-  echo 'int i;' > conftest.$ac_ext
-  if AC_TRY_EVAL(ac_compile); then
-    case `/usr/bin/file conftest.o` in
-      *32-bit*)
-	case $host in
-	  x86_64-*kfreebsd*-gnu)
-	    LD="${LD-ld} -m elf_i386_fbsd"
-	    ;;
-	  x86_64-*linux*)
-	    LD="${LD-ld} -m elf_i386"
-	    ;;
-	  ppc64-*linux*|powerpc64-*linux*)
-	    LD="${LD-ld} -m elf32ppclinux"
-	    ;;
-	  s390x-*linux*)
-	    LD="${LD-ld} -m elf_s390"
-	    ;;
-	  sparc64-*linux*)
-	    LD="${LD-ld} -m elf32_sparc"
-	    ;;
-	esac
-	;;
-      *64-bit*)
-	case $host in
-	  x86_64-*kfreebsd*-gnu)
-	    LD="${LD-ld} -m elf_x86_64_fbsd"
-	    ;;
-	  x86_64-*linux*)
-	    LD="${LD-ld} -m elf_x86_64"
-	    ;;
-	  ppc*-*linux*|powerpc*-*linux*)
-	    LD="${LD-ld} -m elf64ppc"
-	    ;;
-	  s390*-*linux*|s390*-*tpf*)
-	    LD="${LD-ld} -m elf64_s390"
-	    ;;
-	  sparc*-*linux*)
-	    LD="${LD-ld} -m elf64_sparc"
-	    ;;
-	esac
-	;;
-    esac
-  fi
-  rm -rf conftest*
-  ;;
-
-*-*-sco3.2v5*)
-  # On SCO OpenServer 5, we need -belf to get full-featured binaries.
-  SAVE_CFLAGS="$CFLAGS"
-  CFLAGS="$CFLAGS -belf"
-  AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf,
-    [AC_LANG_PUSH(C)
-     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no])
-     AC_LANG_POP])
-  if test x"$lt_cv_cc_needs_belf" != x"yes"; then
-    # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
-    CFLAGS="$SAVE_CFLAGS"
-  fi
-  ;;
-sparc*-*solaris*)
-  # Find out which ABI we are using.
-  echo 'int i;' > conftest.$ac_ext
-  if AC_TRY_EVAL(ac_compile); then
-    case `/usr/bin/file conftest.o` in
-    *64-bit*)
-      case $lt_cv_prog_gnu_ld in
-      yes*) LD="${LD-ld} -m elf64_sparc" ;;
-      *)
-	if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
-	  LD="${LD-ld} -64"
-	fi
-	;;
-      esac
-      ;;
-    esac
-  fi
-  rm -rf conftest*
-  ;;
-esac
-
-need_locks="$enable_libtool_lock"
-])# _LT_ENABLE_LOCK
-
-
-# _LT_CMD_OLD_ARCHIVE
-# -------------------
-m4_defun([_LT_CMD_OLD_ARCHIVE],
-[AC_CHECK_TOOL(AR, ar, false)
-test -z "$AR" && AR=ar
-test -z "$AR_FLAGS" && AR_FLAGS=cru
-_LT_DECL([], [AR], [1], [The archiver])
-_LT_DECL([], [AR_FLAGS], [1])
-
-AC_CHECK_TOOL(STRIP, strip, :)
-test -z "$STRIP" && STRIP=:
-_LT_DECL([], [STRIP], [1], [A symbol stripping program])
-
-AC_CHECK_TOOL(RANLIB, ranlib, :)
-test -z "$RANLIB" && RANLIB=:
-_LT_DECL([], [RANLIB], [1],
-    [Commands used to install an old-style archive])
-
-# Determine commands to create old-style static archives.
-old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs'
-old_postinstall_cmds='chmod 644 $oldlib'
-old_postuninstall_cmds=
-
-if test -n "$RANLIB"; then
-  case $host_os in
-  openbsd*)
-    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib"
-    ;;
-  *)
-    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib"
-    ;;
-  esac
-  old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
-fi
-_LT_DECL([], [old_postinstall_cmds], [2])
-_LT_DECL([], [old_postuninstall_cmds], [2])
-_LT_TAGDECL([], [old_archive_cmds], [2],
-    [Commands used to build an old-style archive])
-])# _LT_CMD_OLD_ARCHIVE
-
-
-# _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
-#		[OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE])
-# ----------------------------------------------------------------
-# Check whether the given compiler option works
-AC_DEFUN([_LT_COMPILER_OPTION],
-[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-m4_require([_LT_DECL_SED])dnl
-AC_CACHE_CHECK([$1], [$2],
-  [$2=no
-   m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4])
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-   lt_compiler_flag="$3"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   # The option is referenced via a variable to avoid confusing sed.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
-   (eval "$lt_compile" 2>conftest.err)
-   ac_status=$?
-   cat conftest.err >&AS_MESSAGE_LOG_FD
-   echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
-   if (exit $ac_status) && test -s "$ac_outfile"; then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings other than the usual output.
-     $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
-     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
-       $2=yes
-     fi
-   fi
-   $RM conftest*
-])
-
-if test x"[$]$2" = xyes; then
-    m4_if([$5], , :, [$5])
-else
-    m4_if([$6], , :, [$6])
-fi
-])# _LT_COMPILER_OPTION
-
-# Old name:
-AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], [])
-
-
-# _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
-#                  [ACTION-SUCCESS], [ACTION-FAILURE])
-# ----------------------------------------------------
-# Check whether the given linker option works
-AC_DEFUN([_LT_LINKER_OPTION],
-[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-m4_require([_LT_DECL_SED])dnl
-AC_CACHE_CHECK([$1], [$2],
-  [$2=no
-   save_LDFLAGS="$LDFLAGS"
-   LDFLAGS="$LDFLAGS $3"
-   echo "$lt_simple_link_test_code" > conftest.$ac_ext
-   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
-     # The linker can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     if test -s conftest.err; then
-       # Append any errors to the config.log.
-       cat conftest.err 1>&AS_MESSAGE_LOG_FD
-       $ECHO "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
-       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-       if diff conftest.exp conftest.er2 >/dev/null; then
-         $2=yes
-       fi
-     else
-       $2=yes
-     fi
-   fi
-   $RM -r conftest*
-   LDFLAGS="$save_LDFLAGS"
-])
-
-if test x"[$]$2" = xyes; then
-    m4_if([$4], , :, [$4])
-else
-    m4_if([$5], , :, [$5])
-fi
-])# _LT_LINKER_OPTION
-
-# Old name:
-AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], [])
-
-
-# LT_CMD_MAX_LEN
-#---------------
-AC_DEFUN([LT_CMD_MAX_LEN],
-[AC_REQUIRE([AC_CANONICAL_HOST])dnl
-# find the maximum length of command line arguments
-AC_MSG_CHECKING([the maximum length of command line arguments])
-AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
-  i=0
-  teststring="ABCD"
-
-  case $build_os in
-  msdosdjgpp*)
-    # On DJGPP, this test can blow up pretty badly due to problems in libc
-    # (any single argument exceeding 2000 bytes causes a buffer overrun
-    # during glob expansion).  Even if it were fixed, the result of this
-    # check would be larger than it should be.
-    lt_cv_sys_max_cmd_len=12288;    # 12K is about right
-    ;;
-
-  gnu*)
-    # Under GNU Hurd, this test is not required because there is
-    # no limit to the length of command line arguments.
-    # Libtool will interpret -1 as no limit whatsoever
-    lt_cv_sys_max_cmd_len=-1;
-    ;;
-
-  cygwin* | mingw* | cegcc*)
-    # On Win9x/ME, this test blows up -- it succeeds, but takes
-    # about 5 minutes as the teststring grows exponentially.
-    # Worse, since 9x/ME are not pre-emptively multitasking,
-    # you end up with a "frozen" computer, even though with patience
-    # the test eventually succeeds (with a max line length of 256k).
-    # Instead, let's just punt: use the minimum linelength reported by
-    # all of the supported platforms: 8192 (on NT/2K/XP).
-    lt_cv_sys_max_cmd_len=8192;
-    ;;
-
-  amigaos*)
-    # On AmigaOS with pdksh, this test takes hours, literally.
-    # So we just punt and use a minimum line length of 8192.
-    lt_cv_sys_max_cmd_len=8192;
-    ;;
-
-  netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
-    # This has been around since 386BSD, at least.  Likely further.
-    if test -x /sbin/sysctl; then
-      lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
-    elif test -x /usr/sbin/sysctl; then
-      lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
-    else
-      lt_cv_sys_max_cmd_len=65536	# usable default for all BSDs
-    fi
-    # And add a safety zone
-    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
-    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
-    ;;
-
-  interix*)
-    # We know the value 262144 and hardcode it with a safety zone (like BSD)
-    lt_cv_sys_max_cmd_len=196608
-    ;;
-
-  osf*)
-    # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
-    # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
-    # nice to cause kernel panics so lets avoid the loop below.
-    # First set a reasonable default.
-    lt_cv_sys_max_cmd_len=16384
-    #
-    if test -x /sbin/sysconfig; then
-      case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
-        *1*) lt_cv_sys_max_cmd_len=-1 ;;
-      esac
-    fi
-    ;;
-  sco3.2v5*)
-    lt_cv_sys_max_cmd_len=102400
-    ;;
-  sysv5* | sco5v6* | sysv4.2uw2*)
-    kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
-    if test -n "$kargmax"; then
-      lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[	 ]]//'`
-    else
-      lt_cv_sys_max_cmd_len=32768
-    fi
-    ;;
-  *)
-    lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
-    if test -n "$lt_cv_sys_max_cmd_len"; then
-      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
-      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
-    else
-      # Make teststring a little bigger before we do anything with it.
-      # a 1K string should be a reasonable start.
-      for i in 1 2 3 4 5 6 7 8 ; do
-        teststring=$teststring$teststring
-      done
-      SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
-      # If test is not a shell built-in, we'll probably end up computing a
-      # maximum length that is only half of the actual maximum length, but
-      # we can't tell.
-      while { test "X"`$SHELL [$]0 --fallback-echo "X$teststring$teststring" 2>/dev/null` \
-	         = "XX$teststring$teststring"; } >/dev/null 2>&1 &&
-	      test $i != 17 # 1/2 MB should be enough
-      do
-        i=`expr $i + 1`
-        teststring=$teststring$teststring
-      done
-      # Only check the string length outside the loop.
-      lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1`
-      teststring=
-      # Add a significant safety factor because C++ compilers can tack on
-      # massive amounts of additional arguments before passing them to the
-      # linker.  It appears as though 1/2 is a usable value.
-      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
-    fi
-    ;;
-  esac
-])
-if test -n $lt_cv_sys_max_cmd_len ; then
-  AC_MSG_RESULT($lt_cv_sys_max_cmd_len)
-else
-  AC_MSG_RESULT(none)
-fi
-max_cmd_len=$lt_cv_sys_max_cmd_len
-_LT_DECL([], [max_cmd_len], [0],
-    [What is the maximum length of a command?])
-])# LT_CMD_MAX_LEN
-
-# Old name:
-AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], [])
-
-
-# _LT_HEADER_DLFCN
-# ----------------
-m4_defun([_LT_HEADER_DLFCN],
-[AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl
-])# _LT_HEADER_DLFCN
-
-
-# _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE,
-#                      ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING)
-# ----------------------------------------------------------------
-m4_defun([_LT_TRY_DLOPEN_SELF],
-[m4_require([_LT_HEADER_DLFCN])dnl
-if test "$cross_compiling" = yes; then :
-  [$4]
-else
-  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
-  lt_status=$lt_dlunknown
-  cat > conftest.$ac_ext <<_LT_EOF
-[#line __oline__ "configure"
-#include "confdefs.h"
-
-#if HAVE_DLFCN_H
-#include <dlfcn.h>
-#endif
-
-#include <stdio.h>
-
-#ifdef RTLD_GLOBAL
-#  define LT_DLGLOBAL		RTLD_GLOBAL
-#else
-#  ifdef DL_GLOBAL
-#    define LT_DLGLOBAL		DL_GLOBAL
-#  else
-#    define LT_DLGLOBAL		0
-#  endif
-#endif
-
-/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
-   find out it does not work in some platform. */
-#ifndef LT_DLLAZY_OR_NOW
-#  ifdef RTLD_LAZY
-#    define LT_DLLAZY_OR_NOW		RTLD_LAZY
-#  else
-#    ifdef DL_LAZY
-#      define LT_DLLAZY_OR_NOW		DL_LAZY
-#    else
-#      ifdef RTLD_NOW
-#        define LT_DLLAZY_OR_NOW	RTLD_NOW
-#      else
-#        ifdef DL_NOW
-#          define LT_DLLAZY_OR_NOW	DL_NOW
-#        else
-#          define LT_DLLAZY_OR_NOW	0
-#        endif
-#      endif
-#    endif
-#  endif
-#endif
-
-void fnord() { int i=42;}
-int main ()
-{
-  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-  int status = $lt_dlunknown;
-
-  if (self)
-    {
-      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
-      else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
-      /* dlclose (self); */
-    }
-  else
-    puts (dlerror ());
-
-  return status;
-}]
-_LT_EOF
-  if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then
-    (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null
-    lt_status=$?
-    case x$lt_status in
-      x$lt_dlno_uscore) $1 ;;
-      x$lt_dlneed_uscore) $2 ;;
-      x$lt_dlunknown|x*) $3 ;;
-    esac
-  else :
-    # compilation failed
-    $3
-  fi
-fi
-rm -fr conftest*
-])# _LT_TRY_DLOPEN_SELF
-
-
-# LT_SYS_DLOPEN_SELF
-# ------------------
-AC_DEFUN([LT_SYS_DLOPEN_SELF],
-[m4_require([_LT_HEADER_DLFCN])dnl
-if test "x$enable_dlopen" != xyes; then
-  enable_dlopen=unknown
-  enable_dlopen_self=unknown
-  enable_dlopen_self_static=unknown
-else
-  lt_cv_dlopen=no
-  lt_cv_dlopen_libs=
-
-  case $host_os in
-  beos*)
-    lt_cv_dlopen="load_add_on"
-    lt_cv_dlopen_libs=
-    lt_cv_dlopen_self=yes
-    ;;
-
-  mingw* | pw32* | cegcc*)
-    lt_cv_dlopen="LoadLibrary"
-    lt_cv_dlopen_libs=
-    ;;
-
-  cygwin*)
-    lt_cv_dlopen="dlopen"
-    lt_cv_dlopen_libs=
-    ;;
-
-  darwin*)
-  # if libdl is installed we need to link against it
-    AC_CHECK_LIB([dl], [dlopen],
-		[lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[
-    lt_cv_dlopen="dyld"
-    lt_cv_dlopen_libs=
-    lt_cv_dlopen_self=yes
-    ])
-    ;;
-
-  *)
-    AC_CHECK_FUNC([shl_load],
-	  [lt_cv_dlopen="shl_load"],
-      [AC_CHECK_LIB([dld], [shl_load],
-	    [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"],
-	[AC_CHECK_FUNC([dlopen],
-	      [lt_cv_dlopen="dlopen"],
-	  [AC_CHECK_LIB([dl], [dlopen],
-		[lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],
-	    [AC_CHECK_LIB([svld], [dlopen],
-		  [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"],
-	      [AC_CHECK_LIB([dld], [dld_link],
-		    [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"])
-	      ])
-	    ])
-	  ])
-	])
-      ])
-    ;;
-  esac
-
-  if test "x$lt_cv_dlopen" != xno; then
-    enable_dlopen=yes
-  else
-    enable_dlopen=no
-  fi
-
-  case $lt_cv_dlopen in
-  dlopen)
-    save_CPPFLAGS="$CPPFLAGS"
-    test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
-
-    save_LDFLAGS="$LDFLAGS"
-    wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
-
-    save_LIBS="$LIBS"
-    LIBS="$lt_cv_dlopen_libs $LIBS"
-
-    AC_CACHE_CHECK([whether a program can dlopen itself],
-	  lt_cv_dlopen_self, [dnl
-	  _LT_TRY_DLOPEN_SELF(
-	    lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes,
-	    lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross)
-    ])
-
-    if test "x$lt_cv_dlopen_self" = xyes; then
-      wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
-      AC_CACHE_CHECK([whether a statically linked program can dlopen itself],
-	  lt_cv_dlopen_self_static, [dnl
-	  _LT_TRY_DLOPEN_SELF(
-	    lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes,
-	    lt_cv_dlopen_self_static=no,  lt_cv_dlopen_self_static=cross)
-      ])
-    fi
-
-    CPPFLAGS="$save_CPPFLAGS"
-    LDFLAGS="$save_LDFLAGS"
-    LIBS="$save_LIBS"
-    ;;
-  esac
-
-  case $lt_cv_dlopen_self in
-  yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
-  *) enable_dlopen_self=unknown ;;
-  esac
-
-  case $lt_cv_dlopen_self_static in
-  yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
-  *) enable_dlopen_self_static=unknown ;;
-  esac
-fi
-_LT_DECL([dlopen_support], [enable_dlopen], [0],
-	 [Whether dlopen is supported])
-_LT_DECL([dlopen_self], [enable_dlopen_self], [0],
-	 [Whether dlopen of programs is supported])
-_LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0],
-	 [Whether dlopen of statically linked programs is supported])
-])# LT_SYS_DLOPEN_SELF
-
-# Old name:
-AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], [])
-
-
-# _LT_COMPILER_C_O([TAGNAME])
-# ---------------------------
-# Check to see if options -c and -o are simultaneously supported by compiler.
-# This macro does not hard code the compiler like AC_PROG_CC_C_O.
-m4_defun([_LT_COMPILER_C_O],
-[m4_require([_LT_DECL_SED])dnl
-m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-m4_require([_LT_TAG_COMPILER])dnl
-AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext],
-  [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)],
-  [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no
-   $RM -r conftest 2>/dev/null
-   mkdir conftest
-   cd conftest
-   mkdir out
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
-   lt_compiler_flag="-o out/conftest2.$ac_objext"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
-   (eval "$lt_compile" 2>out/conftest.err)
-   ac_status=$?
-   cat out/conftest.err >&AS_MESSAGE_LOG_FD
-   echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
-   if (exit $ac_status) && test -s out/conftest2.$ac_objext
-   then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
-     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
-     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
-       _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
-     fi
-   fi
-   chmod u+w . 2>&AS_MESSAGE_LOG_FD
-   $RM conftest*
-   # SGI C++ compiler will create directory out/ii_files/ for
-   # template instantiation
-   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
-   $RM out/* && rmdir out
-   cd ..
-   $RM -r conftest
-   $RM conftest*
-])
-_LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1],
-	[Does compiler simultaneously support -c and -o options?])
-])# _LT_COMPILER_C_O
-
-
-# _LT_COMPILER_FILE_LOCKS([TAGNAME])
-# ----------------------------------
-# Check to see if we can do hard links to lock some files if needed
-m4_defun([_LT_COMPILER_FILE_LOCKS],
-[m4_require([_LT_ENABLE_LOCK])dnl
-m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-_LT_COMPILER_C_O([$1])
-
-hard_links="nottested"
-if test "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then
-  # do not overwrite the value of need_locks provided by the user
-  AC_MSG_CHECKING([if we can lock with hard links])
-  hard_links=yes
-  $RM conftest*
-  ln conftest.a conftest.b 2>/dev/null && hard_links=no
-  touch conftest.a
-  ln conftest.a conftest.b 2>&5 || hard_links=no
-  ln conftest.a conftest.b 2>/dev/null && hard_links=no
-  AC_MSG_RESULT([$hard_links])
-  if test "$hard_links" = no; then
-    AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe])
-    need_locks=warn
-  fi
-else
-  need_locks=no
-fi
-_LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?])
-])# _LT_COMPILER_FILE_LOCKS
-
-
-# _LT_CHECK_OBJDIR
-# ----------------
-m4_defun([_LT_CHECK_OBJDIR],
-[AC_CACHE_CHECK([for objdir], [lt_cv_objdir],
-[rm -f .libs 2>/dev/null
-mkdir .libs 2>/dev/null
-if test -d .libs; then
-  lt_cv_objdir=.libs
-else
-  # MS-DOS does not allow filenames that begin with a dot.
-  lt_cv_objdir=_libs
-fi
-rmdir .libs 2>/dev/null])
-objdir=$lt_cv_objdir
-_LT_DECL([], [objdir], [0],
-         [The name of the directory that contains temporary libtool files])dnl
-m4_pattern_allow([LT_OBJDIR])dnl
-AC_DEFINE_UNQUOTED(LT_OBJDIR, "$lt_cv_objdir/",
-  [Define to the sub-directory in which libtool stores uninstalled libraries.])
-])# _LT_CHECK_OBJDIR
-
-
-# _LT_LINKER_HARDCODE_LIBPATH([TAGNAME])
-# --------------------------------------
-# Check hardcoding attributes.
-m4_defun([_LT_LINKER_HARDCODE_LIBPATH],
-[AC_MSG_CHECKING([how to hardcode library paths into programs])
-_LT_TAGVAR(hardcode_action, $1)=
-if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" ||
-   test -n "$_LT_TAGVAR(runpath_var, $1)" ||
-   test "X$_LT_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then
-
-  # We can hardcode non-existent directories.
-  if test "$_LT_TAGVAR(hardcode_direct, $1)" != no &&
-     # If the only mechanism to avoid hardcoding is shlibpath_var, we
-     # have to relink, otherwise we might link with an installed library
-     # when we should be linking with a yet-to-be-installed one
-     ## test "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" != no &&
-     test "$_LT_TAGVAR(hardcode_minus_L, $1)" != no; then
-    # Linking always hardcodes the temporary library directory.
-    _LT_TAGVAR(hardcode_action, $1)=relink
-  else
-    # We can link without hardcoding, and we can hardcode nonexisting dirs.
-    _LT_TAGVAR(hardcode_action, $1)=immediate
-  fi
-else
-  # We cannot hardcode anything, or else we can only hardcode existing
-  # directories.
-  _LT_TAGVAR(hardcode_action, $1)=unsupported
-fi
-AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)])
-
-if test "$_LT_TAGVAR(hardcode_action, $1)" = relink ||
-   test "$_LT_TAGVAR(inherit_rpath, $1)" = yes; then
-  # Fast installation is not supported
-  enable_fast_install=no
-elif test "$shlibpath_overrides_runpath" = yes ||
-     test "$enable_shared" = no; then
-  # Fast installation is not necessary
-  enable_fast_install=needless
-fi
-_LT_TAGDECL([], [hardcode_action], [0],
-    [How to hardcode a shared library path into an executable])
-])# _LT_LINKER_HARDCODE_LIBPATH
-
-
-# _LT_CMD_STRIPLIB
-# ----------------
-m4_defun([_LT_CMD_STRIPLIB],
-[m4_require([_LT_DECL_EGREP])
-striplib=
-old_striplib=
-AC_MSG_CHECKING([whether stripping libraries is possible])
-if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then
-  test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
-  test -z "$striplib" && striplib="$STRIP --strip-unneeded"
-  AC_MSG_RESULT([yes])
-else
-# FIXME - insert some real tests, host_os isn't really good enough
-  case $host_os in
-  darwin*)
-    if test -n "$STRIP" ; then
-      striplib="$STRIP -x"
-      old_striplib="$STRIP -S"
-      AC_MSG_RESULT([yes])
-    else
-      AC_MSG_RESULT([no])
-    fi
-    ;;
-  *)
-    AC_MSG_RESULT([no])
-    ;;
-  esac
-fi
-_LT_DECL([], [old_striplib], [1], [Commands to strip libraries])
-_LT_DECL([], [striplib], [1])
-])# _LT_CMD_STRIPLIB
-
-
-# _LT_SYS_DYNAMIC_LINKER([TAG])
-# -----------------------------
-# PORTME Fill in your ld.so characteristics
-m4_defun([_LT_SYS_DYNAMIC_LINKER],
-[AC_REQUIRE([AC_CANONICAL_HOST])dnl
-m4_require([_LT_DECL_EGREP])dnl
-m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-m4_require([_LT_DECL_OBJDUMP])dnl
-m4_require([_LT_DECL_SED])dnl
-AC_MSG_CHECKING([dynamic linker characteristics])
-m4_if([$1],
-	[], [
-if test "$GCC" = yes; then
-  case $host_os in
-    darwin*) lt_awk_arg="/^libraries:/,/LR/" ;;
-    *) lt_awk_arg="/^libraries:/" ;;
-  esac
-  lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"`
-  if $ECHO "$lt_search_path_spec" | $GREP ';' >/dev/null ; then
-    # if the path contains ";" then we assume it to be the separator
-    # otherwise default to the standard path separator (i.e. ":") - it is
-    # assumed that no part of a normal pathname contains ";" but that should
-    # okay in the real world where ";" in dirpaths is itself problematic.
-    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e 's/;/ /g'`
-  else
-    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
-  fi
-  # Ok, now we have the path, separated by spaces, we can step through it
-  # and add multilib dir if necessary.
-  lt_tmp_lt_search_path_spec=
-  lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
-  for lt_sys_path in $lt_search_path_spec; do
-    if test -d "$lt_sys_path/$lt_multi_os_dir"; then
-      lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir"
-    else
-      test -d "$lt_sys_path" && \
-	lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path"
-    fi
-  done
-  lt_search_path_spec=`$ECHO $lt_tmp_lt_search_path_spec | awk '
-BEGIN {RS=" "; FS="/|\n";} {
-  lt_foo="";
-  lt_count=0;
-  for (lt_i = NF; lt_i > 0; lt_i--) {
-    if ($lt_i != "" && $lt_i != ".") {
-      if ($lt_i == "..") {
-        lt_count++;
-      } else {
-        if (lt_count == 0) {
-          lt_foo="/" $lt_i lt_foo;
-        } else {
-          lt_count--;
-        }
-      }
-    }
-  }
-  if (lt_foo != "") { lt_freq[[lt_foo]]++; }
-  if (lt_freq[[lt_foo]] == 1) { print lt_foo; }
-}'`
-  sys_lib_search_path_spec=`$ECHO $lt_search_path_spec`
-else
-  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
-fi])
-library_names_spec=
-libname_spec='lib$name'
-soname_spec=
-shrext_cmds=".so"
-postinstall_cmds=
-postuninstall_cmds=
-finish_cmds=
-finish_eval=
-shlibpath_var=
-shlibpath_overrides_runpath=unknown
-version_type=none
-dynamic_linker="$host_os ld.so"
-sys_lib_dlsearch_path_spec="/lib /usr/lib"
-need_lib_prefix=unknown
-hardcode_into_libs=no
-
-# when you set need_version to no, make sure it does not cause -set_version
-# flags to be left without arguments
-need_version=unknown
-
-case $host_os in
-aix3*)
-  version_type=linux
-  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
-  shlibpath_var=LIBPATH
-
-  # AIX 3 has no versioning support, so we append a major version to the name.
-  soname_spec='${libname}${release}${shared_ext}$major'
-  ;;
-
-aix[[4-9]]*)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  hardcode_into_libs=yes
-  if test "$host_cpu" = ia64; then
-    # AIX 5 supports IA64
-    library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
-    shlibpath_var=LD_LIBRARY_PATH
-  else
-    # With GCC up to 2.95.x, collect2 would create an import file
-    # for dependence libraries.  The import file would start with
-    # the line `#! .'.  This would cause the generated library to
-    # depend on `.', always an invalid library.  This was fixed in
-    # development snapshots of GCC prior to 3.0.
-    case $host_os in
-      aix4 | aix4.[[01]] | aix4.[[01]].*)
-      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
-	   echo ' yes '
-	   echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then
-	:
-      else
-	can_build_shared=no
-      fi
-      ;;
-    esac
-    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
-    # soname into executable. Probably we can add versioning support to
-    # collect2, so additional links can be useful in future.
-    if test "$aix_use_runtimelinking" = yes; then
-      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
-      # instead of lib<name>.a to let people know that these are not
-      # typical AIX shared libraries.
-      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    else
-      # We preserve .a as extension for shared libraries through AIX4.2
-      # and later when we are not doing run time linking.
-      library_names_spec='${libname}${release}.a $libname.a'
-      soname_spec='${libname}${release}${shared_ext}$major'
-    fi
-    shlibpath_var=LIBPATH
-  fi
-  ;;
-
-amigaos*)
-  case $host_cpu in
-  powerpc)
-    # Since July 2007 AmigaOS4 officially supports .so libraries.
-    # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    ;;
-  m68k)
-    library_names_spec='$libname.ixlibrary $libname.a'
-    # Create ${libname}_ixlibrary.a entries in /sys/libs.
-    finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$ECHO "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
-    ;;
-  esac
-  ;;
-
-beos*)
-  library_names_spec='${libname}${shared_ext}'
-  dynamic_linker="$host_os ld.so"
-  shlibpath_var=LIBRARY_PATH
-  ;;
-
-bsdi[[45]]*)
-  version_type=linux
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
-  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
-  # the default ld.so.conf also contains /usr/contrib/lib and
-  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
-  # libtool to hard-code these into programs
-  ;;
-
-cygwin* | mingw* | pw32* | cegcc*)
-  version_type=windows
-  shrext_cmds=".dll"
-  need_version=no
-  need_lib_prefix=no
-
-  case $GCC,$host_os in
-  yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*)
-    library_names_spec='$libname.dll.a'
-    # DLL is installed to $(libdir)/../bin by postinstall_cmds
-    postinstall_cmds='base_file=`basename \${file}`~
-      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
-      dldir=$destdir/`dirname \$dlpath`~
-      test -d \$dldir || mkdir -p \$dldir~
-      $install_prog $dir/$dlname \$dldir/$dlname~
-      chmod a+x \$dldir/$dlname~
-      if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
-        eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
-      fi'
-    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
-      dlpath=$dir/\$dldll~
-       $RM \$dlpath'
-    shlibpath_overrides_runpath=yes
-
-    case $host_os in
-    cygwin*)
-      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
-      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
-      sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
-      ;;
-    mingw* | cegcc*)
-      # MinGW DLLs use traditional 'lib' prefix
-      soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
-      sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
-      if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then
-        # It is most probably a Windows format PATH printed by
-        # mingw gcc, but we are running on Cygwin. Gcc prints its search
-        # path with ; separators, and with drive letters. We can handle the
-        # drive letters (cygwin fileutils understands them), so leave them,
-        # especially as we might pass files found there to a mingw objdump,
-        # which wouldn't understand a cygwinified path. Ahh.
-        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
-      else
-        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
-      fi
-      ;;
-    pw32*)
-      # pw32 DLLs use 'pw' prefix rather than 'lib'
-      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
-      ;;
-    esac
-    ;;
-
-  *)
-    library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib'
-    ;;
-  esac
-  dynamic_linker='Win32 ld.exe'
-  # FIXME: first we should search . and the directory the executable is in
-  shlibpath_var=PATH
-  ;;
-
-darwin* | rhapsody*)
-  dynamic_linker="$host_os dyld"
-  version_type=darwin
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext'
-  soname_spec='${libname}${release}${major}$shared_ext'
-  shlibpath_overrides_runpath=yes
-  shlibpath_var=DYLD_LIBRARY_PATH
-  shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
-m4_if([$1], [],[
-  sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"])
-  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
-  ;;
-
-dgux*)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  ;;
-
-freebsd1*)
-  dynamic_linker=no
-  ;;
-
-freebsd* | dragonfly*)
-  # DragonFly does not have aout.  When/if they implement a new
-  # versioning mechanism, adjust this.
-  if test -x /usr/bin/objformat; then
-    objformat=`/usr/bin/objformat`
-  else
-    case $host_os in
-    freebsd[[123]]*) objformat=aout ;;
-    *) objformat=elf ;;
-    esac
-  fi
-  version_type=freebsd-$objformat
-  case $version_type in
-    freebsd-elf*)
-      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
-      need_version=no
-      need_lib_prefix=no
-      ;;
-    freebsd-*)
-      library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
-      need_version=yes
-      ;;
-  esac
-  shlibpath_var=LD_LIBRARY_PATH
-  case $host_os in
-  freebsd2*)
-    shlibpath_overrides_runpath=yes
-    ;;
-  freebsd3.[[01]]* | freebsdelf3.[[01]]*)
-    shlibpath_overrides_runpath=yes
-    hardcode_into_libs=yes
-    ;;
-  freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \
-  freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1)
-    shlibpath_overrides_runpath=no
-    hardcode_into_libs=yes
-    ;;
-  *) # from 4.6 on, and DragonFly
-    shlibpath_overrides_runpath=yes
-    hardcode_into_libs=yes
-    ;;
-  esac
-  ;;
-
-gnu*)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  hardcode_into_libs=yes
-  ;;
-
-hpux9* | hpux10* | hpux11*)
-  # Give a soname corresponding to the major version so that dld.sl refuses to
-  # link against other versions.
-  version_type=sunos
-  need_lib_prefix=no
-  need_version=no
-  case $host_cpu in
-  ia64*)
-    shrext_cmds='.so'
-    hardcode_into_libs=yes
-    dynamic_linker="$host_os dld.so"
-    shlibpath_var=LD_LIBRARY_PATH
-    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    if test "X$HPUX_IA64_MODE" = X32; then
-      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
-    else
-      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
-    fi
-    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-    ;;
-  hppa*64*)
-    shrext_cmds='.sl'
-    hardcode_into_libs=yes
-    dynamic_linker="$host_os dld.sl"
-    shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
-    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
-    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-    ;;
-  *)
-    shrext_cmds='.sl'
-    dynamic_linker="$host_os dld.sl"
-    shlibpath_var=SHLIB_PATH
-    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    ;;
-  esac
-  # HP-UX runs *really* slowly unless shared libraries are mode 555.
-  postinstall_cmds='chmod 555 $lib'
-  ;;
-
-interix[[3-9]]*)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
-
-irix5* | irix6* | nonstopux*)
-  case $host_os in
-    nonstopux*) version_type=nonstopux ;;
-    *)
-	if test "$lt_cv_prog_gnu_ld" = yes; then
-		version_type=linux
-	else
-		version_type=irix
-	fi ;;
-  esac
-  need_lib_prefix=no
-  need_version=no
-  soname_spec='${libname}${release}${shared_ext}$major'
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
-  case $host_os in
-  irix5* | nonstopux*)
-    libsuff= shlibsuff=
-    ;;
-  *)
-    case $LD in # libtool.m4 will add one of these switches to LD
-    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
-      libsuff= shlibsuff= libmagic=32-bit;;
-    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
-      libsuff=32 shlibsuff=N32 libmagic=N32;;
-    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
-      libsuff=64 shlibsuff=64 libmagic=64-bit;;
-    *) libsuff= shlibsuff= libmagic=never-match;;
-    esac
-    ;;
-  esac
-  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
-  shlibpath_overrides_runpath=no
-  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
-  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
-  hardcode_into_libs=yes
-  ;;
-
-# No shared lib support for Linux oldld, aout, or coff.
-linux*oldld* | linux*aout* | linux*coff*)
-  dynamic_linker=no
-  ;;
-
-# This must be Linux ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  # Some binutils ld are patched to set DT_RUNPATH
-  save_LDFLAGS=$LDFLAGS
-  save_libdir=$libdir
-  eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \
-       LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\""
-  AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],
-    [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null],
-       [shlibpath_overrides_runpath=yes])])
-  LDFLAGS=$save_LDFLAGS
-  libdir=$save_libdir
-
-  # This implies no fast_install, which is unacceptable.
-  # Some rework will be needed to allow for fast_install
-  # before this can be enabled.
-  hardcode_into_libs=yes
-
-  # Append ld.so.conf contents to the search path
-  if test -f /etc/ld.so.conf; then
-    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[	 ]*hwcap[	 ]/d;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
-    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
-  fi
-
-  # We used to test for /lib/ld.so.1 and disable shared libraries on
-  # powerpc, because MkLinux only supported shared libraries with the
-  # GNU dynamic linker.  Since this was broken with cross compilers,
-  # most powerpc-linux boxes support dynamic linking these days and
-  # people can always --disable-shared, the test was removed, and we
-  # assume the GNU/Linux dynamic linker is in use.
-  dynamic_linker='GNU/Linux ld.so'
-  ;;
-
-netbsdelf*-gnu)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  dynamic_linker='NetBSD ld.elf_so'
-  ;;
-
-netbsd*)
-  version_type=sunos
-  need_lib_prefix=no
-  need_version=no
-  if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-    dynamic_linker='NetBSD (a.out) ld.so'
-  else
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    dynamic_linker='NetBSD ld.elf_so'
-  fi
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  ;;
-
-newsos6)
-  version_type=linux
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  ;;
-
-*nto* | *qnx*)
-  version_type=qnx
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  dynamic_linker='ldqnx.so'
-  ;;
-
-openbsd*)
-  version_type=sunos
-  sys_lib_dlsearch_path_spec="/usr/lib"
-  need_lib_prefix=no
-  # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
-  case $host_os in
-    openbsd3.3 | openbsd3.3.*)	need_version=yes ;;
-    *)				need_version=no  ;;
-  esac
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-    case $host_os in
-      openbsd2.[[89]] | openbsd2.[[89]].*)
-	shlibpath_overrides_runpath=no
-	;;
-      *)
-	shlibpath_overrides_runpath=yes
-	;;
-      esac
-  else
-    shlibpath_overrides_runpath=yes
-  fi
-  ;;
-
-os2*)
-  libname_spec='$name'
-  shrext_cmds=".dll"
-  need_lib_prefix=no
-  library_names_spec='$libname${shared_ext} $libname.a'
-  dynamic_linker='OS/2 ld.exe'
-  shlibpath_var=LIBPATH
-  ;;
-
-osf3* | osf4* | osf5*)
-  version_type=osf
-  need_lib_prefix=no
-  need_version=no
-  soname_spec='${libname}${release}${shared_ext}$major'
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
-  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
-  ;;
-
-rdos*)
-  dynamic_linker=no
-  ;;
-
-solaris*)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  # ldd complains unless libraries are executable
-  postinstall_cmds='chmod +x $lib'
-  ;;
-
-sunos4*)
-  version_type=sunos
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  if test "$with_gnu_ld" = yes; then
-    need_lib_prefix=no
-  fi
-  need_version=yes
-  ;;
-
-sysv4 | sysv4.3*)
-  version_type=linux
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  case $host_vendor in
-    sni)
-      shlibpath_overrides_runpath=no
-      need_lib_prefix=no
-      runpath_var=LD_RUN_PATH
-      ;;
-    siemens)
-      need_lib_prefix=no
-      ;;
-    motorola)
-      need_lib_prefix=no
-      need_version=no
-      shlibpath_overrides_runpath=no
-      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
-      ;;
-  esac
-  ;;
-
-sysv4*MP*)
-  if test -d /usr/nec ;then
-    version_type=linux
-    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
-    soname_spec='$libname${shared_ext}.$major'
-    shlibpath_var=LD_LIBRARY_PATH
-  fi
-  ;;
-
-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
-  version_type=freebsd-elf
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  if test "$with_gnu_ld" = yes; then
-    sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
-  else
-    sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
-    case $host_os in
-      sco3.2v5*)
-        sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
-	;;
-    esac
-  fi
-  sys_lib_dlsearch_path_spec='/usr/lib'
-  ;;
-
-tpf*)
-  # TPF is a cross-target only.  Preferred cross-host = GNU/Linux.
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
-
-uts4*)
-  version_type=linux
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  ;;
-
-*)
-  dynamic_linker=no
-  ;;
-esac
-AC_MSG_RESULT([$dynamic_linker])
-test "$dynamic_linker" = no && can_build_shared=no
-
-variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
-if test "$GCC" = yes; then
-  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
-fi
-
-if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
-  sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
-fi
-if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
-  sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
-fi
-
-_LT_DECL([], [variables_saved_for_relink], [1],
-    [Variables whose values should be saved in libtool wrapper scripts and
-    restored at link time])
-_LT_DECL([], [need_lib_prefix], [0],
-    [Do we need the "lib" prefix for modules?])
-_LT_DECL([], [need_version], [0], [Do we need a version for libraries?])
-_LT_DECL([], [version_type], [0], [Library versioning type])
-_LT_DECL([], [runpath_var], [0],  [Shared library runtime path variable])
-_LT_DECL([], [shlibpath_var], [0],[Shared library path variable])
-_LT_DECL([], [shlibpath_overrides_runpath], [0],
-    [Is shlibpath searched before the hard-coded library search path?])
-_LT_DECL([], [libname_spec], [1], [Format of library name prefix])
-_LT_DECL([], [library_names_spec], [1],
-    [[List of archive names.  First name is the real one, the rest are links.
-    The last name is the one that the linker finds with -lNAME]])
-_LT_DECL([], [soname_spec], [1],
-    [[The coded name of the library, if different from the real name]])
-_LT_DECL([], [postinstall_cmds], [2],
-    [Command to use after installation of a shared archive])
-_LT_DECL([], [postuninstall_cmds], [2],
-    [Command to use after uninstallation of a shared archive])
-_LT_DECL([], [finish_cmds], [2],
-    [Commands used to finish a libtool library installation in a directory])
-_LT_DECL([], [finish_eval], [1],
-    [[As "finish_cmds", except a single script fragment to be evaled but
-    not shown]])
-_LT_DECL([], [hardcode_into_libs], [0],
-    [Whether we should hardcode library paths into libraries])
-_LT_DECL([], [sys_lib_search_path_spec], [2],
-    [Compile-time system search path for libraries])
-_LT_DECL([], [sys_lib_dlsearch_path_spec], [2],
-    [Run-time system search path for libraries])
-])# _LT_SYS_DYNAMIC_LINKER
-
-
-# _LT_PATH_TOOL_PREFIX(TOOL)
-# --------------------------
-# find a file program which can recognize shared library
-AC_DEFUN([_LT_PATH_TOOL_PREFIX],
-[m4_require([_LT_DECL_EGREP])dnl
-AC_MSG_CHECKING([for $1])
-AC_CACHE_VAL(lt_cv_path_MAGIC_CMD,
-[case $MAGIC_CMD in
-[[\\/*] |  ?:[\\/]*])
-  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
-  ;;
-*)
-  lt_save_MAGIC_CMD="$MAGIC_CMD"
-  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-dnl $ac_dummy forces splitting on constant user-supplied paths.
-dnl POSIX.2 word splitting is done only on the output of word expansions,
-dnl not every word.  This closes a longstanding sh security hole.
-  ac_dummy="m4_if([$2], , $PATH, [$2])"
-  for ac_dir in $ac_dummy; do
-    IFS="$lt_save_ifs"
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$1; then
-      lt_cv_path_MAGIC_CMD="$ac_dir/$1"
-      if test -n "$file_magic_test_file"; then
-	case $deplibs_check_method in
-	"file_magic "*)
-	  file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
-	  MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
-	  if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
-	    $EGREP "$file_magic_regex" > /dev/null; then
-	    :
-	  else
-	    cat <<_LT_EOF 1>&2
-
-*** Warning: the command libtool uses to detect shared libraries,
-*** $file_magic_cmd, produces output that libtool cannot recognize.
-*** The result is that libtool may fail to recognize shared libraries
-*** as such.  This will affect the creation of libtool libraries that
-*** depend on shared libraries, but programs linked with such libtool
-*** libraries will work regardless of this problem.  Nevertheless, you
-*** may want to report the problem to your system manager and/or to
-*** bug-libtool at gnu.org
-
-_LT_EOF
-	  fi ;;
-	esac
-      fi
-      break
-    fi
-  done
-  IFS="$lt_save_ifs"
-  MAGIC_CMD="$lt_save_MAGIC_CMD"
-  ;;
-esac])
-MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
-if test -n "$MAGIC_CMD"; then
-  AC_MSG_RESULT($MAGIC_CMD)
-else
-  AC_MSG_RESULT(no)
-fi
-_LT_DECL([], [MAGIC_CMD], [0],
-	 [Used to examine libraries when file_magic_cmd begins with "file"])dnl
-])# _LT_PATH_TOOL_PREFIX
-
-# Old name:
-AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], [])
-
-
-# _LT_PATH_MAGIC
-# --------------
-# find a file program which can recognize a shared library
-m4_defun([_LT_PATH_MAGIC],
-[_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH)
-if test -z "$lt_cv_path_MAGIC_CMD"; then
-  if test -n "$ac_tool_prefix"; then
-    _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH)
-  else
-    MAGIC_CMD=:
-  fi
-fi
-])# _LT_PATH_MAGIC
-
-
-# LT_PATH_LD
-# ----------
-# find the pathname to the GNU or non-GNU linker
-AC_DEFUN([LT_PATH_LD],
-[AC_REQUIRE([AC_PROG_CC])dnl
-AC_REQUIRE([AC_CANONICAL_HOST])dnl
-AC_REQUIRE([AC_CANONICAL_BUILD])dnl
-m4_require([_LT_DECL_SED])dnl
-m4_require([_LT_DECL_EGREP])dnl
-
-AC_ARG_WITH([gnu-ld],
-    [AS_HELP_STRING([--with-gnu-ld],
-	[assume the C compiler uses GNU ld @<:@default=no@:>@])],
-    [test "$withval" = no || with_gnu_ld=yes],
-    [with_gnu_ld=no])dnl
-
-ac_prog=ld
-if test "$GCC" = yes; then
-  # Check if gcc -print-prog-name=ld gives a path.
-  AC_MSG_CHECKING([for ld used by $CC])
-  case $host in
-  *-*-mingw*)
-    # gcc leaves a trailing carriage return which upsets mingw
-    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
-  *)
-    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
-  esac
-  case $ac_prog in
-    # Accept absolute paths.
-    [[\\/]]* | ?:[[\\/]]*)
-      re_direlt='/[[^/]][[^/]]*/\.\./'
-      # Canonicalize the pathname of ld
-      ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'`
-      while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
-	ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
-      done
-      test -z "$LD" && LD="$ac_prog"
-      ;;
-  "")
-    # If it fails, then pretend we aren't using GCC.
-    ac_prog=ld
-    ;;
-  *)
-    # If it is relative, then search for the first ld in PATH.
-    with_gnu_ld=unknown
-    ;;
-  esac
-elif test "$with_gnu_ld" = yes; then
-  AC_MSG_CHECKING([for GNU ld])
-else
-  AC_MSG_CHECKING([for non-GNU ld])
-fi
-AC_CACHE_VAL(lt_cv_path_LD,
-[if test -z "$LD"; then
-  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-  for ac_dir in $PATH; do
-    IFS="$lt_save_ifs"
-    test -z "$ac_dir" && ac_dir=.
-    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
-      lt_cv_path_LD="$ac_dir/$ac_prog"
-      # Check to see if the program is GNU ld.  I'd rather use --version,
-      # but apparently some variants of GNU ld only accept -v.
-      # Break only if it was the GNU/non-GNU ld that we prefer.
-      case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
-      *GNU* | *'with BFD'*)
-	test "$with_gnu_ld" != no && break
-	;;
-      *)
-	test "$with_gnu_ld" != yes && break
-	;;
-      esac
-    fi
-  done
-  IFS="$lt_save_ifs"
-else
-  lt_cv_path_LD="$LD" # Let the user override the test with a path.
-fi])
-LD="$lt_cv_path_LD"
-if test -n "$LD"; then
-  AC_MSG_RESULT($LD)
-else
-  AC_MSG_RESULT(no)
-fi
-test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
-_LT_PATH_LD_GNU
-AC_SUBST([LD])
-
-_LT_TAGDECL([], [LD], [1], [The linker used to build libraries])
-])# LT_PATH_LD
-
-# Old names:
-AU_ALIAS([AM_PROG_LD], [LT_PATH_LD])
-AU_ALIAS([AC_PROG_LD], [LT_PATH_LD])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AM_PROG_LD], [])
-dnl AC_DEFUN([AC_PROG_LD], [])
-
-
-# _LT_PATH_LD_GNU
-#- --------------
-m4_defun([_LT_PATH_LD_GNU],
-[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], lt_cv_prog_gnu_ld,
-[# I'd rather use --version here, but apparently some GNU lds only accept -v.
-case `$LD -v 2>&1 </dev/null` in
-*GNU* | *'with BFD'*)
-  lt_cv_prog_gnu_ld=yes
-  ;;
-*)
-  lt_cv_prog_gnu_ld=no
-  ;;
-esac])
-with_gnu_ld=$lt_cv_prog_gnu_ld
-])# _LT_PATH_LD_GNU
-
-
-# _LT_CMD_RELOAD
-# --------------
-# find reload flag for linker
-#   -- PORTME Some linkers may need a different reload flag.
-m4_defun([_LT_CMD_RELOAD],
-[AC_CACHE_CHECK([for $LD option to reload object files],
-  lt_cv_ld_reload_flag,
-  [lt_cv_ld_reload_flag='-r'])
-reload_flag=$lt_cv_ld_reload_flag
-case $reload_flag in
-"" | " "*) ;;
-*) reload_flag=" $reload_flag" ;;
-esac
-reload_cmds='$LD$reload_flag -o $output$reload_objs'
-case $host_os in
-  darwin*)
-    if test "$GCC" = yes; then
-      reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
-    else
-      reload_cmds='$LD$reload_flag -o $output$reload_objs'
-    fi
-    ;;
-esac
-_LT_DECL([], [reload_flag], [1], [How to create reloadable object files])dnl
-_LT_DECL([], [reload_cmds], [2])dnl
-])# _LT_CMD_RELOAD
-
-
-# _LT_CHECK_MAGIC_METHOD
-# ----------------------
-# how to check for library dependencies
-#  -- PORTME fill in with the dynamic library characteristics
-m4_defun([_LT_CHECK_MAGIC_METHOD],
-[m4_require([_LT_DECL_EGREP])
-m4_require([_LT_DECL_OBJDUMP])
-AC_CACHE_CHECK([how to recognize dependent libraries],
-lt_cv_deplibs_check_method,
-[lt_cv_file_magic_cmd='$MAGIC_CMD'
-lt_cv_file_magic_test_file=
-lt_cv_deplibs_check_method='unknown'
-# Need to set the preceding variable on all platforms that support
-# interlibrary dependencies.
-# 'none' -- dependencies not supported.
-# `unknown' -- same as none, but documents that we really don't know.
-# 'pass_all' -- all dependencies passed with no checks.
-# 'test_compile' -- check by making test program.
-# 'file_magic [[regex]]' -- check by looking for files in library path
-# which responds to the $file_magic_cmd with a given extended regex.
-# If you have `file' or equivalent on your system and you're not sure
-# whether `pass_all' will *always* work, you probably want this one.
-
-case $host_os in
-aix[[4-9]]*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-beos*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-bsdi[[45]]*)
-  lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)'
-  lt_cv_file_magic_cmd='/usr/bin/file -L'
-  lt_cv_file_magic_test_file=/shlib/libc.so
-  ;;
-
-cygwin*)
-  # func_win32_libid is a shell function defined in ltmain.sh
-  lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
-  lt_cv_file_magic_cmd='func_win32_libid'
-  ;;
-
-mingw* | pw32*)
-  # Base MSYS/MinGW do not provide the 'file' command needed by
-  # func_win32_libid shell function, so use a weaker test based on 'objdump',
-  # unless we find 'file', for example because we are cross-compiling.
-  if ( file / ) >/dev/null 2>&1; then
-    lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
-    lt_cv_file_magic_cmd='func_win32_libid'
-  else
-    lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
-    lt_cv_file_magic_cmd='$OBJDUMP -f'
-  fi
-  ;;
-
-cegcc)
-  # use the weaker test based on 'objdump'. See mingw*.
-  lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?'
-  lt_cv_file_magic_cmd='$OBJDUMP -f'
-  ;;
-
-darwin* | rhapsody*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-freebsd* | dragonfly*)
-  if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
-    case $host_cpu in
-    i*86 )
-      # Not sure whether the presence of OpenBSD here was a mistake.
-      # Let's accept both of them until this is cleared up.
-      lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library'
-      lt_cv_file_magic_cmd=/usr/bin/file
-      lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
-      ;;
-    esac
-  else
-    lt_cv_deplibs_check_method=pass_all
-  fi
-  ;;
-
-gnu*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-hpux10.20* | hpux11*)
-  lt_cv_file_magic_cmd=/usr/bin/file
-  case $host_cpu in
-  ia64*)
-    lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64'
-    lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
-    ;;
-  hppa*64*)
-    [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]']
-    lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
-    ;;
-  *)
-    lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library'
-    lt_cv_file_magic_test_file=/usr/lib/libc.sl
-    ;;
-  esac
-  ;;
-
-interix[[3-9]]*)
-  # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
-  lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$'
-  ;;
-
-irix5* | irix6* | nonstopux*)
-  case $LD in
-  *-32|*"-32 ") libmagic=32-bit;;
-  *-n32|*"-n32 ") libmagic=N32;;
-  *-64|*"-64 ") libmagic=64-bit;;
-  *) libmagic=never-match;;
-  esac
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-# This must be Linux ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-netbsd* | netbsdelf*-gnu)
-  if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
-    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
-  else
-    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$'
-  fi
-  ;;
-
-newos6*)
-  lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)'
-  lt_cv_file_magic_cmd=/usr/bin/file
-  lt_cv_file_magic_test_file=/usr/lib/libnls.so
-  ;;
-
-*nto* | *qnx*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-openbsd*)
-  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$'
-  else
-    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
-  fi
-  ;;
-
-osf3* | osf4* | osf5*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-rdos*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-solaris*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-sysv4 | sysv4.3*)
-  case $host_vendor in
-  motorola)
-    lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]'
-    lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
-    ;;
-  ncr)
-    lt_cv_deplibs_check_method=pass_all
-    ;;
-  sequent)
-    lt_cv_file_magic_cmd='/bin/file'
-    lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )'
-    ;;
-  sni)
-    lt_cv_file_magic_cmd='/bin/file'
-    lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib"
-    lt_cv_file_magic_test_file=/lib/libc.so
-    ;;
-  siemens)
-    lt_cv_deplibs_check_method=pass_all
-    ;;
-  pc)
-    lt_cv_deplibs_check_method=pass_all
-    ;;
-  esac
-  ;;
-
-tpf*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-esac
-])
-file_magic_cmd=$lt_cv_file_magic_cmd
-deplibs_check_method=$lt_cv_deplibs_check_method
-test -z "$deplibs_check_method" && deplibs_check_method=unknown
-
-_LT_DECL([], [deplibs_check_method], [1],
-    [Method to check whether dependent libraries are shared objects])
-_LT_DECL([], [file_magic_cmd], [1],
-    [Command to use when deplibs_check_method == "file_magic"])
-])# _LT_CHECK_MAGIC_METHOD
-
-
-# LT_PATH_NM
-# ----------
-# find the pathname to a BSD- or MS-compatible name lister
-AC_DEFUN([LT_PATH_NM],
-[AC_REQUIRE([AC_PROG_CC])dnl
-AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM,
-[if test -n "$NM"; then
-  # Let the user override the test.
-  lt_cv_path_NM="$NM"
-else
-  lt_nm_to_check="${ac_tool_prefix}nm"
-  if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
-    lt_nm_to_check="$lt_nm_to_check nm"
-  fi
-  for lt_tmp_nm in $lt_nm_to_check; do
-    lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-    for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
-      IFS="$lt_save_ifs"
-      test -z "$ac_dir" && ac_dir=.
-      tmp_nm="$ac_dir/$lt_tmp_nm"
-      if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
-	# Check to see if the nm accepts a BSD-compat flag.
-	# Adding the `sed 1q' prevents false positives on HP-UX, which says:
-	#   nm: unknown option "B" ignored
-	# Tru64's nm complains that /dev/null is an invalid object file
-	case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
-	*/dev/null* | *'Invalid file or object type'*)
-	  lt_cv_path_NM="$tmp_nm -B"
-	  break
-	  ;;
-	*)
-	  case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
-	  */dev/null*)
-	    lt_cv_path_NM="$tmp_nm -p"
-	    break
-	    ;;
-	  *)
-	    lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
-	    continue # so that we can try to find one that supports BSD flags
-	    ;;
-	  esac
-	  ;;
-	esac
-      fi
-    done
-    IFS="$lt_save_ifs"
-  done
-  : ${lt_cv_path_NM=no}
-fi])
-if test "$lt_cv_path_NM" != "no"; then
-  NM="$lt_cv_path_NM"
-else
-  # Didn't find any BSD compatible name lister, look for dumpbin.
-  AC_CHECK_TOOLS(DUMPBIN, ["dumpbin -symbols" "link -dump -symbols"], :)
-  AC_SUBST([DUMPBIN])
-  if test "$DUMPBIN" != ":"; then
-    NM="$DUMPBIN"
-  fi
-fi
-test -z "$NM" && NM=nm
-AC_SUBST([NM])
-_LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl
-
-AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface],
-  [lt_cv_nm_interface="BSD nm"
-  echo "int some_variable = 0;" > conftest.$ac_ext
-  (eval echo "\"\$as_me:__oline__: $ac_compile\"" >&AS_MESSAGE_LOG_FD)
-  (eval "$ac_compile" 2>conftest.err)
-  cat conftest.err >&AS_MESSAGE_LOG_FD
-  (eval echo "\"\$as_me:__oline__: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD)
-  (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
-  cat conftest.err >&AS_MESSAGE_LOG_FD
-  (eval echo "\"\$as_me:__oline__: output\"" >&AS_MESSAGE_LOG_FD)
-  cat conftest.out >&AS_MESSAGE_LOG_FD
-  if $GREP 'External.*some_variable' conftest.out > /dev/null; then
-    lt_cv_nm_interface="MS dumpbin"
-  fi
-  rm -f conftest*])
-])# LT_PATH_NM
-
-# Old names:
-AU_ALIAS([AM_PROG_NM], [LT_PATH_NM])
-AU_ALIAS([AC_PROG_NM], [LT_PATH_NM])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AM_PROG_NM], [])
-dnl AC_DEFUN([AC_PROG_NM], [])
-
-
-# LT_LIB_M
-# --------
-# check for math library
-AC_DEFUN([LT_LIB_M],
-[AC_REQUIRE([AC_CANONICAL_HOST])dnl
-LIBM=
-case $host in
-*-*-beos* | *-*-cygwin* | *-*-pw32* | *-*-darwin*)
-  # These system don't have libm, or don't need it
-  ;;
-*-ncr-sysv4.3*)
-  AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw")
-  AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm")
-  ;;
-*)
-  AC_CHECK_LIB(m, cos, LIBM="-lm")
-  ;;
-esac
-AC_SUBST([LIBM])
-])# LT_LIB_M
-
-# Old name:
-AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_CHECK_LIBM], [])
-
-
-# _LT_COMPILER_NO_RTTI([TAGNAME])
-# -------------------------------
-m4_defun([_LT_COMPILER_NO_RTTI],
-[m4_require([_LT_TAG_COMPILER])dnl
-
-_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
-
-if test "$GCC" = yes; then
-  _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin'
-
-  _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions],
-    lt_cv_prog_compiler_rtti_exceptions,
-    [-fno-rtti -fno-exceptions], [],
-    [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"])
-fi
-_LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1],
-	[Compiler flag to turn off builtin functions])
-])# _LT_COMPILER_NO_RTTI
-
-
-# _LT_CMD_GLOBAL_SYMBOLS
-# ----------------------
-m4_defun([_LT_CMD_GLOBAL_SYMBOLS],
-[AC_REQUIRE([AC_CANONICAL_HOST])dnl
-AC_REQUIRE([AC_PROG_CC])dnl
-AC_REQUIRE([LT_PATH_NM])dnl
-AC_REQUIRE([LT_PATH_LD])dnl
-m4_require([_LT_DECL_SED])dnl
-m4_require([_LT_DECL_EGREP])dnl
-m4_require([_LT_TAG_COMPILER])dnl
-
-# Check for command to grab the raw symbol name followed by C symbol from nm.
-AC_MSG_CHECKING([command to parse $NM output from $compiler object])
-AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe],
-[
-# These are sane defaults that work on at least a few old systems.
-# [They come from Ultrix.  What could be older than Ultrix?!! ;)]
-
-# Character class describing NM global symbol codes.
-symcode='[[BCDEGRST]]'
-
-# Regexp to match symbols that can be accessed directly from C.
-sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)'
-
-# Define system-specific variables.
-case $host_os in
-aix*)
-  symcode='[[BCDT]]'
-  ;;
-cygwin* | mingw* | pw32* | cegcc*)
-  symcode='[[ABCDGISTW]]'
-  ;;
-hpux*)
-  if test "$host_cpu" = ia64; then
-    symcode='[[ABCDEGRST]]'
-  fi
-  ;;
-irix* | nonstopux*)
-  symcode='[[BCDEGRST]]'
-  ;;
-osf*)
-  symcode='[[BCDEGQRST]]'
-  ;;
-solaris*)
-  symcode='[[BDRT]]'
-  ;;
-sco3.2v5*)
-  symcode='[[DT]]'
-  ;;
-sysv4.2uw2*)
-  symcode='[[DT]]'
-  ;;
-sysv5* | sco5v6* | unixware* | OpenUNIX*)
-  symcode='[[ABDT]]'
-  ;;
-sysv4)
-  symcode='[[DFNSTU]]'
-  ;;
-esac
-
-# If we're using GNU nm, then use its standard symbol codes.
-case `$NM -V 2>&1` in
-*GNU* | *'with BFD'*)
-  symcode='[[ABCDGIRSTW]]' ;;
-esac
-
-# Transform an extracted symbol line into a proper C declaration.
-# Some systems (esp. on ia64) link data and code symbols differently,
-# so use this general approach.
-lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
-
-# Transform an extracted symbol line into symbol name and symbol address
-lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/  {\"\2\", (void *) \&\2},/p'"
-lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\) $/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/  {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/  {\"lib\2\", (void *) \&\2},/p'"
-
-# Handle CRLF in mingw tool chain
-opt_cr=
-case $build_os in
-mingw*)
-  opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp
-  ;;
-esac
-
-# Try without a prefix underscore, then with it.
-for ac_symprfx in "" "_"; do
-
-  # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol.
-  symxfrm="\\1 $ac_symprfx\\2 \\2"
-
-  # Write the raw and C identifiers.
-  if test "$lt_cv_nm_interface" = "MS dumpbin"; then
-    # Fake it for dumpbin and say T for any non-static function
-    # and D for any global variable.
-    # Also find C++ and __fastcall symbols from MSVC++,
-    # which start with @ or ?.
-    lt_cv_sys_global_symbol_pipe="$AWK ['"\
-"     {last_section=section; section=\$ 3};"\
-"     /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
-"     \$ 0!~/External *\|/{next};"\
-"     / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
-"     {if(hide[section]) next};"\
-"     {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\
-"     {split(\$ 0, a, /\||\r/); split(a[2], s)};"\
-"     s[1]~/^[@?]/{print s[1], s[1]; next};"\
-"     s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\
-"     ' prfx=^$ac_symprfx]"
-  else
-    lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[	 ]]\($symcode$symcode*\)[[	 ]][[	 ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
-  fi
-
-  # Check to see that the pipe works correctly.
-  pipe_works=no
-
-  rm -f conftest*
-  cat > conftest.$ac_ext <<_LT_EOF
-#ifdef __cplusplus
-extern "C" {
-#endif
-char nm_test_var;
-void nm_test_func(void);
-void nm_test_func(void){}
-#ifdef __cplusplus
-}
-#endif
-int main(){nm_test_var='a';nm_test_func();return(0);}
-_LT_EOF
-
-  if AC_TRY_EVAL(ac_compile); then
-    # Now try to grab the symbols.
-    nlist=conftest.nm
-    if AC_TRY_EVAL(NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) && test -s "$nlist"; then
-      # Try sorting and uniquifying the output.
-      if sort "$nlist" | uniq > "$nlist"T; then
-	mv -f "$nlist"T "$nlist"
-      else
-	rm -f "$nlist"T
-      fi
-
-      # Make sure that we snagged all the symbols we need.
-      if $GREP ' nm_test_var$' "$nlist" >/dev/null; then
-	if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
-	  cat <<_LT_EOF > conftest.$ac_ext
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-_LT_EOF
-	  # Now generate the symbol file.
-	  eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext'
-
-	  cat <<_LT_EOF >> conftest.$ac_ext
-
-/* The mapping between symbol names and symbols.  */
-const struct {
-  const char *name;
-  void       *address;
-}
-lt__PROGRAM__LTX_preloaded_symbols[[]] =
-{
-  { "@PROGRAM@", (void *) 0 },
-_LT_EOF
-	  $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/  {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext
-	  cat <<\_LT_EOF >> conftest.$ac_ext
-  {0, (void *) 0}
-};
-
-/* This works around a problem in FreeBSD linker */
-#ifdef FREEBSD_WORKAROUND
-static const void *lt_preloaded_setup() {
-  return lt__PROGRAM__LTX_preloaded_symbols;
-}
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-_LT_EOF
-	  # Now try linking the two files.
-	  mv conftest.$ac_objext conftstm.$ac_objext
-	  lt_save_LIBS="$LIBS"
-	  lt_save_CFLAGS="$CFLAGS"
-	  LIBS="conftstm.$ac_objext"
-	  CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)"
-	  if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then
-	    pipe_works=yes
-	  fi
-	  LIBS="$lt_save_LIBS"
-	  CFLAGS="$lt_save_CFLAGS"
-	else
-	  echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD
-	fi
-      else
-	echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD
-      fi
-    else
-      echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD
-    fi
-  else
-    echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD
-    cat conftest.$ac_ext >&5
-  fi
-  rm -rf conftest* conftst*
-
-  # Do not use the global_symbol_pipe unless it works.
-  if test "$pipe_works" = yes; then
-    break
-  else
-    lt_cv_sys_global_symbol_pipe=
-  fi
-done
-])
-if test -z "$lt_cv_sys_global_symbol_pipe"; then
-  lt_cv_sys_global_symbol_to_cdecl=
-fi
-if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
-  AC_MSG_RESULT(failed)
-else
-  AC_MSG_RESULT(ok)
-fi
-
-_LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1],
-    [Take the output of nm and produce a listing of raw symbols and C names])
-_LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1],
-    [Transform the output of nm in a proper C declaration])
-_LT_DECL([global_symbol_to_c_name_address],
-    [lt_cv_sys_global_symbol_to_c_name_address], [1],
-    [Transform the output of nm in a C name address pair])
-_LT_DECL([global_symbol_to_c_name_address_lib_prefix],
-    [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1],
-    [Transform the output of nm in a C name address pair when lib prefix is needed])
-]) # _LT_CMD_GLOBAL_SYMBOLS
-
-
-# _LT_COMPILER_PIC([TAGNAME])
-# ---------------------------
-m4_defun([_LT_COMPILER_PIC],
-[m4_require([_LT_TAG_COMPILER])dnl
-_LT_TAGVAR(lt_prog_compiler_wl, $1)=
-_LT_TAGVAR(lt_prog_compiler_pic, $1)=
-_LT_TAGVAR(lt_prog_compiler_static, $1)=
-
-AC_MSG_CHECKING([for $compiler option to produce PIC])
-m4_if([$1], [CXX], [
-  # C++ specific cases for pic, static, wl, etc.
-  if test "$GXX" = yes; then
-    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-    _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
-
-    case $host_os in
-    aix*)
-      # All AIX code is PIC.
-      if test "$host_cpu" = ia64; then
-	# AIX 5 now supports IA64 processor
-	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-      fi
-      ;;
-
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-        ;;
-      m68k)
-            # FIXME: we need at least 68020 code to build shared libraries, but
-            # adding the `-m68020' flag to GCC prevents building anything better,
-            # like `-m68040'.
-            _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
-        ;;
-      esac
-      ;;
-
-    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
-      # PIC is the default for these OSes.
-      ;;
-    mingw* | cygwin* | os2* | pw32* | cegcc*)
-      # This hack is so that the source file can tell whether it is being
-      # built for inclusion in a dll (and should export symbols for example).
-      # Although the cygwin gcc ignores -fPIC, still need this for old-style
-      # (--disable-auto-import) libraries
-      m4_if([$1], [GCJ], [],
-	[_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
-      ;;
-    darwin* | rhapsody*)
-      # PIC is the default on this platform
-      # Common symbols not allowed in MH_DYLIB files
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
-      ;;
-    *djgpp*)
-      # DJGPP does not support shared libraries at all
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)=
-      ;;
-    interix[[3-9]]*)
-      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
-      # Instead, we relocate shared libraries at runtime.
-      ;;
-    sysv4*MP*)
-      if test -d /usr/nec; then
-	_LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
-      fi
-      ;;
-    hpux*)
-      # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
-      # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
-      # sets the default TLS model and affects inlining.
-      case $host_cpu in
-      hppa*64*)
-	;;
-      *)
-	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-	;;
-      esac
-      ;;
-    *qnx* | *nto*)
-      # QNX uses GNU C++, but need to define -shared option too, otherwise
-      # it will coredump.
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
-      ;;
-    *)
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-      ;;
-    esac
-  else
-    case $host_os in
-      aix[[4-9]]*)
-	# All AIX code is PIC.
-	if test "$host_cpu" = ia64; then
-	  # AIX 5 now supports IA64 processor
-	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-	else
-	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
-	fi
-	;;
-      chorus*)
-	case $cc_basename in
-	cxch68*)
-	  # Green Hills C++ Compiler
-	  # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a"
-	  ;;
-	esac
-	;;
-      dgux*)
-	case $cc_basename in
-	  ec++*)
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-	    ;;
-	  ghcx*)
-	    # Green Hills C++ Compiler
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      freebsd* | dragonfly*)
-	# FreeBSD uses GNU C++
-	;;
-      hpux9* | hpux10* | hpux11*)
-	case $cc_basename in
-	  CC*)
-	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	    _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
-	    if test "$host_cpu" != ia64; then
-	      _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
-	    fi
-	    ;;
-	  aCC*)
-	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	    _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
-	    case $host_cpu in
-	    hppa*64*|ia64*)
-	      # +Z the default
-	      ;;
-	    *)
-	      _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
-	      ;;
-	    esac
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      interix*)
-	# This is c89, which is MS Visual C++ (no shared libs)
-	# Anyone wants to do a port?
-	;;
-      irix5* | irix6* | nonstopux*)
-	case $cc_basename in
-	  CC*)
-	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
-	    # CC pic flag -KPIC is the default.
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      linux* | k*bsd*-gnu | kopensolaris*-gnu)
-	case $cc_basename in
-	  KCC*)
-	    # KAI C++ Compiler
-	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-	    ;;
-	  ecpc* )
-	    # old Intel C++ for x86_64 which still supported -KPIC.
-	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
-	    ;;
-	  icpc* )
-	    # Intel C++, used to be incompatible with GCC.
-	    # ICC 10 doesn't accept -KPIC any more.
-	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
-	    ;;
-	  pgCC* | pgcpp*)
-	    # Portland Group C++ compiler
-	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
-	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-	    ;;
-	  cxx*)
-	    # Compaq C++
-	    # Make sure the PIC flag is empty.  It appears that all Alpha
-	    # Linux and Compaq Tru64 Unix objects are PIC.
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)=
-	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
-	    ;;
-	  xlc* | xlC*)
-	    # IBM XL 8.0 on PPC
-	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic'
-	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink'
-	    ;;
-	  *)
-	    case `$CC -V 2>&1 | sed 5q` in
-	    *Sun\ C*)
-	      # Sun C++ 5.9
-	      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-	      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-	      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
-	      ;;
-	    esac
-	    ;;
-	esac
-	;;
-      lynxos*)
-	;;
-      m88k*)
-	;;
-      mvs*)
-	case $cc_basename in
-	  cxx*)
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall'
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      netbsd* | netbsdelf*-gnu)
-	;;
-      *qnx* | *nto*)
-        # QNX uses GNU C++, but need to define -shared option too, otherwise
-        # it will coredump.
-        _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
-        ;;
-      osf3* | osf4* | osf5*)
-	case $cc_basename in
-	  KCC*)
-	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
-	    ;;
-	  RCC*)
-	    # Rational C++ 2.4.1
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
-	    ;;
-	  cxx*)
-	    # Digital/Compaq C++
-	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	    # Make sure the PIC flag is empty.  It appears that all Alpha
-	    # Linux and Compaq Tru64 Unix objects are PIC.
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)=
-	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      psos*)
-	;;
-      solaris*)
-	case $cc_basename in
-	  CC*)
-	    # Sun C++ 4.2, 5.x and Centerline C++
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
-	    ;;
-	  gcx*)
-	    # Green Hills C++ Compiler
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      sunos4*)
-	case $cc_basename in
-	  CC*)
-	    # Sun C++ 4.x
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
-	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-	    ;;
-	  lcc*)
-	    # Lucid
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
-	case $cc_basename in
-	  CC*)
-	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-	    ;;
-	esac
-	;;
-      tandem*)
-	case $cc_basename in
-	  NCC*)
-	    # NonStop-UX NCC 3.20
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      vxworks*)
-	;;
-      *)
-	_LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
-	;;
-    esac
-  fi
-],
-[
-  if test "$GCC" = yes; then
-    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-    _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
-
-    case $host_os in
-      aix*)
-      # All AIX code is PIC.
-      if test "$host_cpu" = ia64; then
-	# AIX 5 now supports IA64 processor
-	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-      fi
-      ;;
-
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-        ;;
-      m68k)
-            # FIXME: we need at least 68020 code to build shared libraries, but
-            # adding the `-m68020' flag to GCC prevents building anything better,
-            # like `-m68040'.
-            _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
-        ;;
-      esac
-      ;;
-
-    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
-      # PIC is the default for these OSes.
-      ;;
-
-    mingw* | cygwin* | pw32* | os2* | cegcc*)
-      # This hack is so that the source file can tell whether it is being
-      # built for inclusion in a dll (and should export symbols for example).
-      # Although the cygwin gcc ignores -fPIC, still need this for old-style
-      # (--disable-auto-import) libraries
-      m4_if([$1], [GCJ], [],
-	[_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
-      ;;
-
-    darwin* | rhapsody*)
-      # PIC is the default on this platform
-      # Common symbols not allowed in MH_DYLIB files
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
-      ;;
-
-    hpux*)
-      # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
-      # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
-      # sets the default TLS model and affects inlining.
-      case $host_cpu in
-      hppa*64*)
-	# +Z the default
-	;;
-      *)
-	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-	;;
-      esac
-      ;;
-
-    interix[[3-9]]*)
-      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
-      # Instead, we relocate shared libraries at runtime.
-      ;;
-
-    msdosdjgpp*)
-      # Just because we use GCC doesn't mean we suddenly get shared libraries
-      # on systems that don't support them.
-      _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
-      enable_shared=no
-      ;;
-
-    *nto* | *qnx*)
-      # QNX uses GNU C++, but need to define -shared option too, otherwise
-      # it will coredump.
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
-      ;;
-
-    sysv4*MP*)
-      if test -d /usr/nec; then
-	_LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
-      fi
-      ;;
-
-    *)
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-      ;;
-    esac
-  else
-    # PORTME Check for flag to pass linker flags through the system compiler.
-    case $host_os in
-    aix*)
-      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-      if test "$host_cpu" = ia64; then
-	# AIX 5 now supports IA64 processor
-	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-      else
-	_LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
-      fi
-      ;;
-
-    mingw* | cygwin* | pw32* | os2* | cegcc*)
-      # This hack is so that the source file can tell whether it is being
-      # built for inclusion in a dll (and should export symbols for example).
-      m4_if([$1], [GCJ], [],
-	[_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
-      ;;
-
-    hpux9* | hpux10* | hpux11*)
-      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
-      # not for PA HP-UX.
-      case $host_cpu in
-      hppa*64*|ia64*)
-	# +Z the default
-	;;
-      *)
-	_LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
-	;;
-      esac
-      # Is there a better lt_prog_compiler_static that works with the bundled CC?
-      _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
-      ;;
-
-    irix5* | irix6* | nonstopux*)
-      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-      # PIC (with -KPIC) is the default.
-      _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
-      ;;
-
-    linux* | k*bsd*-gnu | kopensolaris*-gnu)
-      case $cc_basename in
-      # old Intel for x86_64 which still supported -KPIC.
-      ecc*)
-	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-	_LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
-        ;;
-      # icc used to be incompatible with GCC.
-      # ICC 10 doesn't accept -KPIC any more.
-      icc* | ifort*)
-	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-	_LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
-        ;;
-      # Lahey Fortran 8.1.
-      lf95*)
-	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	_LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared'
-	_LT_TAGVAR(lt_prog_compiler_static, $1)='--static'
-	;;
-      pgcc* | pgf77* | pgf90* | pgf95*)
-        # Portland Group compilers (*not* the Pentium gcc compiler,
-	# which looks to be a dead project)
-	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
-	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-        ;;
-      ccc*)
-        _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-        # All Alpha code is PIC.
-        _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
-        ;;
-      xl*)
-	# IBM XL C 8.0/Fortran 10.1 on PPC
-	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic'
-	_LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink'
-	;;
-      *)
-	case `$CC -V 2>&1 | sed 5q` in
-	*Sun\ C*)
-	  # Sun C 5.9
-	  _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-	  _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	  ;;
-	*Sun\ F*)
-	  # Sun Fortran 8.3 passes all unrecognized flags to the linker
-	  _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-	  _LT_TAGVAR(lt_prog_compiler_wl, $1)=''
-	  ;;
-	esac
-	;;
-      esac
-      ;;
-
-    newsos6)
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-      ;;
-
-    *nto* | *qnx*)
-      # QNX uses GNU C++, but need to define -shared option too, otherwise
-      # it will coredump.
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
-      ;;
-
-    osf3* | osf4* | osf5*)
-      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-      # All OSF/1 code is PIC.
-      _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
-      ;;
-
-    rdos*)
-      _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
-      ;;
-
-    solaris*)
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-      case $cc_basename in
-      f77* | f90* | f95*)
-	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';;
-      *)
-	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';;
-      esac
-      ;;
-
-    sunos4*)
-      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
-      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-      ;;
-
-    sysv4 | sysv4.2uw2* | sysv4.3*)
-      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-      ;;
-
-    sysv4*MP*)
-      if test -d /usr/nec ;then
-	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic'
-	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-      fi
-      ;;
-
-    sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
-      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-      ;;
-
-    unicos*)
-      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-      _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
-      ;;
-
-    uts4*)
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
-      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-      ;;
-
-    *)
-      _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
-      ;;
-    esac
-  fi
-])
-case $host_os in
-  # For platforms which do not support PIC, -DPIC is meaningless:
-  *djgpp*)
-    _LT_TAGVAR(lt_prog_compiler_pic, $1)=
-    ;;
-  *)
-    _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t at m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])"
-    ;;
-esac
-AC_MSG_RESULT([$_LT_TAGVAR(lt_prog_compiler_pic, $1)])
-_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1],
-	[How to pass a linker flag through the compiler])
-
-#
-# Check to make sure the PIC flag actually works.
-#
-if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then
-  _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works],
-    [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)],
-    [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t at m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [],
-    [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in
-     "" | " "*) ;;
-     *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;;
-     esac],
-    [_LT_TAGVAR(lt_prog_compiler_pic, $1)=
-     _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no])
-fi
-_LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1],
-	[Additional compiler flags for building library objects])
-
-#
-# Check to make sure the static flag actually works.
-#
-wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\"
-_LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works],
-  _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1),
-  $lt_tmp_static_flag,
-  [],
-  [_LT_TAGVAR(lt_prog_compiler_static, $1)=])
-_LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1],
-	[Compiler flag to prevent dynamic linking])
-])# _LT_COMPILER_PIC
-
-
-# _LT_LINKER_SHLIBS([TAGNAME])
-# ----------------------------
-# See if the linker supports building shared libraries.
-m4_defun([_LT_LINKER_SHLIBS],
-[AC_REQUIRE([LT_PATH_LD])dnl
-AC_REQUIRE([LT_PATH_NM])dnl
-m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-m4_require([_LT_DECL_EGREP])dnl
-m4_require([_LT_DECL_SED])dnl
-m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl
-m4_require([_LT_TAG_COMPILER])dnl
-AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
-m4_if([$1], [CXX], [
-  _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
-  case $host_os in
-  aix[[4-9]]*)
-    # If we're using GNU nm, then we don't want the "-C" option.
-    # -C means demangle to AIX nm, but means don't demangle with GNU nm
-    if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
-      _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
-    else
-      _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
-    fi
-    ;;
-  pw32*)
-    _LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds"
-  ;;
-  cygwin* | mingw* | cegcc*)
-    _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;/^.*[[ ]]__nm__/s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols'
-  ;;
-  linux* | k*bsd*-gnu)
-    _LT_TAGVAR(link_all_deplibs, $1)=no
-  ;;
-  *)
-    _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
-  ;;
-  esac
-  _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*']
-], [
-  runpath_var=
-  _LT_TAGVAR(allow_undefined_flag, $1)=
-  _LT_TAGVAR(always_export_symbols, $1)=no
-  _LT_TAGVAR(archive_cmds, $1)=
-  _LT_TAGVAR(archive_expsym_cmds, $1)=
-  _LT_TAGVAR(compiler_needs_object, $1)=no
-  _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
-  _LT_TAGVAR(export_dynamic_flag_spec, $1)=
-  _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
-  _LT_TAGVAR(hardcode_automatic, $1)=no
-  _LT_TAGVAR(hardcode_direct, $1)=no
-  _LT_TAGVAR(hardcode_direct_absolute, $1)=no
-  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
-  _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
-  _LT_TAGVAR(hardcode_libdir_separator, $1)=
-  _LT_TAGVAR(hardcode_minus_L, $1)=no
-  _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
-  _LT_TAGVAR(inherit_rpath, $1)=no
-  _LT_TAGVAR(link_all_deplibs, $1)=unknown
-  _LT_TAGVAR(module_cmds, $1)=
-  _LT_TAGVAR(module_expsym_cmds, $1)=
-  _LT_TAGVAR(old_archive_from_new_cmds, $1)=
-  _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)=
-  _LT_TAGVAR(thread_safe_flag_spec, $1)=
-  _LT_TAGVAR(whole_archive_flag_spec, $1)=
-  # include_expsyms should be a list of space-separated symbols to be *always*
-  # included in the symbol list
-  _LT_TAGVAR(include_expsyms, $1)=
-  # exclude_expsyms can be an extended regexp of symbols to exclude
-  # it will be wrapped by ` (' and `)$', so one must not match beginning or
-  # end of line.  Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
-  # as well as any symbol that contains `d'.
-  _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*']
-  # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
-  # platforms (ab)use it in PIC code, but their linkers get confused if
-  # the symbol is explicitly referenced.  Since portable code cannot
-  # rely on this symbol name, it's probably fine to never include it in
-  # preloaded symbol tables.
-  # Exclude shared library initialization/finalization symbols.
-dnl Note also adjust exclude_expsyms for C++ above.
-  extract_expsyms_cmds=
-
-  case $host_os in
-  cygwin* | mingw* | pw32* | cegcc*)
-    # FIXME: the MSVC++ port hasn't been tested in a loooong time
-    # When not using gcc, we currently assume that we are using
-    # Microsoft Visual C++.
-    if test "$GCC" != yes; then
-      with_gnu_ld=no
-    fi
-    ;;
-  interix*)
-    # we just hope/assume this is gcc and not c89 (= MSVC++)
-    with_gnu_ld=yes
-    ;;
-  openbsd*)
-    with_gnu_ld=no
-    ;;
-  linux* | k*bsd*-gnu)
-    _LT_TAGVAR(link_all_deplibs, $1)=no
-    ;;
-  esac
-
-  _LT_TAGVAR(ld_shlibs, $1)=yes
-  if test "$with_gnu_ld" = yes; then
-    # If archive_cmds runs LD, not CC, wlarc should be empty
-    wlarc='${wl}'
-
-    # Set some defaults for GNU ld with shared library support. These
-    # are reset later if shared libraries are not supported. Putting them
-    # here allows them to be overridden if necessary.
-    runpath_var=LD_RUN_PATH
-    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
-    # ancient GNU ld didn't support --whole-archive et. al.
-    if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then
-      _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
-    else
-      _LT_TAGVAR(whole_archive_flag_spec, $1)=
-    fi
-    supports_anon_versioning=no
-    case `$LD -v 2>&1` in
-      *GNU\ gold*) supports_anon_versioning=yes ;;
-      *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11
-      *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
-      *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
-      *\ 2.11.*) ;; # other 2.11 versions
-      *) supports_anon_versioning=yes ;;
-    esac
-
-    # See if GNU ld supports shared libraries.
-    case $host_os in
-    aix[[3-9]]*)
-      # On AIX/PPC, the GNU linker is very broken
-      if test "$host_cpu" != ia64; then
-	_LT_TAGVAR(ld_shlibs, $1)=no
-	cat <<_LT_EOF 1>&2
-
-*** Warning: the GNU linker, at least up to release 2.9.1, is reported
-*** to be unable to reliably create shared libraries on AIX.
-*** Therefore, libtool is disabling shared libraries support.  If you
-*** really care for shared libraries, you may want to modify your PATH
-*** so that a non-GNU linker is found, and then restart.
-
-_LT_EOF
-      fi
-      ;;
-
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-            _LT_TAGVAR(archive_expsym_cmds, $1)=''
-        ;;
-      m68k)
-            _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
-            _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-            _LT_TAGVAR(hardcode_minus_L, $1)=yes
-        ;;
-      esac
-      ;;
-
-    beos*)
-      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	_LT_TAGVAR(allow_undefined_flag, $1)=unsupported
-	# Joseph Beckenbach <jrb3 at best.com> says some releases of gcc
-	# support --undefined.  This deserves some investigation.  FIXME
-	_LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-      else
-	_LT_TAGVAR(ld_shlibs, $1)=no
-      fi
-      ;;
-
-    cygwin* | mingw* | pw32* | cegcc*)
-      # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
-      # as there is no search path for DLLs.
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-      _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
-      _LT_TAGVAR(always_export_symbols, $1)=no
-      _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
-      _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols'
-
-      if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
-        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-	# If the export-symbols file already is a .def file (1st line
-	# is EXPORTS), use it as is; otherwise, prepend...
-	_LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-	  cp $export_symbols $output_objdir/$soname.def;
-	else
-	  echo EXPORTS > $output_objdir/$soname.def;
-	  cat $export_symbols >> $output_objdir/$soname.def;
-	fi~
-	$CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-      else
-	_LT_TAGVAR(ld_shlibs, $1)=no
-      fi
-      ;;
-
-    interix[[3-9]]*)
-      _LT_TAGVAR(hardcode_direct, $1)=no
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
-      # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
-      # Instead, shared libraries are loaded at an image base (0x10000000 by
-      # default) and relocated if they conflict, which is a slow very memory
-      # consuming and fragmenting process.  To avoid this, we pick a random,
-      # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
-      # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
-      _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-      _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-      ;;
-
-    gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
-      tmp_diet=no
-      if test "$host_os" = linux-dietlibc; then
-	case $cc_basename in
-	  diet\ *) tmp_diet=yes;;	# linux-dietlibc with static linking (!diet-dyn)
-	esac
-      fi
-      if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
-	 && test "$tmp_diet" = no
-      then
-	tmp_addflag=
-	tmp_sharedflag='-shared'
-	case $cc_basename,$host_cpu in
-        pgcc*)				# Portland Group C compiler
-	  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
-	  tmp_addflag=' $pic_flag'
-	  ;;
-	pgf77* | pgf90* | pgf95*)	# Portland Group f77 and f90 compilers
-	  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
-	  tmp_addflag=' $pic_flag -Mnomain' ;;
-	ecc*,ia64* | icc*,ia64*)	# Intel C compiler on ia64
-	  tmp_addflag=' -i_dynamic' ;;
-	efc*,ia64* | ifort*,ia64*)	# Intel Fortran compiler on ia64
-	  tmp_addflag=' -i_dynamic -nofor_main' ;;
-	ifc* | ifort*)			# Intel Fortran compiler
-	  tmp_addflag=' -nofor_main' ;;
-	lf95*)				# Lahey Fortran 8.1
-	  _LT_TAGVAR(whole_archive_flag_spec, $1)=
-	  tmp_sharedflag='--shared' ;;
-	xl[[cC]]*)			# IBM XL C 8.0 on PPC (deal with xlf below)
-	  tmp_sharedflag='-qmkshrobj'
-	  tmp_addflag= ;;
-	esac
-	case `$CC -V 2>&1 | sed 5q` in
-	*Sun\ C*)			# Sun C 5.9
-	  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
-	  _LT_TAGVAR(compiler_needs_object, $1)=yes
-	  tmp_sharedflag='-G' ;;
-	*Sun\ F*)			# Sun Fortran 8.3
-	  tmp_sharedflag='-G' ;;
-	esac
-	_LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-
-        if test "x$supports_anon_versioning" = xyes; then
-          _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
-	    cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-	    echo "local: *; };" >> $output_objdir/$libname.ver~
-	    $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
-        fi
-
-	case $cc_basename in
-	xlf*)
-	  # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
-	  _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive'
-	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
-	  _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir'
-	  _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib'
-	  if test "x$supports_anon_versioning" = xyes; then
-	    _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
-	      cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-	      echo "local: *; };" >> $output_objdir/$libname.ver~
-	      $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
-	  fi
-	  ;;
-	esac
-      else
-        _LT_TAGVAR(ld_shlibs, $1)=no
-      fi
-      ;;
-
-    netbsd* | netbsdelf*-gnu)
-      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-	_LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
-	wlarc=
-      else
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-      fi
-      ;;
-
-    solaris*)
-      if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then
-	_LT_TAGVAR(ld_shlibs, $1)=no
-	cat <<_LT_EOF 1>&2
-
-*** Warning: The releases 2.8.* of the GNU linker cannot reliably
-*** create shared libraries on Solaris systems.  Therefore, libtool
-*** is disabling shared libraries support.  We urge you to upgrade GNU
-*** binutils to release 2.9.1 or newer.  Another option is to modify
-*** your PATH or compiler configuration so that the native linker is
-*** used, and then restart.
-
-_LT_EOF
-      elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-      else
-	_LT_TAGVAR(ld_shlibs, $1)=no
-      fi
-      ;;
-
-    sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
-      case `$LD -v 2>&1` in
-        *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*)
-	_LT_TAGVAR(ld_shlibs, $1)=no
-	cat <<_LT_EOF 1>&2
-
-*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
-*** reliably create shared libraries on SCO systems.  Therefore, libtool
-*** is disabling shared libraries support.  We urge you to upgrade GNU
-*** binutils to release 2.16.91.0.3 or newer.  Another option is to modify
-*** your PATH or compiler configuration so that the native linker is
-*** used, and then restart.
-
-_LT_EOF
-	;;
-	*)
-	  # For security reasons, it is highly recommended that you always
-	  # use absolute paths for naming shared libraries, and exclude the
-	  # DT_RUNPATH tag from executables and libraries.  But doing so
-	  # requires that you compile everything twice, which is a pain.
-	  if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-	  else
-	    _LT_TAGVAR(ld_shlibs, $1)=no
-	  fi
-	;;
-      esac
-      ;;
-
-    sunos4*)
-      _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-      wlarc=
-      _LT_TAGVAR(hardcode_direct, $1)=yes
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    *)
-      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-      else
-	_LT_TAGVAR(ld_shlibs, $1)=no
-      fi
-      ;;
-    esac
-
-    if test "$_LT_TAGVAR(ld_shlibs, $1)" = no; then
-      runpath_var=
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
-      _LT_TAGVAR(export_dynamic_flag_spec, $1)=
-      _LT_TAGVAR(whole_archive_flag_spec, $1)=
-    fi
-  else
-    # PORTME fill in a description of your system's linker (not GNU ld)
-    case $host_os in
-    aix3*)
-      _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
-      _LT_TAGVAR(always_export_symbols, $1)=yes
-      _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
-      # Note: this linker hardcodes the directories in LIBPATH if there
-      # are no directories specified by -L.
-      _LT_TAGVAR(hardcode_minus_L, $1)=yes
-      if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
-	# Neither direct hardcoding nor static linking is supported with a
-	# broken collect2.
-	_LT_TAGVAR(hardcode_direct, $1)=unsupported
-      fi
-      ;;
-
-    aix[[4-9]]*)
-      if test "$host_cpu" = ia64; then
-	# On IA64, the linker does run time linking by default, so we don't
-	# have to do anything special.
-	aix_use_runtimelinking=no
-	exp_sym_flag='-Bexport'
-	no_entry_flag=""
-      else
-	# If we're using GNU nm, then we don't want the "-C" option.
-	# -C means demangle to AIX nm, but means don't demangle with GNU nm
-	if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
-	  _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
-	else
-	  _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
-	fi
-	aix_use_runtimelinking=no
-
-	# Test if we are trying to use run time linking or normal
-	# AIX style linking. If -brtl is somewhere in LDFLAGS, we
-	# need to do runtime linking.
-	case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*)
-	  for ld_flag in $LDFLAGS; do
-	  if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
-	    aix_use_runtimelinking=yes
-	    break
-	  fi
-	  done
-	  ;;
-	esac
-
-	exp_sym_flag='-bexport'
-	no_entry_flag='-bnoentry'
-      fi
-
-      # When large executables or shared objects are built, AIX ld can
-      # have problems creating the table of contents.  If linking a library
-      # or program results in "error TOC overflow" add -mminimal-toc to
-      # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
-      # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
-
-      _LT_TAGVAR(archive_cmds, $1)=''
-      _LT_TAGVAR(hardcode_direct, $1)=yes
-      _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
-      _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
-      _LT_TAGVAR(link_all_deplibs, $1)=yes
-      _LT_TAGVAR(file_list_spec, $1)='${wl}-f,'
-
-      if test "$GCC" = yes; then
-	case $host_os in aix4.[[012]]|aix4.[[012]].*)
-	# We only want to do this on AIX 4.2 and lower, the check
-	# below for broken collect2 doesn't work under 4.3+
-	  collect2name=`${CC} -print-prog-name=collect2`
-	  if test -f "$collect2name" &&
-	   strings "$collect2name" | $GREP resolve_lib_name >/dev/null
-	  then
-	  # We have reworked collect2
-	  :
-	  else
-	  # We have old collect2
-	  _LT_TAGVAR(hardcode_direct, $1)=unsupported
-	  # It fails to find uninstalled libraries when the uninstalled
-	  # path is not listed in the libpath.  Setting hardcode_minus_L
-	  # to unsupported forces relinking
-	  _LT_TAGVAR(hardcode_minus_L, $1)=yes
-	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-	  _LT_TAGVAR(hardcode_libdir_separator, $1)=
-	  fi
-	  ;;
-	esac
-	shared_flag='-shared'
-	if test "$aix_use_runtimelinking" = yes; then
-	  shared_flag="$shared_flag "'${wl}-G'
-	fi
-	_LT_TAGVAR(link_all_deplibs, $1)=no
-      else
-	# not using gcc
-	if test "$host_cpu" = ia64; then
-	# VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
-	# chokes on -Wl,-G. The following line is correct:
-	  shared_flag='-G'
-	else
-	  if test "$aix_use_runtimelinking" = yes; then
-	    shared_flag='${wl}-G'
-	  else
-	    shared_flag='${wl}-bM:SRE'
-	  fi
-	fi
-      fi
-
-      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall'
-      # It seems that -bexpall does not export symbols beginning with
-      # underscore (_), so it is better to generate a list of symbols to export.
-      _LT_TAGVAR(always_export_symbols, $1)=yes
-      if test "$aix_use_runtimelinking" = yes; then
-	# Warning - without using the other runtime loading flags (-brtl),
-	# -berok will link without error, but may produce a broken library.
-	_LT_TAGVAR(allow_undefined_flag, $1)='-berok'
-        # Determine the default libpath from the value encoded in an
-        # empty executable.
-        _LT_SYS_MODULE_PATH_AIX
-        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
-        _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
-      else
-	if test "$host_cpu" = ia64; then
-	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
-	  _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
-	  _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
-	else
-	 # Determine the default libpath from the value encoded in an
-	 # empty executable.
-	 _LT_SYS_MODULE_PATH_AIX
-	 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
-	  # Warning - without using the other run time loading flags,
-	  # -berok will link without error, but may produce a broken library.
-	  _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
-	  _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
-	  # Exported symbols can be pulled into shared objects from archives
-	  _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
-	  _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
-	  # This is similar to how AIX traditionally builds its shared libraries.
-	  _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
-	fi
-      fi
-      ;;
-
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-            _LT_TAGVAR(archive_expsym_cmds, $1)=''
-        ;;
-      m68k)
-            _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
-            _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-            _LT_TAGVAR(hardcode_minus_L, $1)=yes
-        ;;
-      esac
-      ;;
-
-    bsdi[[45]]*)
-      _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic
-      ;;
-
-    cygwin* | mingw* | pw32* | cegcc*)
-      # When not using gcc, we currently assume that we are using
-      # Microsoft Visual C++.
-      # hardcode_libdir_flag_spec is actually meaningless, as there is
-      # no search path for DLLs.
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
-      _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
-      # Tell ltmain to make .lib files, not .a files.
-      libext=lib
-      # Tell ltmain to make .dll files, not .so files.
-      shrext_cmds=".dll"
-      # FIXME: Setting linknames here is a bad hack.
-      _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `$ECHO "X$deplibs" | $Xsed -e '\''s/ -lc$//'\''` -link -dll~linknames='
-      # The linker will automatically build a .lib file if we build a DLL.
-      _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
-      # FIXME: Should let the user specify the lib program.
-      _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs'
-      _LT_TAGVAR(fix_srcfile_path, $1)='`cygpath -w "$srcfile"`'
-      _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
-      ;;
-
-    darwin* | rhapsody*)
-      _LT_DARWIN_LINKER_FEATURES($1)
-      ;;
-
-    dgux*)
-      _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    freebsd1*)
-      _LT_TAGVAR(ld_shlibs, $1)=no
-      ;;
-
-    # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
-    # support.  Future versions do this automatically, but an explicit c++rt0.o
-    # does not break anything, and helps significantly (at the cost of a little
-    # extra space).
-    freebsd2.2*)
-      _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-      _LT_TAGVAR(hardcode_direct, $1)=yes
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    # Unfortunately, older versions of FreeBSD 2 do not have this feature.
-    freebsd2*)
-      _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-      _LT_TAGVAR(hardcode_direct, $1)=yes
-      _LT_TAGVAR(hardcode_minus_L, $1)=yes
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
-    freebsd* | dragonfly*)
-      _LT_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-      _LT_TAGVAR(hardcode_direct, $1)=yes
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    hpux9*)
-      if test "$GCC" = yes; then
-	_LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-      else
-	_LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-      fi
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
-      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-      _LT_TAGVAR(hardcode_direct, $1)=yes
-
-      # hardcode_minus_L: Not really in the search PATH,
-      # but as the default location of the library.
-      _LT_TAGVAR(hardcode_minus_L, $1)=yes
-      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
-      ;;
-
-    hpux10*)
-      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
-      fi
-      if test "$with_gnu_ld" = no; then
-	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
-	_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir'
-	_LT_TAGVAR(hardcode_libdir_separator, $1)=:
-	_LT_TAGVAR(hardcode_direct, $1)=yes
-	_LT_TAGVAR(hardcode_direct_absolute, $1)=yes
-	_LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
-	# hardcode_minus_L: Not really in the search PATH,
-	# but as the default location of the library.
-	_LT_TAGVAR(hardcode_minus_L, $1)=yes
-      fi
-      ;;
-
-    hpux11*)
-      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
-	case $host_cpu in
-	hppa*64*)
-	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	ia64*)
-	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	*)
-	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	esac
-      else
-	case $host_cpu in
-	hppa*64*)
-	  _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	ia64*)
-	  _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	*)
-	  _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	esac
-      fi
-      if test "$with_gnu_ld" = no; then
-	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
-	_LT_TAGVAR(hardcode_libdir_separator, $1)=:
-
-	case $host_cpu in
-	hppa*64*|ia64*)
-	  _LT_TAGVAR(hardcode_direct, $1)=no
-	  _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-	  ;;
-	*)
-	  _LT_TAGVAR(hardcode_direct, $1)=yes
-	  _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
-	  _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
-
-	  # hardcode_minus_L: Not really in the search PATH,
-	  # but as the default location of the library.
-	  _LT_TAGVAR(hardcode_minus_L, $1)=yes
-	  ;;
-	esac
-      fi
-      ;;
-
-    irix5* | irix6* | nonstopux*)
-      if test "$GCC" = yes; then
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-	# Try to use the -exported_symbol ld option, if it does not
-	# work, assume that -exports_file does not work either and
-	# implicitly export all symbols.
-        save_LDFLAGS="$LDFLAGS"
-        LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
-        AC_LINK_IFELSE(int foo(void) {},
-          _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
-        )
-        LDFLAGS="$save_LDFLAGS"
-      else
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
-	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
-      fi
-      _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-      _LT_TAGVAR(inherit_rpath, $1)=yes
-      _LT_TAGVAR(link_all_deplibs, $1)=yes
-      ;;
-
-    netbsd* | netbsdelf*-gnu)
-      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-	_LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
-      else
-	_LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
-      fi
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-      _LT_TAGVAR(hardcode_direct, $1)=yes
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    newsos6)
-      _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      _LT_TAGVAR(hardcode_direct, $1)=yes
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    *nto* | *qnx*)
-      ;;
-
-    openbsd*)
-      if test -f /usr/libexec/ld.so; then
-	_LT_TAGVAR(hardcode_direct, $1)=yes
-	_LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-	_LT_TAGVAR(hardcode_direct_absolute, $1)=yes
-	if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-	  _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
-	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-	  _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
-	else
-	  case $host_os in
-	   openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*)
-	     _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-	     _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-	     ;;
-	   *)
-	     _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-	     _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-	     ;;
-	  esac
-	fi
-      else
-	_LT_TAGVAR(ld_shlibs, $1)=no
-      fi
-      ;;
-
-    os2*)
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-      _LT_TAGVAR(hardcode_minus_L, $1)=yes
-      _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
-      _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$ECHO DATA >> $output_objdir/$libname.def~$ECHO " SINGLE NONSHARED" >> $output_objdir/$libname.def~$ECHO EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
-      _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
-      ;;
-
-    osf3*)
-      if test "$GCC" = yes; then
-	_LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-      else
-	_LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
-      fi
-      _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-      ;;
-
-    osf4* | osf5*)	# as osf3* with the addition of -msym flag
-      if test "$GCC" = yes; then
-	_LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-      else
-	_LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
-	_LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~
-	$CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp'
-
-	# Both c and cxx compiler support -rpath directly
-	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
-      fi
-      _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
-      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-      ;;
-
-    solaris*)
-      _LT_TAGVAR(no_undefined_flag, $1)=' -z defs'
-      if test "$GCC" = yes; then
-	wlarc='${wl}'
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-	_LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-	  $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
-      else
-	case `$CC -V 2>&1` in
-	*"Compilers 5.0"*)
-	  wlarc=''
-	  _LT_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	  _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-	  $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
-	  ;;
-	*)
-	  wlarc='${wl}'
-	  _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags'
-	  _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-	  $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
-	  ;;
-	esac
-      fi
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      case $host_os in
-      solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
-      *)
-	# The compiler driver will combine and reorder linker options,
-	# but understands `-z linker_flag'.  GCC discards it without `$wl',
-	# but is careful enough not to reorder.
-	# Supported since Solaris 2.6 (maybe 2.5.1?)
-	if test "$GCC" = yes; then
-	  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
-	else
-	  _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract'
-	fi
-	;;
-      esac
-      _LT_TAGVAR(link_all_deplibs, $1)=yes
-      ;;
-
-    sunos4*)
-      if test "x$host_vendor" = xsequent; then
-	# Use $CC to link under sequent, because it throws in some extra .o
-	# files that make .init and .fini sections work.
-	_LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	_LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
-      fi
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-      _LT_TAGVAR(hardcode_direct, $1)=yes
-      _LT_TAGVAR(hardcode_minus_L, $1)=yes
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    sysv4)
-      case $host_vendor in
-	sni)
-	  _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	  _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true???
-	;;
-	siemens)
-	  ## LD is ld it makes a PLAMLIB
-	  ## CC just makes a GrossModule.
-	  _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags'
-	  _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs'
-	  _LT_TAGVAR(hardcode_direct, $1)=no
-        ;;
-	motorola)
-	  _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	  _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie
-	;;
-      esac
-      runpath_var='LD_RUN_PATH'
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    sysv4.3*)
-      _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport'
-      ;;
-
-    sysv4*MP*)
-      if test -d /usr/nec; then
-	_LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	_LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-	runpath_var=LD_RUN_PATH
-	hardcode_runpath_var=yes
-	_LT_TAGVAR(ld_shlibs, $1)=yes
-      fi
-      ;;
-
-    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*)
-      _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
-      _LT_TAGVAR(archive_cmds_need_lc, $1)=no
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      runpath_var='LD_RUN_PATH'
-
-      if test "$GCC" = yes; then
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	_LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      fi
-      ;;
-
-    sysv5* | sco3.2v5* | sco5v6*)
-      # Note: We can NOT use -z defs as we might desire, because we do not
-      # link with -lc, and that would cause any symbols used from libc to
-      # always be unresolved, which means just about no library would
-      # ever link correctly.  If we're not using GNU ld we use -z text
-      # though, which does catch some bad symbols but isn't as heavy-handed
-      # as -z defs.
-      _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
-      _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs'
-      _LT_TAGVAR(archive_cmds_need_lc, $1)=no
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir'
-      _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
-      _LT_TAGVAR(link_all_deplibs, $1)=yes
-      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
-      runpath_var='LD_RUN_PATH'
-
-      if test "$GCC" = yes; then
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	_LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      fi
-      ;;
-
-    uts4*)
-      _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    *)
-      _LT_TAGVAR(ld_shlibs, $1)=no
-      ;;
-    esac
-
-    if test x$host_vendor = xsni; then
-      case $host in
-      sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
-	_LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Blargedynsym'
-	;;
-      esac
-    fi
-  fi
-])
-AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)])
-test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
-
-_LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld
-
-_LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl
-_LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl
-_LT_DECL([], [extract_expsyms_cmds], [2],
-    [The commands to extract the exported symbol list from a shared archive])
-
-#
-# Do we need to explicitly link libc?
-#
-case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in
-x|xyes)
-  # Assume -lc should be added
-  _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
-
-  if test "$enable_shared" = yes && test "$GCC" = yes; then
-    case $_LT_TAGVAR(archive_cmds, $1) in
-    *'~'*)
-      # FIXME: we may have to deal with multi-command sequences.
-      ;;
-    '$CC '*)
-      # Test whether the compiler implicitly links with -lc since on some
-      # systems, -lgcc has to come before -lc. If gcc already passes -lc
-      # to ld, don't add -lc before -lgcc.
-      AC_MSG_CHECKING([whether -lc should be explicitly linked in])
-      $RM conftest*
-      echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
-      if AC_TRY_EVAL(ac_compile) 2>conftest.err; then
-        soname=conftest
-        lib=conftest
-        libobjs=conftest.$ac_objext
-        deplibs=
-        wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1)
-	pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1)
-        compiler_flags=-v
-        linker_flags=-v
-        verstring=
-        output_objdir=.
-        libname=conftest
-        lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1)
-        _LT_TAGVAR(allow_undefined_flag, $1)=
-        if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1)
-        then
-	  _LT_TAGVAR(archive_cmds_need_lc, $1)=no
-        else
-	  _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
-        fi
-        _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag
-      else
-        cat conftest.err 1>&5
-      fi
-      $RM conftest*
-      AC_MSG_RESULT([$_LT_TAGVAR(archive_cmds_need_lc, $1)])
-      ;;
-    esac
-  fi
-  ;;
-esac
-
-_LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0],
-    [Whether or not to add -lc for building shared libraries])
-_LT_TAGDECL([allow_libtool_libs_with_static_runtimes],
-    [enable_shared_with_static_runtimes], [0],
-    [Whether or not to disallow shared libs when runtime libs are static])
-_LT_TAGDECL([], [export_dynamic_flag_spec], [1],
-    [Compiler flag to allow reflexive dlopens])
-_LT_TAGDECL([], [whole_archive_flag_spec], [1],
-    [Compiler flag to generate shared objects directly from archives])
-_LT_TAGDECL([], [compiler_needs_object], [1],
-    [Whether the compiler copes with passing no objects directly])
-_LT_TAGDECL([], [old_archive_from_new_cmds], [2],
-    [Create an old-style archive from a shared archive])
-_LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2],
-    [Create a temporary old-style archive to link instead of a shared archive])
-_LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive])
-_LT_TAGDECL([], [archive_expsym_cmds], [2])
-_LT_TAGDECL([], [module_cmds], [2],
-    [Commands used to build a loadable module if different from building
-    a shared archive.])
-_LT_TAGDECL([], [module_expsym_cmds], [2])
-_LT_TAGDECL([], [with_gnu_ld], [1],
-    [Whether we are building with GNU ld or not])
-_LT_TAGDECL([], [allow_undefined_flag], [1],
-    [Flag that allows shared libraries with undefined symbols to be built])
-_LT_TAGDECL([], [no_undefined_flag], [1],
-    [Flag that enforces no undefined symbols])
-_LT_TAGDECL([], [hardcode_libdir_flag_spec], [1],
-    [Flag to hardcode $libdir into a binary during linking.
-    This must work even if $libdir does not exist])
-_LT_TAGDECL([], [hardcode_libdir_flag_spec_ld], [1],
-    [[If ld is used when linking, flag to hardcode $libdir into a binary
-    during linking.  This must work even if $libdir does not exist]])
-_LT_TAGDECL([], [hardcode_libdir_separator], [1],
-    [Whether we need a single "-rpath" flag with a separated argument])
-_LT_TAGDECL([], [hardcode_direct], [0],
-    [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
-    DIR into the resulting binary])
-_LT_TAGDECL([], [hardcode_direct_absolute], [0],
-    [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
-    DIR into the resulting binary and the resulting library dependency is
-    "absolute", i.e impossible to change by setting ${shlibpath_var} if the
-    library is relocated])
-_LT_TAGDECL([], [hardcode_minus_L], [0],
-    [Set to "yes" if using the -LDIR flag during linking hardcodes DIR
-    into the resulting binary])
-_LT_TAGDECL([], [hardcode_shlibpath_var], [0],
-    [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
-    into the resulting binary])
-_LT_TAGDECL([], [hardcode_automatic], [0],
-    [Set to "yes" if building a shared library automatically hardcodes DIR
-    into the library and all subsequent libraries and executables linked
-    against it])
-_LT_TAGDECL([], [inherit_rpath], [0],
-    [Set to yes if linker adds runtime paths of dependent libraries
-    to runtime path list])
-_LT_TAGDECL([], [link_all_deplibs], [0],
-    [Whether libtool must link a program against all its dependency libraries])
-_LT_TAGDECL([], [fix_srcfile_path], [1],
-    [Fix the shell variable $srcfile for the compiler])
-_LT_TAGDECL([], [always_export_symbols], [0],
-    [Set to "yes" if exported symbols are required])
-_LT_TAGDECL([], [export_symbols_cmds], [2],
-    [The commands to list exported symbols])
-_LT_TAGDECL([], [exclude_expsyms], [1],
-    [Symbols that should not be listed in the preloaded symbols])
-_LT_TAGDECL([], [include_expsyms], [1],
-    [Symbols that must always be exported])
-_LT_TAGDECL([], [prelink_cmds], [2],
-    [Commands necessary for linking programs (against libraries) with templates])
-_LT_TAGDECL([], [file_list_spec], [1],
-    [Specify filename containing input files])
-dnl FIXME: Not yet implemented
-dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1],
-dnl    [Compiler flag to generate thread safe objects])
-])# _LT_LINKER_SHLIBS
-
-
-# _LT_LANG_C_CONFIG([TAG])
-# ------------------------
-# Ensure that the configuration variables for a C compiler are suitably
-# defined.  These variables are subsequently used by _LT_CONFIG to write
-# the compiler configuration to `libtool'.
-m4_defun([_LT_LANG_C_CONFIG],
-[m4_require([_LT_DECL_EGREP])dnl
-lt_save_CC="$CC"
-AC_LANG_PUSH(C)
-
-# Source file extension for C test sources.
-ac_ext=c
-
-# Object file extension for compiled C test sources.
-objext=o
-_LT_TAGVAR(objext, $1)=$objext
-
-# Code to be used in simple compile tests
-lt_simple_compile_test_code="int some_variable = 0;"
-
-# Code to be used in simple link tests
-lt_simple_link_test_code='int main(){return(0);}'
-
-_LT_TAG_COMPILER
-# Save the default compiler, since it gets overwritten when the other
-# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP.
-compiler_DEFAULT=$CC
-
-# save warnings/boilerplate of simple test code
-_LT_COMPILER_BOILERPLATE
-_LT_LINKER_BOILERPLATE
-
-## CAVEAT EMPTOR:
-## There is no encapsulation within the following macros, do not change
-## the running order or otherwise move them around unless you know exactly
-## what you are doing...
-if test -n "$compiler"; then
-  _LT_COMPILER_NO_RTTI($1)
-  _LT_COMPILER_PIC($1)
-  _LT_COMPILER_C_O($1)
-  _LT_COMPILER_FILE_LOCKS($1)
-  _LT_LINKER_SHLIBS($1)
-  _LT_SYS_DYNAMIC_LINKER($1)
-  _LT_LINKER_HARDCODE_LIBPATH($1)
-  LT_SYS_DLOPEN_SELF
-  _LT_CMD_STRIPLIB
-
-  # Report which library types will actually be built
-  AC_MSG_CHECKING([if libtool supports shared libraries])
-  AC_MSG_RESULT([$can_build_shared])
-
-  AC_MSG_CHECKING([whether to build shared libraries])
-  test "$can_build_shared" = "no" && enable_shared=no
-
-  # On AIX, shared libraries and static libraries use the same namespace, and
-  # are all built from PIC.
-  case $host_os in
-  aix3*)
-    test "$enable_shared" = yes && enable_static=no
-    if test -n "$RANLIB"; then
-      archive_cmds="$archive_cmds~\$RANLIB \$lib"
-      postinstall_cmds='$RANLIB $lib'
-    fi
-    ;;
-
-  aix[[4-9]]*)
-    if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
-      test "$enable_shared" = yes && enable_static=no
-    fi
-    ;;
-  esac
-  AC_MSG_RESULT([$enable_shared])
-
-  AC_MSG_CHECKING([whether to build static libraries])
-  # Make sure either enable_shared or enable_static is yes.
-  test "$enable_shared" = yes || enable_static=yes
-  AC_MSG_RESULT([$enable_static])
-
-  _LT_CONFIG($1)
-fi
-AC_LANG_POP
-CC="$lt_save_CC"
-])# _LT_LANG_C_CONFIG
-
-
-# _LT_PROG_CXX
-# ------------
-# Since AC_PROG_CXX is broken, in that it returns g++ if there is no c++
-# compiler, we have our own version here.
-m4_defun([_LT_PROG_CXX],
-[
-pushdef([AC_MSG_ERROR], [_lt_caught_CXX_error=yes])
-AC_PROG_CXX
-if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
-    ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
-    (test "X$CXX" != "Xg++"))) ; then
-  AC_PROG_CXXCPP
-else
-  _lt_caught_CXX_error=yes
-fi
-popdef([AC_MSG_ERROR])
-])# _LT_PROG_CXX
-
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([_LT_PROG_CXX], [])
-
-
-# _LT_LANG_CXX_CONFIG([TAG])
-# --------------------------
-# Ensure that the configuration variables for a C++ compiler are suitably
-# defined.  These variables are subsequently used by _LT_CONFIG to write
-# the compiler configuration to `libtool'.
-m4_defun([_LT_LANG_CXX_CONFIG],
-[AC_REQUIRE([_LT_PROG_CXX])dnl
-m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-m4_require([_LT_DECL_EGREP])dnl
-
-AC_LANG_PUSH(C++)
-_LT_TAGVAR(archive_cmds_need_lc, $1)=no
-_LT_TAGVAR(allow_undefined_flag, $1)=
-_LT_TAGVAR(always_export_symbols, $1)=no
-_LT_TAGVAR(archive_expsym_cmds, $1)=
-_LT_TAGVAR(compiler_needs_object, $1)=no
-_LT_TAGVAR(export_dynamic_flag_spec, $1)=
-_LT_TAGVAR(hardcode_direct, $1)=no
-_LT_TAGVAR(hardcode_direct_absolute, $1)=no
-_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
-_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
-_LT_TAGVAR(hardcode_libdir_separator, $1)=
-_LT_TAGVAR(hardcode_minus_L, $1)=no
-_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
-_LT_TAGVAR(hardcode_automatic, $1)=no
-_LT_TAGVAR(inherit_rpath, $1)=no
-_LT_TAGVAR(module_cmds, $1)=
-_LT_TAGVAR(module_expsym_cmds, $1)=
-_LT_TAGVAR(link_all_deplibs, $1)=unknown
-_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
-_LT_TAGVAR(no_undefined_flag, $1)=
-_LT_TAGVAR(whole_archive_flag_spec, $1)=
-_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
-
-# Source file extension for C++ test sources.
-ac_ext=cpp
-
-# Object file extension for compiled C++ test sources.
-objext=o
-_LT_TAGVAR(objext, $1)=$objext
-
-# No sense in running all these tests if we already determined that
-# the CXX compiler isn't working.  Some variables (like enable_shared)
-# are currently assumed to apply to all compilers on this platform,
-# and will be corrupted by setting them based on a non-working compiler.
-if test "$_lt_caught_CXX_error" != yes; then
-  # Code to be used in simple compile tests
-  lt_simple_compile_test_code="int some_variable = 0;"
-
-  # Code to be used in simple link tests
-  lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }'
-
-  # ltmain only uses $CC for tagged configurations so make sure $CC is set.
-  _LT_TAG_COMPILER
-
-  # save warnings/boilerplate of simple test code
-  _LT_COMPILER_BOILERPLATE
-  _LT_LINKER_BOILERPLATE
-
-  # Allow CC to be a program name with arguments.
-  lt_save_CC=$CC
-  lt_save_LD=$LD
-  lt_save_GCC=$GCC
-  GCC=$GXX
-  lt_save_with_gnu_ld=$with_gnu_ld
-  lt_save_path_LD=$lt_cv_path_LD
-  if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then
-    lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx
-  else
-    $as_unset lt_cv_prog_gnu_ld
-  fi
-  if test -n "${lt_cv_path_LDCXX+set}"; then
-    lt_cv_path_LD=$lt_cv_path_LDCXX
-  else
-    $as_unset lt_cv_path_LD
-  fi
-  test -z "${LDCXX+set}" || LD=$LDCXX
-  CC=${CXX-"c++"}
-  compiler=$CC
-  _LT_TAGVAR(compiler, $1)=$CC
-  _LT_CC_BASENAME([$compiler])
-
-  if test -n "$compiler"; then
-    # We don't want -fno-exception when compiling C++ code, so set the
-    # no_builtin_flag separately
-    if test "$GXX" = yes; then
-      _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin'
-    else
-      _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
-    fi
-
-    if test "$GXX" = yes; then
-      # Set up default GNU C++ configuration
-
-      LT_PATH_LD
-
-      # Check if GNU C++ uses GNU ld as the underlying linker, since the
-      # archiving commands below assume that GNU ld is being used.
-      if test "$with_gnu_ld" = yes; then
-        _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
-        _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-
-        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-        _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
-
-        # If archive_cmds runs LD, not CC, wlarc should be empty
-        # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to
-        #     investigate it a little bit more. (MM)
-        wlarc='${wl}'
-
-        # ancient GNU ld didn't support --whole-archive et. al.
-        if eval "`$CC -print-prog-name=ld` --help 2>&1" |
-	  $GREP 'no-whole-archive' > /dev/null; then
-          _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
-        else
-          _LT_TAGVAR(whole_archive_flag_spec, $1)=
-        fi
-      else
-        with_gnu_ld=no
-        wlarc=
-
-        # A generic and very simple default shared library creation
-        # command for GNU C++ for the case where it uses the native
-        # linker, instead of GNU ld.  If possible, this setting should
-        # overridden to take advantage of the native linker features on
-        # the platform it is being used on.
-        _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
-      fi
-
-      # Commands to make compiler produce verbose output that lists
-      # what "hidden" libraries, object files and flags are used when
-      # linking a shared library.
-      output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"'
-
-    else
-      GXX=no
-      with_gnu_ld=no
-      wlarc=
-    fi
-
-    # PORTME: fill in a description of your system's C++ link characteristics
-    AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
-    _LT_TAGVAR(ld_shlibs, $1)=yes
-    case $host_os in
-      aix3*)
-        # FIXME: insert proper C++ library support
-        _LT_TAGVAR(ld_shlibs, $1)=no
-        ;;
-      aix[[4-9]]*)
-        if test "$host_cpu" = ia64; then
-          # On IA64, the linker does run time linking by default, so we don't
-          # have to do anything special.
-          aix_use_runtimelinking=no
-          exp_sym_flag='-Bexport'
-          no_entry_flag=""
-        else
-          aix_use_runtimelinking=no
-
-          # Test if we are trying to use run time linking or normal
-          # AIX style linking. If -brtl is somewhere in LDFLAGS, we
-          # need to do runtime linking.
-          case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*)
-	    for ld_flag in $LDFLAGS; do
-	      case $ld_flag in
-	      *-brtl*)
-	        aix_use_runtimelinking=yes
-	        break
-	        ;;
-	      esac
-	    done
-	    ;;
-          esac
-
-          exp_sym_flag='-bexport'
-          no_entry_flag='-bnoentry'
-        fi
-
-        # When large executables or shared objects are built, AIX ld can
-        # have problems creating the table of contents.  If linking a library
-        # or program results in "error TOC overflow" add -mminimal-toc to
-        # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
-        # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
-
-        _LT_TAGVAR(archive_cmds, $1)=''
-        _LT_TAGVAR(hardcode_direct, $1)=yes
-        _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
-        _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
-        _LT_TAGVAR(link_all_deplibs, $1)=yes
-        _LT_TAGVAR(file_list_spec, $1)='${wl}-f,'
-
-        if test "$GXX" = yes; then
-          case $host_os in aix4.[[012]]|aix4.[[012]].*)
-          # We only want to do this on AIX 4.2 and lower, the check
-          # below for broken collect2 doesn't work under 4.3+
-	  collect2name=`${CC} -print-prog-name=collect2`
-	  if test -f "$collect2name" &&
-	     strings "$collect2name" | $GREP resolve_lib_name >/dev/null
-	  then
-	    # We have reworked collect2
-	    :
-	  else
-	    # We have old collect2
-	    _LT_TAGVAR(hardcode_direct, $1)=unsupported
-	    # It fails to find uninstalled libraries when the uninstalled
-	    # path is not listed in the libpath.  Setting hardcode_minus_L
-	    # to unsupported forces relinking
-	    _LT_TAGVAR(hardcode_minus_L, $1)=yes
-	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-	    _LT_TAGVAR(hardcode_libdir_separator, $1)=
-	  fi
-          esac
-          shared_flag='-shared'
-	  if test "$aix_use_runtimelinking" = yes; then
-	    shared_flag="$shared_flag "'${wl}-G'
-	  fi
-        else
-          # not using gcc
-          if test "$host_cpu" = ia64; then
-	  # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
-	  # chokes on -Wl,-G. The following line is correct:
-	  shared_flag='-G'
-          else
-	    if test "$aix_use_runtimelinking" = yes; then
-	      shared_flag='${wl}-G'
-	    else
-	      shared_flag='${wl}-bM:SRE'
-	    fi
-          fi
-        fi
-
-        _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall'
-        # It seems that -bexpall does not export symbols beginning with
-        # underscore (_), so it is better to generate a list of symbols to
-	# export.
-        _LT_TAGVAR(always_export_symbols, $1)=yes
-        if test "$aix_use_runtimelinking" = yes; then
-          # Warning - without using the other runtime loading flags (-brtl),
-          # -berok will link without error, but may produce a broken library.
-          _LT_TAGVAR(allow_undefined_flag, $1)='-berok'
-          # Determine the default libpath from the value encoded in an empty
-          # executable.
-          _LT_SYS_MODULE_PATH_AIX
-          _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
-
-          _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
-        else
-          if test "$host_cpu" = ia64; then
-	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
-	    _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
-	    _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
-          else
-	    # Determine the default libpath from the value encoded in an
-	    # empty executable.
-	    _LT_SYS_MODULE_PATH_AIX
-	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
-	    # Warning - without using the other run time loading flags,
-	    # -berok will link without error, but may produce a broken library.
-	    _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
-	    _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
-	    # Exported symbols can be pulled into shared objects from archives
-	    _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
-	    _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
-	    # This is similar to how AIX traditionally builds its shared
-	    # libraries.
-	    _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
-          fi
-        fi
-        ;;
-
-      beos*)
-	if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	  _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
-	  # Joseph Beckenbach <jrb3 at best.com> says some releases of gcc
-	  # support --undefined.  This deserves some investigation.  FIXME
-	  _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	else
-	  _LT_TAGVAR(ld_shlibs, $1)=no
-	fi
-	;;
-
-      chorus*)
-        case $cc_basename in
-          *)
-	  # FIXME: insert proper C++ library support
-	  _LT_TAGVAR(ld_shlibs, $1)=no
-	  ;;
-        esac
-        ;;
-
-      cygwin* | mingw* | pw32* | cegcc*)
-        # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
-        # as there is no search path for DLLs.
-        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-        _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
-        _LT_TAGVAR(always_export_symbols, $1)=no
-        _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
-
-        if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
-          _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-          # If the export-symbols file already is a .def file (1st line
-          # is EXPORTS), use it as is; otherwise, prepend...
-          _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-	    cp $export_symbols $output_objdir/$soname.def;
-          else
-	    echo EXPORTS > $output_objdir/$soname.def;
-	    cat $export_symbols >> $output_objdir/$soname.def;
-          fi~
-          $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-        else
-          _LT_TAGVAR(ld_shlibs, $1)=no
-        fi
-        ;;
-      darwin* | rhapsody*)
-        _LT_DARWIN_LINKER_FEATURES($1)
-	;;
-
-      dgux*)
-        case $cc_basename in
-          ec++*)
-	    # FIXME: insert proper C++ library support
-	    _LT_TAGVAR(ld_shlibs, $1)=no
-	    ;;
-          ghcx*)
-	    # Green Hills C++ Compiler
-	    # FIXME: insert proper C++ library support
-	    _LT_TAGVAR(ld_shlibs, $1)=no
-	    ;;
-          *)
-	    # FIXME: insert proper C++ library support
-	    _LT_TAGVAR(ld_shlibs, $1)=no
-	    ;;
-        esac
-        ;;
-
-      freebsd[[12]]*)
-        # C++ shared libraries reported to be fairly broken before
-	# switch to ELF
-        _LT_TAGVAR(ld_shlibs, $1)=no
-        ;;
-
-      freebsd-elf*)
-        _LT_TAGVAR(archive_cmds_need_lc, $1)=no
-        ;;
-
-      freebsd* | dragonfly*)
-        # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
-        # conventions
-        _LT_TAGVAR(ld_shlibs, $1)=yes
-        ;;
-
-      gnu*)
-        ;;
-
-      hpux9*)
-        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
-        _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-        _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
-        _LT_TAGVAR(hardcode_direct, $1)=yes
-        _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
-				             # but as the default
-				             # location of the library.
-
-        case $cc_basename in
-          CC*)
-            # FIXME: insert proper C++ library support
-            _LT_TAGVAR(ld_shlibs, $1)=no
-            ;;
-          aCC*)
-            _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-            # Commands to make compiler produce verbose output that lists
-            # what "hidden" libraries, object files and flags are used when
-            # linking a shared library.
-            #
-            # There doesn't appear to be a way to prevent this compiler from
-            # explicitly linking system object files so we need to strip them
-            # from the output so that they don't get included in the library
-            # dependencies.
-            output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed'
-            ;;
-          *)
-            if test "$GXX" = yes; then
-              _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-            else
-              # FIXME: insert proper C++ library support
-              _LT_TAGVAR(ld_shlibs, $1)=no
-            fi
-            ;;
-        esac
-        ;;
-
-      hpux10*|hpux11*)
-        if test $with_gnu_ld = no; then
-	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
-	  _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-
-          case $host_cpu in
-            hppa*64*|ia64*)
-              ;;
-            *)
-	      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
-              ;;
-          esac
-        fi
-        case $host_cpu in
-          hppa*64*|ia64*)
-            _LT_TAGVAR(hardcode_direct, $1)=no
-            _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-            ;;
-          *)
-            _LT_TAGVAR(hardcode_direct, $1)=yes
-            _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
-            _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
-					         # but as the default
-					         # location of the library.
-            ;;
-        esac
-
-        case $cc_basename in
-          CC*)
-	    # FIXME: insert proper C++ library support
-	    _LT_TAGVAR(ld_shlibs, $1)=no
-	    ;;
-          aCC*)
-	    case $host_cpu in
-	      hppa*64*)
-	        _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	        ;;
-	      ia64*)
-	        _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	        ;;
-	      *)
-	        _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	        ;;
-	    esac
-	    # Commands to make compiler produce verbose output that lists
-	    # what "hidden" libraries, object files and flags are used when
-	    # linking a shared library.
-	    #
-	    # There doesn't appear to be a way to prevent this compiler from
-	    # explicitly linking system object files so we need to strip them
-	    # from the output so that they don't get included in the library
-	    # dependencies.
-	    output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed'
-	    ;;
-          *)
-	    if test "$GXX" = yes; then
-	      if test $with_gnu_ld = no; then
-	        case $host_cpu in
-	          hppa*64*)
-	            _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	            ;;
-	          ia64*)
-	            _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	            ;;
-	          *)
-	            _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	            ;;
-	        esac
-	      fi
-	    else
-	      # FIXME: insert proper C++ library support
-	      _LT_TAGVAR(ld_shlibs, $1)=no
-	    fi
-	    ;;
-        esac
-        ;;
-
-      interix[[3-9]]*)
-	_LT_TAGVAR(hardcode_direct, $1)=no
-	_LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-	_LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
-	# Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
-	# Instead, shared libraries are loaded at an image base (0x10000000 by
-	# default) and relocated if they conflict, which is a slow very memory
-	# consuming and fragmenting process.  To avoid this, we pick a random,
-	# 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
-	# time.  Moving up from 0x10000000 also allows more sbrk(2) space.
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-	_LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-	;;
-      irix5* | irix6*)
-        case $cc_basename in
-          CC*)
-	    # SGI C++
-	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
-
-	    # Archives containing C++ object files must be created using
-	    # "CC -ar", where "CC" is the IRIX C++ compiler.  This is
-	    # necessary to make sure instantiated templates are included
-	    # in the archive.
-	    _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs'
-	    ;;
-          *)
-	    if test "$GXX" = yes; then
-	      if test "$with_gnu_ld" = no; then
-	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-	      else
-	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` -o $lib'
-	      fi
-	    fi
-	    _LT_TAGVAR(link_all_deplibs, $1)=yes
-	    ;;
-        esac
-        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-        _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-        _LT_TAGVAR(inherit_rpath, $1)=yes
-        ;;
-
-      linux* | k*bsd*-gnu | kopensolaris*-gnu)
-        case $cc_basename in
-          KCC*)
-	    # Kuck and Associates, Inc. (KAI) C++ Compiler
-
-	    # KCC will only create a shared library if the output file
-	    # ends with ".so" (or ".sl" for HP-UX), so rename the library
-	    # to its proper name (with version) after linking.
-	    _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
-	    _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib'
-	    # Commands to make compiler produce verbose output that lists
-	    # what "hidden" libraries, object files and flags are used when
-	    # linking a shared library.
-	    #
-	    # There doesn't appear to be a way to prevent this compiler from
-	    # explicitly linking system object files so we need to strip them
-	    # from the output so that they don't get included in the library
-	    # dependencies.
-	    output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed'
-
-	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
-
-	    # Archives containing C++ object files must be created using
-	    # "CC -Bstatic", where "CC" is the KAI C++ compiler.
-	    _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs'
-	    ;;
-	  icpc* | ecpc* )
-	    # Intel C++
-	    with_gnu_ld=yes
-	    # version 8.0 and above of icpc choke on multiply defined symbols
-	    # if we add $predep_objects and $postdep_objects, however 7.1 and
-	    # earlier do not add the objects themselves.
-	    case `$CC -V 2>&1` in
-	      *"Version 7."*)
-	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
-		_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-		;;
-	      *)  # Version 8.0 or newer
-	        tmp_idyn=
-	        case $host_cpu in
-		  ia64*) tmp_idyn=' -i_dynamic';;
-		esac
-	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-		_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-		;;
-	    esac
-	    _LT_TAGVAR(archive_cmds_need_lc, $1)=no
-	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
-	    _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
-	    ;;
-          pgCC* | pgcpp*)
-            # Portland Group C++ compiler
-	    case `$CC -V` in
-	    *pgCC\ [[1-5]]* | *pgcpp\ [[1-5]]*)
-	      _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~
-		rm -rf $tpldir~
-		$CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~
-		compile_command="$compile_command `find $tpldir -name \*.o | $NL2SP`"'
-	      _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~
-		rm -rf $tpldir~
-		$CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~
-		$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | $NL2SP`~
-		$RANLIB $oldlib'
-	      _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~
-		rm -rf $tpldir~
-		$CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
-		$CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
-	      _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~
-		rm -rf $tpldir~
-		$CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
-		$CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
-	      ;;
-	    *) # Version 6 will use weak symbols
-	      _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
-	      _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
-	      ;;
-	    esac
-
-	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
-	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
-	    _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
-            ;;
-	  cxx*)
-	    # Compaq C++
-	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname  -o $lib ${wl}-retain-symbols-file $wl$export_symbols'
-
-	    runpath_var=LD_RUN_PATH
-	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
-	    _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-
-	    # Commands to make compiler produce verbose output that lists
-	    # what "hidden" libraries, object files and flags are used when
-	    # linking a shared library.
-	    #
-	    # There doesn't appear to be a way to prevent this compiler from
-	    # explicitly linking system object files so we need to strip them
-	    # from the output so that they don't get included in the library
-	    # dependencies.
-	    output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed'
-	    ;;
-	  xl*)
-	    # IBM XL 8.0 on PPC, with GNU ld
-	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
-	    _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	    if test "x$supports_anon_versioning" = xyes; then
-	      _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
-		cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-		echo "local: *; };" >> $output_objdir/$libname.ver~
-		$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
-	    fi
-	    ;;
-	  *)
-	    case `$CC -V 2>&1 | sed 5q` in
-	    *Sun\ C*)
-	      # Sun C++ 5.9
-	      _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs'
-	      _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	      _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols'
-	      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-	      _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
-	      _LT_TAGVAR(compiler_needs_object, $1)=yes
-
-	      # Not sure whether something based on
-	      # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1
-	      # would be better.
-	      output_verbose_link_cmd='echo'
-
-	      # Archives containing C++ object files must be created using
-	      # "CC -xar", where "CC" is the Sun C++ compiler.  This is
-	      # necessary to make sure instantiated templates are included
-	      # in the archive.
-	      _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
-	      ;;
-	    esac
-	    ;;
-	esac
-	;;
-
-      lynxos*)
-        # FIXME: insert proper C++ library support
-	_LT_TAGVAR(ld_shlibs, $1)=no
-	;;
-
-      m88k*)
-        # FIXME: insert proper C++ library support
-        _LT_TAGVAR(ld_shlibs, $1)=no
-	;;
-
-      mvs*)
-        case $cc_basename in
-          cxx*)
-	    # FIXME: insert proper C++ library support
-	    _LT_TAGVAR(ld_shlibs, $1)=no
-	    ;;
-	  *)
-	    # FIXME: insert proper C++ library support
-	    _LT_TAGVAR(ld_shlibs, $1)=no
-	    ;;
-	esac
-	;;
-
-      netbsd*)
-        if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-	  _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable  -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags'
-	  wlarc=
-	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-	  _LT_TAGVAR(hardcode_direct, $1)=yes
-	  _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-	fi
-	# Workaround some broken pre-1.5 toolchains
-	output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"'
-	;;
-
-      *nto* | *qnx*)
-        _LT_TAGVAR(ld_shlibs, $1)=yes
-	;;
-
-      openbsd2*)
-        # C++ shared libraries are fairly broken
-	_LT_TAGVAR(ld_shlibs, $1)=no
-	;;
-
-      openbsd*)
-	if test -f /usr/libexec/ld.so; then
-	  _LT_TAGVAR(hardcode_direct, $1)=yes
-	  _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-	  _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
-	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
-	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-	  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib'
-	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
-	    _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
-	  fi
-	  output_verbose_link_cmd=echo
-	else
-	  _LT_TAGVAR(ld_shlibs, $1)=no
-	fi
-	;;
-
-      osf3* | osf4* | osf5*)
-        case $cc_basename in
-          KCC*)
-	    # Kuck and Associates, Inc. (KAI) C++ Compiler
-
-	    # KCC will only create a shared library if the output file
-	    # ends with ".so" (or ".sl" for HP-UX), so rename the library
-	    # to its proper name (with version) after linking.
-	    _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
-
-	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-	    _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-
-	    # Archives containing C++ object files must be created using
-	    # the KAI C++ compiler.
-	    case $host in
-	      osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;;
-	      *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;;
-	    esac
-	    ;;
-          RCC*)
-	    # Rational C++ 2.4.1
-	    # FIXME: insert proper C++ library support
-	    _LT_TAGVAR(ld_shlibs, $1)=no
-	    ;;
-          cxx*)
-	    case $host in
-	      osf3*)
-	        _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
-	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && $ECHO "X${wl}-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
-	        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-		;;
-	      *)
-	        _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
-	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
-	        _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
-	          echo "-hidden">> $lib.exp~
-	          $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp  `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~
-	          $RM $lib.exp'
-	        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
-		;;
-	    esac
-
-	    _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-
-	    # Commands to make compiler produce verbose output that lists
-	    # what "hidden" libraries, object files and flags are used when
-	    # linking a shared library.
-	    #
-	    # There doesn't appear to be a way to prevent this compiler from
-	    # explicitly linking system object files so we need to strip them
-	    # from the output so that they don't get included in the library
-	    # dependencies.
-	    output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed'
-	    ;;
-	  *)
-	    if test "$GXX" = yes && test "$with_gnu_ld" = no; then
-	      _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
-	      case $host in
-	        osf3*)
-	          _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-		  ;;
-	        *)
-	          _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-		  ;;
-	      esac
-
-	      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-	      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-
-	      # Commands to make compiler produce verbose output that lists
-	      # what "hidden" libraries, object files and flags are used when
-	      # linking a shared library.
-	      output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"'
-
-	    else
-	      # FIXME: insert proper C++ library support
-	      _LT_TAGVAR(ld_shlibs, $1)=no
-	    fi
-	    ;;
-        esac
-        ;;
-
-      psos*)
-        # FIXME: insert proper C++ library support
-        _LT_TAGVAR(ld_shlibs, $1)=no
-        ;;
-
-      sunos4*)
-        case $cc_basename in
-          CC*)
-	    # Sun C++ 4.x
-	    # FIXME: insert proper C++ library support
-	    _LT_TAGVAR(ld_shlibs, $1)=no
-	    ;;
-          lcc*)
-	    # Lucid
-	    # FIXME: insert proper C++ library support
-	    _LT_TAGVAR(ld_shlibs, $1)=no
-	    ;;
-          *)
-	    # FIXME: insert proper C++ library support
-	    _LT_TAGVAR(ld_shlibs, $1)=no
-	    ;;
-        esac
-        ;;
-
-      solaris*)
-        case $cc_basename in
-          CC*)
-	    # Sun C++ 4.2, 5.x and Centerline C++
-            _LT_TAGVAR(archive_cmds_need_lc,$1)=yes
-	    _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs'
-	    _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag}  -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	    _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-	      $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
-
-	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-	    _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-	    case $host_os in
-	      solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
-	      *)
-		# The compiler driver will combine and reorder linker options,
-		# but understands `-z linker_flag'.
-	        # Supported since Solaris 2.6 (maybe 2.5.1?)
-		_LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract'
-	        ;;
-	    esac
-	    _LT_TAGVAR(link_all_deplibs, $1)=yes
-
-	    output_verbose_link_cmd='echo'
-
-	    # Archives containing C++ object files must be created using
-	    # "CC -xar", where "CC" is the Sun C++ compiler.  This is
-	    # necessary to make sure instantiated templates are included
-	    # in the archive.
-	    _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
-	    ;;
-          gcx*)
-	    # Green Hills C++ Compiler
-	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
-
-	    # The C++ compiler must be used to create the archive.
-	    _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs'
-	    ;;
-          *)
-	    # GNU C++ compiler with Solaris linker
-	    if test "$GXX" = yes && test "$with_gnu_ld" = no; then
-	      _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs'
-	      if $CC --version | $GREP -v '^2\.7' > /dev/null; then
-	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
-	        _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-		  $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
-
-	        # Commands to make compiler produce verbose output that lists
-	        # what "hidden" libraries, object files and flags are used when
-	        # linking a shared library.
-	        output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"'
-	      else
-	        # g++ 2.7 appears to require `-G' NOT `-shared' on this
-	        # platform.
-	        _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
-	        _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-		  $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
-
-	        # Commands to make compiler produce verbose output that lists
-	        # what "hidden" libraries, object files and flags are used when
-	        # linking a shared library.
-	        output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"'
-	      fi
-
-	      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir'
-	      case $host_os in
-		solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
-		*)
-		  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
-		  ;;
-	      esac
-	    fi
-	    ;;
-        esac
-        ;;
-
-    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*)
-      _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
-      _LT_TAGVAR(archive_cmds_need_lc, $1)=no
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      runpath_var='LD_RUN_PATH'
-
-      case $cc_basename in
-        CC*)
-	  _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	*)
-	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-      esac
-      ;;
-
-      sysv5* | sco3.2v5* | sco5v6*)
-	# Note: We can NOT use -z defs as we might desire, because we do not
-	# link with -lc, and that would cause any symbols used from libc to
-	# always be unresolved, which means just about no library would
-	# ever link correctly.  If we're not using GNU ld we use -z text
-	# though, which does catch some bad symbols but isn't as heavy-handed
-	# as -z defs.
-	_LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
-	_LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs'
-	_LT_TAGVAR(archive_cmds_need_lc, $1)=no
-	_LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir'
-	_LT_TAGVAR(hardcode_libdir_separator, $1)=':'
-	_LT_TAGVAR(link_all_deplibs, $1)=yes
-	_LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
-	runpath_var='LD_RUN_PATH'
-
-	case $cc_basename in
-          CC*)
-	    _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	    ;;
-	  *)
-	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	    ;;
-	esac
-      ;;
-
-      tandem*)
-        case $cc_basename in
-          NCC*)
-	    # NonStop-UX NCC 3.20
-	    # FIXME: insert proper C++ library support
-	    _LT_TAGVAR(ld_shlibs, $1)=no
-	    ;;
-          *)
-	    # FIXME: insert proper C++ library support
-	    _LT_TAGVAR(ld_shlibs, $1)=no
-	    ;;
-        esac
-        ;;
-
-      vxworks*)
-        # FIXME: insert proper C++ library support
-        _LT_TAGVAR(ld_shlibs, $1)=no
-        ;;
-
-      *)
-        # FIXME: insert proper C++ library support
-        _LT_TAGVAR(ld_shlibs, $1)=no
-        ;;
-    esac
-
-    AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)])
-    test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
-
-    _LT_TAGVAR(GCC, $1)="$GXX"
-    _LT_TAGVAR(LD, $1)="$LD"
-
-    ## CAVEAT EMPTOR:
-    ## There is no encapsulation within the following macros, do not change
-    ## the running order or otherwise move them around unless you know exactly
-    ## what you are doing...
-    _LT_SYS_HIDDEN_LIBDEPS($1)
-    _LT_COMPILER_PIC($1)
-    _LT_COMPILER_C_O($1)
-    _LT_COMPILER_FILE_LOCKS($1)
-    _LT_LINKER_SHLIBS($1)
-    _LT_SYS_DYNAMIC_LINKER($1)
-    _LT_LINKER_HARDCODE_LIBPATH($1)
-
-    _LT_CONFIG($1)
-  fi # test -n "$compiler"
-
-  CC=$lt_save_CC
-  LDCXX=$LD
-  LD=$lt_save_LD
-  GCC=$lt_save_GCC
-  with_gnu_ld=$lt_save_with_gnu_ld
-  lt_cv_path_LDCXX=$lt_cv_path_LD
-  lt_cv_path_LD=$lt_save_path_LD
-  lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld
-  lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld
-fi # test "$_lt_caught_CXX_error" != yes
-
-AC_LANG_POP
-])# _LT_LANG_CXX_CONFIG
-
-
-# _LT_SYS_HIDDEN_LIBDEPS([TAGNAME])
-# ---------------------------------
-# Figure out "hidden" library dependencies from verbose
-# compiler output when linking a shared library.
-# Parse the compiler output and extract the necessary
-# objects, libraries and library flags.
-m4_defun([_LT_SYS_HIDDEN_LIBDEPS],
-[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-# Dependencies to place before and after the object being linked:
-_LT_TAGVAR(predep_objects, $1)=
-_LT_TAGVAR(postdep_objects, $1)=
-_LT_TAGVAR(predeps, $1)=
-_LT_TAGVAR(postdeps, $1)=
-_LT_TAGVAR(compiler_lib_search_path, $1)=
-
-dnl we can't use the lt_simple_compile_test_code here,
-dnl because it contains code intended for an executable,
-dnl not a library.  It's possible we should let each
-dnl tag define a new lt_????_link_test_code variable,
-dnl but it's only used here...
-m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF
-int a;
-void foo (void) { a = 0; }
-_LT_EOF
-], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF
-class Foo
-{
-public:
-  Foo (void) { a = 0; }
-private:
-  int a;
-};
-_LT_EOF
-], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF
-      subroutine foo
-      implicit none
-      integer*4 a
-      a=0
-      return
-      end
-_LT_EOF
-], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF
-      subroutine foo
-      implicit none
-      integer a
-      a=0
-      return
-      end
-_LT_EOF
-], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF
-public class foo {
-  private int a;
-  public void bar (void) {
-    a = 0;
-  }
-};
-_LT_EOF
-])
-dnl Parse the compiler output and extract the necessary
-dnl objects, libraries and library flags.
-if AC_TRY_EVAL(ac_compile); then
-  # Parse the compiler output and extract the necessary
-  # objects, libraries and library flags.
-
-  # Sentinel used to keep track of whether or not we are before
-  # the conftest object file.
-  pre_test_object_deps_done=no
-
-  for p in `eval "$output_verbose_link_cmd"`; do
-    case $p in
-
-    -L* | -R* | -l*)
-       # Some compilers place space between "-{L,R}" and the path.
-       # Remove the space.
-       if test $p = "-L" ||
-          test $p = "-R"; then
-	 prev=$p
-	 continue
-       else
-	 prev=
-       fi
-
-       if test "$pre_test_object_deps_done" = no; then
-	 case $p in
-	 -L* | -R*)
-	   # Internal compiler library paths should come after those
-	   # provided the user.  The postdeps already come after the
-	   # user supplied libs so there is no need to process them.
-	   if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then
-	     _LT_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}"
-	   else
-	     _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}"
-	   fi
-	   ;;
-	 # The "-l" case would never come before the object being
-	 # linked, so don't bother handling this case.
-	 esac
-       else
-	 if test -z "$_LT_TAGVAR(postdeps, $1)"; then
-	   _LT_TAGVAR(postdeps, $1)="${prev}${p}"
-	 else
-	   _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}"
-	 fi
-       fi
-       ;;
-
-    *.$objext)
-       # This assumes that the test object file only shows up
-       # once in the compiler output.
-       if test "$p" = "conftest.$objext"; then
-	 pre_test_object_deps_done=yes
-	 continue
-       fi
-
-       if test "$pre_test_object_deps_done" = no; then
-	 if test -z "$_LT_TAGVAR(predep_objects, $1)"; then
-	   _LT_TAGVAR(predep_objects, $1)="$p"
-	 else
-	   _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p"
-	 fi
-       else
-	 if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then
-	   _LT_TAGVAR(postdep_objects, $1)="$p"
-	 else
-	   _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p"
-	 fi
-       fi
-       ;;
-
-    *) ;; # Ignore the rest.
-
-    esac
-  done
-
-  # Clean up.
-  rm -f a.out a.exe
-else
-  echo "libtool.m4: error: problem compiling $1 test program"
-fi
-
-$RM -f confest.$objext
-
-# PORTME: override above test on systems where it is broken
-m4_if([$1], [CXX],
-[case $host_os in
-interix[[3-9]]*)
-  # Interix 3.5 installs completely hosed .la files for C++, so rather than
-  # hack all around it, let's just trust "g++" to DTRT.
-  _LT_TAGVAR(predep_objects,$1)=
-  _LT_TAGVAR(postdep_objects,$1)=
-  _LT_TAGVAR(postdeps,$1)=
-  ;;
-
-linux*)
-  case `$CC -V 2>&1 | sed 5q` in
-  *Sun\ C*)
-    # Sun C++ 5.9
-
-    # The more standards-conforming stlport4 library is
-    # incompatible with the Cstd library. Avoid specifying
-    # it if it's in CXXFLAGS. Ignore libCrun as
-    # -library=stlport4 depends on it.
-    case " $CXX $CXXFLAGS " in
-    *" -library=stlport4 "*)
-      solaris_use_stlport4=yes
-      ;;
-    esac
-
-    if test "$solaris_use_stlport4" != yes; then
-      _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun'
-    fi
-    ;;
-  esac
-  ;;
-
-solaris*)
-  case $cc_basename in
-  CC*)
-    # The more standards-conforming stlport4 library is
-    # incompatible with the Cstd library. Avoid specifying
-    # it if it's in CXXFLAGS. Ignore libCrun as
-    # -library=stlport4 depends on it.
-    case " $CXX $CXXFLAGS " in
-    *" -library=stlport4 "*)
-      solaris_use_stlport4=yes
-      ;;
-    esac
-
-    # Adding this requires a known-good setup of shared libraries for
-    # Sun compiler versions before 5.6, else PIC objects from an old
-    # archive will be linked into the output, leading to subtle bugs.
-    if test "$solaris_use_stlport4" != yes; then
-      _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun'
-    fi
-    ;;
-  esac
-  ;;
-esac
-])
-
-case " $_LT_TAGVAR(postdeps, $1) " in
-*" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;;
-esac
- _LT_TAGVAR(compiler_lib_search_dirs, $1)=
-if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then
- _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'`
-fi
-_LT_TAGDECL([], [compiler_lib_search_dirs], [1],
-    [The directories searched by this compiler when creating a shared library])
-_LT_TAGDECL([], [predep_objects], [1],
-    [Dependencies to place before and after the objects being linked to
-    create a shared library])
-_LT_TAGDECL([], [postdep_objects], [1])
-_LT_TAGDECL([], [predeps], [1])
-_LT_TAGDECL([], [postdeps], [1])
-_LT_TAGDECL([], [compiler_lib_search_path], [1],
-    [The library search path used internally by the compiler when linking
-    a shared library])
-])# _LT_SYS_HIDDEN_LIBDEPS
-
-
-# _LT_PROG_F77
-# ------------
-# Since AC_PROG_F77 is broken, in that it returns the empty string
-# if there is no fortran compiler, we have our own version here.
-m4_defun([_LT_PROG_F77],
-[
-pushdef([AC_MSG_ERROR], [_lt_disable_F77=yes])
-AC_PROG_F77
-if test -z "$F77" || test "X$F77" = "Xno"; then
-  _lt_disable_F77=yes
-fi
-popdef([AC_MSG_ERROR])
-])# _LT_PROG_F77
-
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([_LT_PROG_F77], [])
-
-
-# _LT_LANG_F77_CONFIG([TAG])
-# --------------------------
-# Ensure that the configuration variables for a Fortran 77 compiler are
-# suitably defined.  These variables are subsequently used by _LT_CONFIG
-# to write the compiler configuration to `libtool'.
-m4_defun([_LT_LANG_F77_CONFIG],
-[AC_REQUIRE([_LT_PROG_F77])dnl
-AC_LANG_PUSH(Fortran 77)
-
-_LT_TAGVAR(archive_cmds_need_lc, $1)=no
-_LT_TAGVAR(allow_undefined_flag, $1)=
-_LT_TAGVAR(always_export_symbols, $1)=no
-_LT_TAGVAR(archive_expsym_cmds, $1)=
-_LT_TAGVAR(export_dynamic_flag_spec, $1)=
-_LT_TAGVAR(hardcode_direct, $1)=no
-_LT_TAGVAR(hardcode_direct_absolute, $1)=no
-_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
-_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
-_LT_TAGVAR(hardcode_libdir_separator, $1)=
-_LT_TAGVAR(hardcode_minus_L, $1)=no
-_LT_TAGVAR(hardcode_automatic, $1)=no
-_LT_TAGVAR(inherit_rpath, $1)=no
-_LT_TAGVAR(module_cmds, $1)=
-_LT_TAGVAR(module_expsym_cmds, $1)=
-_LT_TAGVAR(link_all_deplibs, $1)=unknown
-_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
-_LT_TAGVAR(no_undefined_flag, $1)=
-_LT_TAGVAR(whole_archive_flag_spec, $1)=
-_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
-
-# Source file extension for f77 test sources.
-ac_ext=f
-
-# Object file extension for compiled f77 test sources.
-objext=o
-_LT_TAGVAR(objext, $1)=$objext
-
-# No sense in running all these tests if we already determined that
-# the F77 compiler isn't working.  Some variables (like enable_shared)
-# are currently assumed to apply to all compilers on this platform,
-# and will be corrupted by setting them based on a non-working compiler.
-if test "$_lt_disable_F77" != yes; then
-  # Code to be used in simple compile tests
-  lt_simple_compile_test_code="\
-      subroutine t
-      return
-      end
-"
-
-  # Code to be used in simple link tests
-  lt_simple_link_test_code="\
-      program t
-      end
-"
-
-  # ltmain only uses $CC for tagged configurations so make sure $CC is set.
-  _LT_TAG_COMPILER
-
-  # save warnings/boilerplate of simple test code
-  _LT_COMPILER_BOILERPLATE
-  _LT_LINKER_BOILERPLATE
-
-  # Allow CC to be a program name with arguments.
-  lt_save_CC="$CC"
-  lt_save_GCC=$GCC
-  CC=${F77-"f77"}
-  compiler=$CC
-  _LT_TAGVAR(compiler, $1)=$CC
-  _LT_CC_BASENAME([$compiler])
-  GCC=$G77
-  if test -n "$compiler"; then
-    AC_MSG_CHECKING([if libtool supports shared libraries])
-    AC_MSG_RESULT([$can_build_shared])
-
-    AC_MSG_CHECKING([whether to build shared libraries])
-    test "$can_build_shared" = "no" && enable_shared=no
-
-    # On AIX, shared libraries and static libraries use the same namespace, and
-    # are all built from PIC.
-    case $host_os in
-      aix3*)
-        test "$enable_shared" = yes && enable_static=no
-        if test -n "$RANLIB"; then
-          archive_cmds="$archive_cmds~\$RANLIB \$lib"
-          postinstall_cmds='$RANLIB $lib'
-        fi
-        ;;
-      aix[[4-9]]*)
-	if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
-	  test "$enable_shared" = yes && enable_static=no
-	fi
-        ;;
-    esac
-    AC_MSG_RESULT([$enable_shared])
-
-    AC_MSG_CHECKING([whether to build static libraries])
-    # Make sure either enable_shared or enable_static is yes.
-    test "$enable_shared" = yes || enable_static=yes
-    AC_MSG_RESULT([$enable_static])
-
-    _LT_TAGVAR(GCC, $1)="$G77"
-    _LT_TAGVAR(LD, $1)="$LD"
-
-    ## CAVEAT EMPTOR:
-    ## There is no encapsulation within the following macros, do not change
-    ## the running order or otherwise move them around unless you know exactly
-    ## what you are doing...
-    _LT_COMPILER_PIC($1)
-    _LT_COMPILER_C_O($1)
-    _LT_COMPILER_FILE_LOCKS($1)
-    _LT_LINKER_SHLIBS($1)
-    _LT_SYS_DYNAMIC_LINKER($1)
-    _LT_LINKER_HARDCODE_LIBPATH($1)
-
-    _LT_CONFIG($1)
-  fi # test -n "$compiler"
-
-  GCC=$lt_save_GCC
-  CC="$lt_save_CC"
-fi # test "$_lt_disable_F77" != yes
-
-AC_LANG_POP
-])# _LT_LANG_F77_CONFIG
-
-
-# _LT_PROG_FC
-# -----------
-# Since AC_PROG_FC is broken, in that it returns the empty string
-# if there is no fortran compiler, we have our own version here.
-m4_defun([_LT_PROG_FC],
-[
-pushdef([AC_MSG_ERROR], [_lt_disable_FC=yes])
-AC_PROG_FC
-if test -z "$FC" || test "X$FC" = "Xno"; then
-  _lt_disable_FC=yes
-fi
-popdef([AC_MSG_ERROR])
-])# _LT_PROG_FC
-
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([_LT_PROG_FC], [])
-
-
-# _LT_LANG_FC_CONFIG([TAG])
-# -------------------------
-# Ensure that the configuration variables for a Fortran compiler are
-# suitably defined.  These variables are subsequently used by _LT_CONFIG
-# to write the compiler configuration to `libtool'.
-m4_defun([_LT_LANG_FC_CONFIG],
-[AC_REQUIRE([_LT_PROG_FC])dnl
-AC_LANG_PUSH(Fortran)
-
-_LT_TAGVAR(archive_cmds_need_lc, $1)=no
-_LT_TAGVAR(allow_undefined_flag, $1)=
-_LT_TAGVAR(always_export_symbols, $1)=no
-_LT_TAGVAR(archive_expsym_cmds, $1)=
-_LT_TAGVAR(export_dynamic_flag_spec, $1)=
-_LT_TAGVAR(hardcode_direct, $1)=no
-_LT_TAGVAR(hardcode_direct_absolute, $1)=no
-_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
-_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
-_LT_TAGVAR(hardcode_libdir_separator, $1)=
-_LT_TAGVAR(hardcode_minus_L, $1)=no
-_LT_TAGVAR(hardcode_automatic, $1)=no
-_LT_TAGVAR(inherit_rpath, $1)=no
-_LT_TAGVAR(module_cmds, $1)=
-_LT_TAGVAR(module_expsym_cmds, $1)=
-_LT_TAGVAR(link_all_deplibs, $1)=unknown
-_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
-_LT_TAGVAR(no_undefined_flag, $1)=
-_LT_TAGVAR(whole_archive_flag_spec, $1)=
-_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
-
-# Source file extension for fc test sources.
-ac_ext=${ac_fc_srcext-f}
-
-# Object file extension for compiled fc test sources.
-objext=o
-_LT_TAGVAR(objext, $1)=$objext
-
-# No sense in running all these tests if we already determined that
-# the FC compiler isn't working.  Some variables (like enable_shared)
-# are currently assumed to apply to all compilers on this platform,
-# and will be corrupted by setting them based on a non-working compiler.
-if test "$_lt_disable_FC" != yes; then
-  # Code to be used in simple compile tests
-  lt_simple_compile_test_code="\
-      subroutine t
-      return
-      end
-"
-
-  # Code to be used in simple link tests
-  lt_simple_link_test_code="\
-      program t
-      end
-"
-
-  # ltmain only uses $CC for tagged configurations so make sure $CC is set.
-  _LT_TAG_COMPILER
-
-  # save warnings/boilerplate of simple test code
-  _LT_COMPILER_BOILERPLATE
-  _LT_LINKER_BOILERPLATE
-
-  # Allow CC to be a program name with arguments.
-  lt_save_CC="$CC"
-  lt_save_GCC=$GCC
-  CC=${FC-"f95"}
-  compiler=$CC
-  GCC=$ac_cv_fc_compiler_gnu
-
-  _LT_TAGVAR(compiler, $1)=$CC
-  _LT_CC_BASENAME([$compiler])
-
-  if test -n "$compiler"; then
-    AC_MSG_CHECKING([if libtool supports shared libraries])
-    AC_MSG_RESULT([$can_build_shared])
-
-    AC_MSG_CHECKING([whether to build shared libraries])
-    test "$can_build_shared" = "no" && enable_shared=no
-
-    # On AIX, shared libraries and static libraries use the same namespace, and
-    # are all built from PIC.
-    case $host_os in
-      aix3*)
-        test "$enable_shared" = yes && enable_static=no
-        if test -n "$RANLIB"; then
-          archive_cmds="$archive_cmds~\$RANLIB \$lib"
-          postinstall_cmds='$RANLIB $lib'
-        fi
-        ;;
-      aix[[4-9]]*)
-	if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
-	  test "$enable_shared" = yes && enable_static=no
-	fi
-        ;;
-    esac
-    AC_MSG_RESULT([$enable_shared])
-
-    AC_MSG_CHECKING([whether to build static libraries])
-    # Make sure either enable_shared or enable_static is yes.
-    test "$enable_shared" = yes || enable_static=yes
-    AC_MSG_RESULT([$enable_static])
-
-    _LT_TAGVAR(GCC, $1)="$ac_cv_fc_compiler_gnu"
-    _LT_TAGVAR(LD, $1)="$LD"
-
-    ## CAVEAT EMPTOR:
-    ## There is no encapsulation within the following macros, do not change
-    ## the running order or otherwise move them around unless you know exactly
-    ## what you are doing...
-    _LT_SYS_HIDDEN_LIBDEPS($1)
-    _LT_COMPILER_PIC($1)
-    _LT_COMPILER_C_O($1)
-    _LT_COMPILER_FILE_LOCKS($1)
-    _LT_LINKER_SHLIBS($1)
-    _LT_SYS_DYNAMIC_LINKER($1)
-    _LT_LINKER_HARDCODE_LIBPATH($1)
-
-    _LT_CONFIG($1)
-  fi # test -n "$compiler"
-
-  GCC=$lt_save_GCC
-  CC="$lt_save_CC"
-fi # test "$_lt_disable_FC" != yes
-
-AC_LANG_POP
-])# _LT_LANG_FC_CONFIG
-
-
-# _LT_LANG_GCJ_CONFIG([TAG])
-# --------------------------
-# Ensure that the configuration variables for the GNU Java Compiler compiler
-# are suitably defined.  These variables are subsequently used by _LT_CONFIG
-# to write the compiler configuration to `libtool'.
-m4_defun([_LT_LANG_GCJ_CONFIG],
-[AC_REQUIRE([LT_PROG_GCJ])dnl
-AC_LANG_SAVE
-
-# Source file extension for Java test sources.
-ac_ext=java
-
-# Object file extension for compiled Java test sources.
-objext=o
-_LT_TAGVAR(objext, $1)=$objext
-
-# Code to be used in simple compile tests
-lt_simple_compile_test_code="class foo {}"
-
-# Code to be used in simple link tests
-lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }'
-
-# ltmain only uses $CC for tagged configurations so make sure $CC is set.
-_LT_TAG_COMPILER
-
-# save warnings/boilerplate of simple test code
-_LT_COMPILER_BOILERPLATE
-_LT_LINKER_BOILERPLATE
-
-# Allow CC to be a program name with arguments.
-lt_save_CC="$CC"
-lt_save_GCC=$GCC
-GCC=yes
-CC=${GCJ-"gcj"}
-compiler=$CC
-_LT_TAGVAR(compiler, $1)=$CC
-_LT_TAGVAR(LD, $1)="$LD"
-_LT_CC_BASENAME([$compiler])
-
-# GCJ did not exist at the time GCC didn't implicitly link libc in.
-_LT_TAGVAR(archive_cmds_need_lc, $1)=no
-
-_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
-
-## CAVEAT EMPTOR:
-## There is no encapsulation within the following macros, do not change
-## the running order or otherwise move them around unless you know exactly
-## what you are doing...
-if test -n "$compiler"; then
-  _LT_COMPILER_NO_RTTI($1)
-  _LT_COMPILER_PIC($1)
-  _LT_COMPILER_C_O($1)
-  _LT_COMPILER_FILE_LOCKS($1)
-  _LT_LINKER_SHLIBS($1)
-  _LT_LINKER_HARDCODE_LIBPATH($1)
-
-  _LT_CONFIG($1)
-fi
-
-AC_LANG_RESTORE
-
-GCC=$lt_save_GCC
-CC="$lt_save_CC"
-])# _LT_LANG_GCJ_CONFIG
-
-
-# _LT_LANG_RC_CONFIG([TAG])
-# -------------------------
-# Ensure that the configuration variables for the Windows resource compiler
-# are suitably defined.  These variables are subsequently used by _LT_CONFIG
-# to write the compiler configuration to `libtool'.
-m4_defun([_LT_LANG_RC_CONFIG],
-[AC_REQUIRE([LT_PROG_RC])dnl
-AC_LANG_SAVE
-
-# Source file extension for RC test sources.
-ac_ext=rc
-
-# Object file extension for compiled RC test sources.
-objext=o
-_LT_TAGVAR(objext, $1)=$objext
-
-# Code to be used in simple compile tests
-lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }'
-
-# Code to be used in simple link tests
-lt_simple_link_test_code="$lt_simple_compile_test_code"
-
-# ltmain only uses $CC for tagged configurations so make sure $CC is set.
-_LT_TAG_COMPILER
-
-# save warnings/boilerplate of simple test code
-_LT_COMPILER_BOILERPLATE
-_LT_LINKER_BOILERPLATE
-
-# Allow CC to be a program name with arguments.
-lt_save_CC="$CC"
-lt_save_GCC=$GCC
-GCC=
-CC=${RC-"windres"}
-compiler=$CC
-_LT_TAGVAR(compiler, $1)=$CC
-_LT_CC_BASENAME([$compiler])
-_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
-
-if test -n "$compiler"; then
-  :
-  _LT_CONFIG($1)
-fi
-
-GCC=$lt_save_GCC
-AC_LANG_RESTORE
-CC="$lt_save_CC"
-])# _LT_LANG_RC_CONFIG
-
-
-# LT_PROG_GCJ
-# -----------
-AC_DEFUN([LT_PROG_GCJ],
-[m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ],
-  [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ],
-    [AC_CHECK_TOOL(GCJ, gcj,)
-      test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2"
-      AC_SUBST(GCJFLAGS)])])[]dnl
-])
-
-# Old name:
-AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([LT_AC_PROG_GCJ], [])
-
-
-# LT_PROG_RC
-# ----------
-AC_DEFUN([LT_PROG_RC],
-[AC_CHECK_TOOL(RC, windres,)
-])
-
-# Old name:
-AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([LT_AC_PROG_RC], [])
-
-
-# _LT_DECL_EGREP
-# --------------
-# If we don't have a new enough Autoconf to choose the best grep
-# available, choose the one first in the user's PATH.
-m4_defun([_LT_DECL_EGREP],
-[AC_REQUIRE([AC_PROG_EGREP])dnl
-AC_REQUIRE([AC_PROG_FGREP])dnl
-test -z "$GREP" && GREP=grep
-_LT_DECL([], [GREP], [1], [A grep program that handles long lines])
-_LT_DECL([], [EGREP], [1], [An ERE matcher])
-_LT_DECL([], [FGREP], [1], [A literal string matcher])
-dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too
-AC_SUBST([GREP])
-])
-
-
-# _LT_DECL_OBJDUMP
-# --------------
-# If we don't have a new enough Autoconf to choose the best objdump
-# available, choose the one first in the user's PATH.
-m4_defun([_LT_DECL_OBJDUMP],
-[AC_CHECK_TOOL(OBJDUMP, objdump, false)
-test -z "$OBJDUMP" && OBJDUMP=objdump
-_LT_DECL([], [OBJDUMP], [1], [An object symbol dumper])
-AC_SUBST([OBJDUMP])
-])
-
-
-# _LT_DECL_SED
-# ------------
-# Check for a fully-functional sed program, that truncates
-# as few characters as possible.  Prefer GNU sed if found.
-m4_defun([_LT_DECL_SED],
-[AC_PROG_SED
-test -z "$SED" && SED=sed
-Xsed="$SED -e 1s/^X//"
-_LT_DECL([], [SED], [1], [A sed program that does not truncate output])
-_LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"],
-    [Sed that helps us avoid accidentally triggering echo(1) options like -n])
-])# _LT_DECL_SED
-
-m4_ifndef([AC_PROG_SED], [
-############################################################
-# NOTE: This macro has been submitted for inclusion into   #
-#  GNU Autoconf as AC_PROG_SED.  When it is available in   #
-#  a released version of Autoconf we should remove this    #
-#  macro and use it instead.                               #
-############################################################
-
-m4_defun([AC_PROG_SED],
-[AC_MSG_CHECKING([for a sed that does not truncate output])
-AC_CACHE_VAL(lt_cv_path_SED,
-[# Loop through the user's path and test for sed and gsed.
-# Then use that list of sed's as ones to test for truncation.
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for lt_ac_prog in sed gsed; do
-    for ac_exec_ext in '' $ac_executable_extensions; do
-      if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then
-        lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext"
-      fi
-    done
-  done
-done
-IFS=$as_save_IFS
-lt_ac_max=0
-lt_ac_count=0
-# Add /usr/xpg4/bin/sed as it is typically found on Solaris
-# along with /bin/sed that truncates output.
-for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do
-  test ! -f $lt_ac_sed && continue
-  cat /dev/null > conftest.in
-  lt_ac_count=0
-  echo $ECHO_N "0123456789$ECHO_C" >conftest.in
-  # Check for GNU sed and select it if it is found.
-  if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then
-    lt_cv_path_SED=$lt_ac_sed
-    break
-  fi
-  while true; do
-    cat conftest.in conftest.in >conftest.tmp
-    mv conftest.tmp conftest.in
-    cp conftest.in conftest.nl
-    echo >>conftest.nl
-    $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break
-    cmp -s conftest.out conftest.nl || break
-    # 10000 chars as input seems more than enough
-    test $lt_ac_count -gt 10 && break
-    lt_ac_count=`expr $lt_ac_count + 1`
-    if test $lt_ac_count -gt $lt_ac_max; then
-      lt_ac_max=$lt_ac_count
-      lt_cv_path_SED=$lt_ac_sed
-    fi
-  done
-done
-])
-SED=$lt_cv_path_SED
-AC_SUBST([SED])
-AC_MSG_RESULT([$SED])
-])#AC_PROG_SED
-])#m4_ifndef
-
-# Old name:
-AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([LT_AC_PROG_SED], [])
-
-
-# _LT_CHECK_SHELL_FEATURES
-# ------------------------
-# Find out whether the shell is Bourne or XSI compatible,
-# or has some other useful features.
-m4_defun([_LT_CHECK_SHELL_FEATURES],
-[AC_MSG_CHECKING([whether the shell understands some XSI constructs])
-# Try some XSI features
-xsi_shell=no
-( _lt_dummy="a/b/c"
-  test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \
-      = c,a/b,, \
-    && eval 'test $(( 1 + 1 )) -eq 2 \
-    && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
-  && xsi_shell=yes
-AC_MSG_RESULT([$xsi_shell])
-_LT_CONFIG_LIBTOOL_INIT([xsi_shell='$xsi_shell'])
-
-AC_MSG_CHECKING([whether the shell understands "+="])
-lt_shell_append=no
-( foo=bar; set foo baz; eval "$[1]+=\$[2]" && test "$foo" = barbaz ) \
-    >/dev/null 2>&1 \
-  && lt_shell_append=yes
-AC_MSG_RESULT([$lt_shell_append])
-_LT_CONFIG_LIBTOOL_INIT([lt_shell_append='$lt_shell_append'])
-
-if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
-  lt_unset=unset
-else
-  lt_unset=false
-fi
-_LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl
-
-# test EBCDIC or ASCII
-case `echo X|tr X '\101'` in
- A) # ASCII based system
-    # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr
-  lt_SP2NL='tr \040 \012'
-  lt_NL2SP='tr \015\012 \040\040'
-  ;;
- *) # EBCDIC based system
-  lt_SP2NL='tr \100 \n'
-  lt_NL2SP='tr \r\n \100\100'
-  ;;
-esac
-_LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl
-_LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl
-])# _LT_CHECK_SHELL_FEATURES
-
-
-# _LT_PROG_XSI_SHELLFNS
-# ---------------------
-# Bourne and XSI compatible variants of some useful shell functions.
-m4_defun([_LT_PROG_XSI_SHELLFNS],
-[case $xsi_shell in
-  yes)
-    cat << \_LT_EOF >> "$cfgfile"
-
-# func_dirname file append nondir_replacement
-# Compute the dirname of FILE.  If nonempty, add APPEND to the result,
-# otherwise set result to NONDIR_REPLACEMENT.
-func_dirname ()
-{
-  case ${1} in
-    */*) func_dirname_result="${1%/*}${2}" ;;
-    *  ) func_dirname_result="${3}" ;;
-  esac
-}
-
-# func_basename file
-func_basename ()
-{
-  func_basename_result="${1##*/}"
-}
-
-# func_dirname_and_basename file append nondir_replacement
-# perform func_basename and func_dirname in a single function
-# call:
-#   dirname:  Compute the dirname of FILE.  If nonempty,
-#             add APPEND to the result, otherwise set result
-#             to NONDIR_REPLACEMENT.
-#             value returned in "$func_dirname_result"
-#   basename: Compute filename of FILE.
-#             value retuned in "$func_basename_result"
-# Implementation must be kept synchronized with func_dirname
-# and func_basename. For efficiency, we do not delegate to
-# those functions but instead duplicate the functionality here.
-func_dirname_and_basename ()
-{
-  case ${1} in
-    */*) func_dirname_result="${1%/*}${2}" ;;
-    *  ) func_dirname_result="${3}" ;;
-  esac
-  func_basename_result="${1##*/}"
-}
-
-# func_stripname prefix suffix name
-# strip PREFIX and SUFFIX off of NAME.
-# PREFIX and SUFFIX must not contain globbing or regex special
-# characters, hashes, percent signs, but SUFFIX may contain a leading
-# dot (in which case that matches only a dot).
-func_stripname ()
-{
-  # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
-  # positional parameters, so assign one to ordinary parameter first.
-  func_stripname_result=${3}
-  func_stripname_result=${func_stripname_result#"${1}"}
-  func_stripname_result=${func_stripname_result%"${2}"}
-}
-
-# func_opt_split
-func_opt_split ()
-{
-  func_opt_split_opt=${1%%=*}
-  func_opt_split_arg=${1#*=}
-}
-
-# func_lo2o object
-func_lo2o ()
-{
-  case ${1} in
-    *.lo) func_lo2o_result=${1%.lo}.${objext} ;;
-    *)    func_lo2o_result=${1} ;;
-  esac
-}
-
-# func_xform libobj-or-source
-func_xform ()
-{
-  func_xform_result=${1%.*}.lo
-}
-
-# func_arith arithmetic-term...
-func_arith ()
-{
-  func_arith_result=$(( $[*] ))
-}
-
-# func_len string
-# STRING may not start with a hyphen.
-func_len ()
-{
-  func_len_result=${#1}
-}
-
-_LT_EOF
-    ;;
-  *) # Bourne compatible functions.
-    cat << \_LT_EOF >> "$cfgfile"
-
-# func_dirname file append nondir_replacement
-# Compute the dirname of FILE.  If nonempty, add APPEND to the result,
-# otherwise set result to NONDIR_REPLACEMENT.
-func_dirname ()
-{
-  # Extract subdirectory from the argument.
-  func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"`
-  if test "X$func_dirname_result" = "X${1}"; then
-    func_dirname_result="${3}"
-  else
-    func_dirname_result="$func_dirname_result${2}"
-  fi
-}
-
-# func_basename file
-func_basename ()
-{
-  func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"`
-}
-
-dnl func_dirname_and_basename
-dnl A portable version of this function is already defined in general.m4sh
-dnl so there is no need for it here.
-
-# func_stripname prefix suffix name
-# strip PREFIX and SUFFIX off of NAME.
-# PREFIX and SUFFIX must not contain globbing or regex special
-# characters, hashes, percent signs, but SUFFIX may contain a leading
-# dot (in which case that matches only a dot).
-# func_strip_suffix prefix name
-func_stripname ()
-{
-  case ${2} in
-    .*) func_stripname_result=`$ECHO "X${3}" \
-           | $Xsed -e "s%^${1}%%" -e "s%\\\\${2}\$%%"`;;
-    *)  func_stripname_result=`$ECHO "X${3}" \
-           | $Xsed -e "s%^${1}%%" -e "s%${2}\$%%"`;;
-  esac
-}
-
-# sed scripts:
-my_sed_long_opt='1s/^\(-[[^=]]*\)=.*/\1/;q'
-my_sed_long_arg='1s/^-[[^=]]*=//'
-
-# func_opt_split
-func_opt_split ()
-{
-  func_opt_split_opt=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_opt"`
-  func_opt_split_arg=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_arg"`
-}
-
-# func_lo2o object
-func_lo2o ()
-{
-  func_lo2o_result=`$ECHO "X${1}" | $Xsed -e "$lo2o"`
-}
-
-# func_xform libobj-or-source
-func_xform ()
-{
-  func_xform_result=`$ECHO "X${1}" | $Xsed -e 's/\.[[^.]]*$/.lo/'`
-}
-
-# func_arith arithmetic-term...
-func_arith ()
-{
-  func_arith_result=`expr "$[@]"`
-}
-
-# func_len string
-# STRING may not start with a hyphen.
-func_len ()
-{
-  func_len_result=`expr "$[1]" : ".*" 2>/dev/null || echo $max_cmd_len`
-}
-
-_LT_EOF
-esac
-
-case $lt_shell_append in
-  yes)
-    cat << \_LT_EOF >> "$cfgfile"
-
-# func_append var value
-# Append VALUE to the end of shell variable VAR.
-func_append ()
-{
-  eval "$[1]+=\$[2]"
-}
-_LT_EOF
-    ;;
-  *)
-    cat << \_LT_EOF >> "$cfgfile"
-
-# func_append var value
-# Append VALUE to the end of shell variable VAR.
-func_append ()
-{
-  eval "$[1]=\$$[1]\$[2]"
-}
-
-_LT_EOF
-    ;;
-  esac
-])
diff --git a/m4/ltoptions.m4 b/m4/ltoptions.m4
deleted file mode 100644
index 34151a3..0000000
--- a/m4/ltoptions.m4
+++ /dev/null
@@ -1,368 +0,0 @@
-# Helper functions for option handling.                    -*- Autoconf -*-
-#
-#   Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc.
-#   Written by Gary V. Vaughan, 2004
-#
-# This file is free software; the Free Software Foundation gives
-# unlimited permission to copy and/or distribute it, with or without
-# modifications, as long as this notice is preserved.
-
-# serial 6 ltoptions.m4
-
-# This is to help aclocal find these macros, as it can't see m4_define.
-AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])])
-
-
-# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME)
-# ------------------------------------------
-m4_define([_LT_MANGLE_OPTION],
-[[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])])
-
-
-# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME)
-# ---------------------------------------
-# Set option OPTION-NAME for macro MACRO-NAME, and if there is a
-# matching handler defined, dispatch to it.  Other OPTION-NAMEs are
-# saved as a flag.
-m4_define([_LT_SET_OPTION],
-[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl
-m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]),
-        _LT_MANGLE_DEFUN([$1], [$2]),
-    [m4_warning([Unknown $1 option `$2'])])[]dnl
-])
-
-
-# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET])
-# ------------------------------------------------------------
-# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
-m4_define([_LT_IF_OPTION],
-[m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])])
-
-
-# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET)
-# -------------------------------------------------------
-# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME
-# are set.
-m4_define([_LT_UNLESS_OPTIONS],
-[m4_foreach([_LT_Option], m4_split(m4_normalize([$2])),
-	    [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option),
-		      [m4_define([$0_found])])])[]dnl
-m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3
-])[]dnl
-])
-
-
-# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST)
-# ----------------------------------------
-# OPTION-LIST is a space-separated list of Libtool options associated
-# with MACRO-NAME.  If any OPTION has a matching handler declared with
-# LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about
-# the unknown option and exit.
-m4_defun([_LT_SET_OPTIONS],
-[# Set options
-m4_foreach([_LT_Option], m4_split(m4_normalize([$2])),
-    [_LT_SET_OPTION([$1], _LT_Option)])
-
-m4_if([$1],[LT_INIT],[
-  dnl
-  dnl Simply set some default values (i.e off) if boolean options were not
-  dnl specified:
-  _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no
-  ])
-  _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no
-  ])
-  dnl
-  dnl If no reference was made to various pairs of opposing options, then
-  dnl we run the default mode handler for the pair.  For example, if neither
-  dnl `shared' nor `disable-shared' was passed, we enable building of shared
-  dnl archives by default:
-  _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED])
-  _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC])
-  _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC])
-  _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install],
-  		   [_LT_ENABLE_FAST_INSTALL])
-  ])
-])# _LT_SET_OPTIONS
-
-
-## --------------------------------- ##
-## Macros to handle LT_INIT options. ##
-## --------------------------------- ##
-
-# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME)
-# -----------------------------------------
-m4_define([_LT_MANGLE_DEFUN],
-[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])])
-
-
-# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE)
-# -----------------------------------------------
-m4_define([LT_OPTION_DEFINE],
-[m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl
-])# LT_OPTION_DEFINE
-
-
-# dlopen
-# ------
-LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes
-])
-
-AU_DEFUN([AC_LIBTOOL_DLOPEN],
-[_LT_SET_OPTION([LT_INIT], [dlopen])
-AC_DIAGNOSE([obsolete],
-[$0: Remove this warning and the call to _LT_SET_OPTION when you
-put the `dlopen' option into LT_INIT's first parameter.])
-])
-
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], [])
-
-
-# win32-dll
-# ---------
-# Declare package support for building win32 dll's.
-LT_OPTION_DEFINE([LT_INIT], [win32-dll],
-[enable_win32_dll=yes
-
-case $host in
-*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-cegcc*)
-  AC_CHECK_TOOL(AS, as, false)
-  AC_CHECK_TOOL(DLLTOOL, dlltool, false)
-  AC_CHECK_TOOL(OBJDUMP, objdump, false)
-  ;;
-esac
-
-test -z "$AS" && AS=as
-_LT_DECL([], [AS],      [0], [Assembler program])dnl
-
-test -z "$DLLTOOL" && DLLTOOL=dlltool
-_LT_DECL([], [DLLTOOL], [0], [DLL creation program])dnl
-
-test -z "$OBJDUMP" && OBJDUMP=objdump
-_LT_DECL([], [OBJDUMP], [0], [Object dumper program])dnl
-])# win32-dll
-
-AU_DEFUN([AC_LIBTOOL_WIN32_DLL],
-[AC_REQUIRE([AC_CANONICAL_HOST])dnl
-_LT_SET_OPTION([LT_INIT], [win32-dll])
-AC_DIAGNOSE([obsolete],
-[$0: Remove this warning and the call to _LT_SET_OPTION when you
-put the `win32-dll' option into LT_INIT's first parameter.])
-])
-
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], [])
-
-
-# _LT_ENABLE_SHARED([DEFAULT])
-# ----------------------------
-# implement the --enable-shared flag, and supports the `shared' and
-# `disable-shared' LT_INIT options.
-# DEFAULT is either `yes' or `no'.  If omitted, it defaults to `yes'.
-m4_define([_LT_ENABLE_SHARED],
-[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl
-AC_ARG_ENABLE([shared],
-    [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@],
-	[build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])],
-    [p=${PACKAGE-default}
-    case $enableval in
-    yes) enable_shared=yes ;;
-    no) enable_shared=no ;;
-    *)
-      enable_shared=no
-      # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
-      for pkg in $enableval; do
-	IFS="$lt_save_ifs"
-	if test "X$pkg" = "X$p"; then
-	  enable_shared=yes
-	fi
-      done
-      IFS="$lt_save_ifs"
-      ;;
-    esac],
-    [enable_shared=]_LT_ENABLE_SHARED_DEFAULT)
-
-    _LT_DECL([build_libtool_libs], [enable_shared], [0],
-	[Whether or not to build shared libraries])
-])# _LT_ENABLE_SHARED
-
-LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])])
-LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])])
-
-# Old names:
-AC_DEFUN([AC_ENABLE_SHARED],
-[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared])
-])
-
-AC_DEFUN([AC_DISABLE_SHARED],
-[_LT_SET_OPTION([LT_INIT], [disable-shared])
-])
-
-AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)])
-AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)])
-
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AM_ENABLE_SHARED], [])
-dnl AC_DEFUN([AM_DISABLE_SHARED], [])
-
-
-
-# _LT_ENABLE_STATIC([DEFAULT])
-# ----------------------------
-# implement the --enable-static flag, and support the `static' and
-# `disable-static' LT_INIT options.
-# DEFAULT is either `yes' or `no'.  If omitted, it defaults to `yes'.
-m4_define([_LT_ENABLE_STATIC],
-[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl
-AC_ARG_ENABLE([static],
-    [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@],
-	[build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])],
-    [p=${PACKAGE-default}
-    case $enableval in
-    yes) enable_static=yes ;;
-    no) enable_static=no ;;
-    *)
-     enable_static=no
-      # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
-      for pkg in $enableval; do
-	IFS="$lt_save_ifs"
-	if test "X$pkg" = "X$p"; then
-	  enable_static=yes
-	fi
-      done
-      IFS="$lt_save_ifs"
-      ;;
-    esac],
-    [enable_static=]_LT_ENABLE_STATIC_DEFAULT)
-
-    _LT_DECL([build_old_libs], [enable_static], [0],
-	[Whether or not to build static libraries])
-])# _LT_ENABLE_STATIC
-
-LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])])
-LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])])
-
-# Old names:
-AC_DEFUN([AC_ENABLE_STATIC],
-[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static])
-])
-
-AC_DEFUN([AC_DISABLE_STATIC],
-[_LT_SET_OPTION([LT_INIT], [disable-static])
-])
-
-AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)])
-AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)])
-
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AM_ENABLE_STATIC], [])
-dnl AC_DEFUN([AM_DISABLE_STATIC], [])
-
-
-
-# _LT_ENABLE_FAST_INSTALL([DEFAULT])
-# ----------------------------------
-# implement the --enable-fast-install flag, and support the `fast-install'
-# and `disable-fast-install' LT_INIT options.
-# DEFAULT is either `yes' or `no'.  If omitted, it defaults to `yes'.
-m4_define([_LT_ENABLE_FAST_INSTALL],
-[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl
-AC_ARG_ENABLE([fast-install],
-    [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@],
-    [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])],
-    [p=${PACKAGE-default}
-    case $enableval in
-    yes) enable_fast_install=yes ;;
-    no) enable_fast_install=no ;;
-    *)
-      enable_fast_install=no
-      # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
-      for pkg in $enableval; do
-	IFS="$lt_save_ifs"
-	if test "X$pkg" = "X$p"; then
-	  enable_fast_install=yes
-	fi
-      done
-      IFS="$lt_save_ifs"
-      ;;
-    esac],
-    [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT)
-
-_LT_DECL([fast_install], [enable_fast_install], [0],
-	 [Whether or not to optimize for fast installation])dnl
-])# _LT_ENABLE_FAST_INSTALL
-
-LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])])
-LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])])
-
-# Old names:
-AU_DEFUN([AC_ENABLE_FAST_INSTALL],
-[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install])
-AC_DIAGNOSE([obsolete],
-[$0: Remove this warning and the call to _LT_SET_OPTION when you put
-the `fast-install' option into LT_INIT's first parameter.])
-])
-
-AU_DEFUN([AC_DISABLE_FAST_INSTALL],
-[_LT_SET_OPTION([LT_INIT], [disable-fast-install])
-AC_DIAGNOSE([obsolete],
-[$0: Remove this warning and the call to _LT_SET_OPTION when you put
-the `disable-fast-install' option into LT_INIT's first parameter.])
-])
-
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], [])
-dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], [])
-
-
-# _LT_WITH_PIC([MODE])
-# --------------------
-# implement the --with-pic flag, and support the `pic-only' and `no-pic'
-# LT_INIT options.
-# MODE is either `yes' or `no'.  If omitted, it defaults to `both'.
-m4_define([_LT_WITH_PIC],
-[AC_ARG_WITH([pic],
-    [AS_HELP_STRING([--with-pic],
-	[try to use only PIC/non-PIC objects @<:@default=use both@:>@])],
-    [pic_mode="$withval"],
-    [pic_mode=default])
-
-test -z "$pic_mode" && pic_mode=m4_default([$1], [default])
-
-_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl
-])# _LT_WITH_PIC
-
-LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])])
-LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])])
-
-# Old name:
-AU_DEFUN([AC_LIBTOOL_PICMODE],
-[_LT_SET_OPTION([LT_INIT], [pic-only])
-AC_DIAGNOSE([obsolete],
-[$0: Remove this warning and the call to _LT_SET_OPTION when you
-put the `pic-only' option into LT_INIT's first parameter.])
-])
-
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_LIBTOOL_PICMODE], [])
-
-## ----------------- ##
-## LTDL_INIT Options ##
-## ----------------- ##
-
-m4_define([_LTDL_MODE], [])
-LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive],
-		 [m4_define([_LTDL_MODE], [nonrecursive])])
-LT_OPTION_DEFINE([LTDL_INIT], [recursive],
-		 [m4_define([_LTDL_MODE], [recursive])])
-LT_OPTION_DEFINE([LTDL_INIT], [subproject],
-		 [m4_define([_LTDL_MODE], [subproject])])
-
-m4_define([_LTDL_TYPE], [])
-LT_OPTION_DEFINE([LTDL_INIT], [installable],
-		 [m4_define([_LTDL_TYPE], [installable])])
-LT_OPTION_DEFINE([LTDL_INIT], [convenience],
-		 [m4_define([_LTDL_TYPE], [convenience])])
diff --git a/m4/ltsugar.m4 b/m4/ltsugar.m4
deleted file mode 100644
index 9000a05..0000000
--- a/m4/ltsugar.m4
+++ /dev/null
@@ -1,123 +0,0 @@
-# ltsugar.m4 -- libtool m4 base layer.                         -*-Autoconf-*-
-#
-# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc.
-# Written by Gary V. Vaughan, 2004
-#
-# This file is free software; the Free Software Foundation gives
-# unlimited permission to copy and/or distribute it, with or without
-# modifications, as long as this notice is preserved.
-
-# serial 6 ltsugar.m4
-
-# This is to help aclocal find these macros, as it can't see m4_define.
-AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])])
-
-
-# lt_join(SEP, ARG1, [ARG2...])
-# -----------------------------
-# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their
-# associated separator.
-# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier
-# versions in m4sugar had bugs.
-m4_define([lt_join],
-[m4_if([$#], [1], [],
-       [$#], [2], [[$2]],
-       [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])])
-m4_define([_lt_join],
-[m4_if([$#$2], [2], [],
-       [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])])
-
-
-# lt_car(LIST)
-# lt_cdr(LIST)
-# ------------
-# Manipulate m4 lists.
-# These macros are necessary as long as will still need to support
-# Autoconf-2.59 which quotes differently.
-m4_define([lt_car], [[$1]])
-m4_define([lt_cdr],
-[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])],
-       [$#], 1, [],
-       [m4_dquote(m4_shift($@))])])
-m4_define([lt_unquote], $1)
-
-
-# lt_append(MACRO-NAME, STRING, [SEPARATOR])
-# ------------------------------------------
-# Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'.
-# Note that neither SEPARATOR nor STRING are expanded; they are appended
-# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked).
-# No SEPARATOR is output if MACRO-NAME was previously undefined (different
-# than defined and empty).
-#
-# This macro is needed until we can rely on Autoconf 2.62, since earlier
-# versions of m4sugar mistakenly expanded SEPARATOR but not STRING.
-m4_define([lt_append],
-[m4_define([$1],
-	   m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])])
-
-
-
-# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...])
-# ----------------------------------------------------------
-# Produce a SEP delimited list of all paired combinations of elements of
-# PREFIX-LIST with SUFFIX1 through SUFFIXn.  Each element of the list
-# has the form PREFIXmINFIXSUFFIXn.
-# Needed until we can rely on m4_combine added in Autoconf 2.62.
-m4_define([lt_combine],
-[m4_if(m4_eval([$# > 3]), [1],
-       [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl
-[[m4_foreach([_Lt_prefix], [$2],
-	     [m4_foreach([_Lt_suffix],
-		]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[,
-	[_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])])
-
-
-# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ])
-# -----------------------------------------------------------------------
-# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited
-# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ.
-m4_define([lt_if_append_uniq],
-[m4_ifdef([$1],
-	  [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1],
-		 [lt_append([$1], [$2], [$3])$4],
-		 [$5])],
-	  [lt_append([$1], [$2], [$3])$4])])
-
-
-# lt_dict_add(DICT, KEY, VALUE)
-# -----------------------------
-m4_define([lt_dict_add],
-[m4_define([$1($2)], [$3])])
-
-
-# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE)
-# --------------------------------------------
-m4_define([lt_dict_add_subkey],
-[m4_define([$1($2:$3)], [$4])])
-
-
-# lt_dict_fetch(DICT, KEY, [SUBKEY])
-# ----------------------------------
-m4_define([lt_dict_fetch],
-[m4_ifval([$3],
-	m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]),
-    m4_ifdef([$1($2)], [m4_defn([$1($2)])]))])
-
-
-# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE])
-# -----------------------------------------------------------------
-m4_define([lt_if_dict_fetch],
-[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4],
-	[$5],
-    [$6])])
-
-
-# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...])
-# --------------------------------------------------------------
-m4_define([lt_dict_filter],
-[m4_if([$5], [], [],
-  [lt_join(m4_quote(m4_default([$4], [[, ]])),
-           lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]),
-		      [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl
-])
diff --git a/m4/ltversion.m4 b/m4/ltversion.m4
deleted file mode 100644
index f3c5309..0000000
--- a/m4/ltversion.m4
+++ /dev/null
@@ -1,23 +0,0 @@
-# ltversion.m4 -- version numbers			-*- Autoconf -*-
-#
-#   Copyright (C) 2004 Free Software Foundation, Inc.
-#   Written by Scott James Remnant, 2004
-#
-# This file is free software; the Free Software Foundation gives
-# unlimited permission to copy and/or distribute it, with or without
-# modifications, as long as this notice is preserved.
-
-# Generated from ltversion.in.
-
-# serial 3017 ltversion.m4
-# This file is part of GNU Libtool
-
-m4_define([LT_PACKAGE_VERSION], [2.2.6b])
-m4_define([LT_PACKAGE_REVISION], [1.3017])
-
-AC_DEFUN([LTVERSION_VERSION],
-[macro_version='2.2.6b'
-macro_revision='1.3017'
-_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?])
-_LT_DECL(, macro_revision, 0)
-])
diff --git a/m4/lt~obsolete.m4 b/m4/lt~obsolete.m4
deleted file mode 100644
index 637bb20..0000000
--- a/m4/lt~obsolete.m4
+++ /dev/null
@@ -1,92 +0,0 @@
-# lt~obsolete.m4 -- aclocal satisfying obsolete definitions.    -*-Autoconf-*-
-#
-#   Copyright (C) 2004, 2005, 2007 Free Software Foundation, Inc.
-#   Written by Scott James Remnant, 2004.
-#
-# This file is free software; the Free Software Foundation gives
-# unlimited permission to copy and/or distribute it, with or without
-# modifications, as long as this notice is preserved.
-
-# serial 4 lt~obsolete.m4
-
-# These exist entirely to fool aclocal when bootstrapping libtool.
-#
-# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN)
-# which have later been changed to m4_define as they aren't part of the
-# exported API, or moved to Autoconf or Automake where they belong.
-#
-# The trouble is, aclocal is a bit thick.  It'll see the old AC_DEFUN
-# in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us
-# using a macro with the same name in our local m4/libtool.m4 it'll
-# pull the old libtool.m4 in (it doesn't see our shiny new m4_define
-# and doesn't know about Autoconf macros at all.)
-#
-# So we provide this file, which has a silly filename so it's always
-# included after everything else.  This provides aclocal with the
-# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything
-# because those macros already exist, or will be overwritten later.
-# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. 
-#
-# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here.
-# Yes, that means every name once taken will need to remain here until
-# we give up compatibility with versions before 1.7, at which point
-# we need to keep only those names which we still refer to.
-
-# This is to help aclocal find these macros, as it can't see m4_define.
-AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])])
-
-m4_ifndef([AC_LIBTOOL_LINKER_OPTION],	[AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])])
-m4_ifndef([AC_PROG_EGREP],		[AC_DEFUN([AC_PROG_EGREP])])
-m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH],	[AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])])
-m4_ifndef([_LT_AC_SHELL_INIT],		[AC_DEFUN([_LT_AC_SHELL_INIT])])
-m4_ifndef([_LT_AC_SYS_LIBPATH_AIX],	[AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])])
-m4_ifndef([_LT_PROG_LTMAIN],		[AC_DEFUN([_LT_PROG_LTMAIN])])
-m4_ifndef([_LT_AC_TAGVAR],		[AC_DEFUN([_LT_AC_TAGVAR])])
-m4_ifndef([AC_LTDL_ENABLE_INSTALL],	[AC_DEFUN([AC_LTDL_ENABLE_INSTALL])])
-m4_ifndef([AC_LTDL_PREOPEN],		[AC_DEFUN([AC_LTDL_PREOPEN])])
-m4_ifndef([_LT_AC_SYS_COMPILER],	[AC_DEFUN([_LT_AC_SYS_COMPILER])])
-m4_ifndef([_LT_AC_LOCK],		[AC_DEFUN([_LT_AC_LOCK])])
-m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE],	[AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])])
-m4_ifndef([_LT_AC_TRY_DLOPEN_SELF],	[AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])])
-m4_ifndef([AC_LIBTOOL_PROG_CC_C_O],	[AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])])
-m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])])
-m4_ifndef([AC_LIBTOOL_OBJDIR],		[AC_DEFUN([AC_LIBTOOL_OBJDIR])])
-m4_ifndef([AC_LTDL_OBJDIR],		[AC_DEFUN([AC_LTDL_OBJDIR])])
-m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])])
-m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP],	[AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])])
-m4_ifndef([AC_PATH_MAGIC],		[AC_DEFUN([AC_PATH_MAGIC])])
-m4_ifndef([AC_PROG_LD_GNU],		[AC_DEFUN([AC_PROG_LD_GNU])])
-m4_ifndef([AC_PROG_LD_RELOAD_FLAG],	[AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])])
-m4_ifndef([AC_DEPLIBS_CHECK_METHOD],	[AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])])
-m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])])
-m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])])
-m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])])
-m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS],	[AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])])
-m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP],	[AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])])
-m4_ifndef([LT_AC_PROG_EGREP],		[AC_DEFUN([LT_AC_PROG_EGREP])])
-m4_ifndef([LT_AC_PROG_SED],		[AC_DEFUN([LT_AC_PROG_SED])])
-m4_ifndef([_LT_CC_BASENAME],		[AC_DEFUN([_LT_CC_BASENAME])])
-m4_ifndef([_LT_COMPILER_BOILERPLATE],	[AC_DEFUN([_LT_COMPILER_BOILERPLATE])])
-m4_ifndef([_LT_LINKER_BOILERPLATE],	[AC_DEFUN([_LT_LINKER_BOILERPLATE])])
-m4_ifndef([_AC_PROG_LIBTOOL],		[AC_DEFUN([_AC_PROG_LIBTOOL])])
-m4_ifndef([AC_LIBTOOL_SETUP],		[AC_DEFUN([AC_LIBTOOL_SETUP])])
-m4_ifndef([_LT_AC_CHECK_DLFCN],		[AC_DEFUN([_LT_AC_CHECK_DLFCN])])
-m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER],	[AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])])
-m4_ifndef([_LT_AC_TAGCONFIG],		[AC_DEFUN([_LT_AC_TAGCONFIG])])
-m4_ifndef([AC_DISABLE_FAST_INSTALL],	[AC_DEFUN([AC_DISABLE_FAST_INSTALL])])
-m4_ifndef([_LT_AC_LANG_CXX],		[AC_DEFUN([_LT_AC_LANG_CXX])])
-m4_ifndef([_LT_AC_LANG_F77],		[AC_DEFUN([_LT_AC_LANG_F77])])
-m4_ifndef([_LT_AC_LANG_GCJ],		[AC_DEFUN([_LT_AC_LANG_GCJ])])
-m4_ifndef([AC_LIBTOOL_RC],		[AC_DEFUN([AC_LIBTOOL_RC])])
-m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG],	[AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])])
-m4_ifndef([_LT_AC_LANG_C_CONFIG],	[AC_DEFUN([_LT_AC_LANG_C_CONFIG])])
-m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG],	[AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])])
-m4_ifndef([_LT_AC_LANG_CXX_CONFIG],	[AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])])
-m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG],	[AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])])
-m4_ifndef([_LT_AC_LANG_F77_CONFIG],	[AC_DEFUN([_LT_AC_LANG_F77_CONFIG])])
-m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG],	[AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])])
-m4_ifndef([_LT_AC_LANG_GCJ_CONFIG],	[AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])])
-m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG],	[AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])])
-m4_ifndef([_LT_AC_LANG_RC_CONFIG],	[AC_DEFUN([_LT_AC_LANG_RC_CONFIG])])
-m4_ifndef([AC_LIBTOOL_CONFIG],		[AC_DEFUN([AC_LIBTOOL_CONFIG])])
-m4_ifndef([_LT_AC_FILE_LTDLL_C],	[AC_DEFUN([_LT_AC_FILE_LTDLL_C])])
diff --git a/missing b/missing
deleted file mode 100755
index 28055d2..0000000
--- a/missing
+++ /dev/null
@@ -1,376 +0,0 @@
-#! /bin/sh
-# Common stub for a few missing GNU programs while installing.
-
-scriptversion=2009-04-28.21; # UTC
-
-# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006,
-# 2008, 2009 Free Software Foundation, Inc.
-# Originally by Fran,cois Pinard <pinard at iro.umontreal.ca>, 1996.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-if test $# -eq 0; then
-  echo 1>&2 "Try \`$0 --help' for more information"
-  exit 1
-fi
-
-run=:
-sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p'
-sed_minuso='s/.* -o \([^ ]*\).*/\1/p'
-
-# In the cases where this matters, `missing' is being run in the
-# srcdir already.
-if test -f configure.ac; then
-  configure_ac=configure.ac
-else
-  configure_ac=configure.in
-fi
-
-msg="missing on your system"
-
-case $1 in
---run)
-  # Try to run requested program, and just exit if it succeeds.
-  run=
-  shift
-  "$@" && exit 0
-  # Exit code 63 means version mismatch.  This often happens
-  # when the user try to use an ancient version of a tool on
-  # a file that requires a minimum version.  In this case we
-  # we should proceed has if the program had been absent, or
-  # if --run hadn't been passed.
-  if test $? = 63; then
-    run=:
-    msg="probably too old"
-  fi
-  ;;
-
-  -h|--h|--he|--hel|--help)
-    echo "\
-$0 [OPTION]... PROGRAM [ARGUMENT]...
-
-Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
-error status if there is no known handling for PROGRAM.
-
-Options:
-  -h, --help      display this help and exit
-  -v, --version   output version information and exit
-  --run           try to run the given command, and emulate it if it fails
-
-Supported PROGRAM values:
-  aclocal      touch file \`aclocal.m4'
-  autoconf     touch file \`configure'
-  autoheader   touch file \`config.h.in'
-  autom4te     touch the output file, or create a stub one
-  automake     touch all \`Makefile.in' files
-  bison        create \`y.tab.[ch]', if possible, from existing .[ch]
-  flex         create \`lex.yy.c', if possible, from existing .c
-  help2man     touch the output file
-  lex          create \`lex.yy.c', if possible, from existing .c
-  makeinfo     touch the output file
-  tar          try tar, gnutar, gtar, then tar without non-portable flags
-  yacc         create \`y.tab.[ch]', if possible, from existing .[ch]
-
-Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and
-\`g' are ignored when checking the name.
-
-Send bug reports to <bug-automake at gnu.org>."
-    exit $?
-    ;;
-
-  -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
-    echo "missing $scriptversion (GNU Automake)"
-    exit $?
-    ;;
-
-  -*)
-    echo 1>&2 "$0: Unknown \`$1' option"
-    echo 1>&2 "Try \`$0 --help' for more information"
-    exit 1
-    ;;
-
-esac
-
-# normalize program name to check for.
-program=`echo "$1" | sed '
-  s/^gnu-//; t
-  s/^gnu//; t
-  s/^g//; t'`
-
-# Now exit if we have it, but it failed.  Also exit now if we
-# don't have it and --version was passed (most likely to detect
-# the program).  This is about non-GNU programs, so use $1 not
-# $program.
-case $1 in
-  lex*|yacc*)
-    # Not GNU programs, they don't have --version.
-    ;;
-
-  tar*)
-    if test -n "$run"; then
-       echo 1>&2 "ERROR: \`tar' requires --run"
-       exit 1
-    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
-       exit 1
-    fi
-    ;;
-
-  *)
-    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
-       # We have it, but it failed.
-       exit 1
-    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
-       # Could not run --version or --help.  This is probably someone
-       # running `$TOOL --version' or `$TOOL --help' to check whether
-       # $TOOL exists and not knowing $TOOL uses missing.
-       exit 1
-    fi
-    ;;
-esac
-
-# If it does not exist, or fails to run (possibly an outdated version),
-# try to emulate it.
-case $program in
-  aclocal*)
-    echo 1>&2 "\
-WARNING: \`$1' is $msg.  You should only need it if
-         you modified \`acinclude.m4' or \`${configure_ac}'.  You might want
-         to install the \`Automake' and \`Perl' packages.  Grab them from
-         any GNU archive site."
-    touch aclocal.m4
-    ;;
-
-  autoconf*)
-    echo 1>&2 "\
-WARNING: \`$1' is $msg.  You should only need it if
-         you modified \`${configure_ac}'.  You might want to install the
-         \`Autoconf' and \`GNU m4' packages.  Grab them from any GNU
-         archive site."
-    touch configure
-    ;;
-
-  autoheader*)
-    echo 1>&2 "\
-WARNING: \`$1' is $msg.  You should only need it if
-         you modified \`acconfig.h' or \`${configure_ac}'.  You might want
-         to install the \`Autoconf' and \`GNU m4' packages.  Grab them
-         from any GNU archive site."
-    files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
-    test -z "$files" && files="config.h"
-    touch_files=
-    for f in $files; do
-      case $f in
-      *:*) touch_files="$touch_files "`echo "$f" |
-				       sed -e 's/^[^:]*://' -e 's/:.*//'`;;
-      *) touch_files="$touch_files $f.in";;
-      esac
-    done
-    touch $touch_files
-    ;;
-
-  automake*)
-    echo 1>&2 "\
-WARNING: \`$1' is $msg.  You should only need it if
-         you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
-         You might want to install the \`Automake' and \`Perl' packages.
-         Grab them from any GNU archive site."
-    find . -type f -name Makefile.am -print |
-	   sed 's/\.am$/.in/' |
-	   while read f; do touch "$f"; done
-    ;;
-
-  autom4te*)
-    echo 1>&2 "\
-WARNING: \`$1' is needed, but is $msg.
-         You might have modified some files without having the
-         proper tools for further handling them.
-         You can get \`$1' as part of \`Autoconf' from any GNU
-         archive site."
-
-    file=`echo "$*" | sed -n "$sed_output"`
-    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
-    if test -f "$file"; then
-	touch $file
-    else
-	test -z "$file" || exec >$file
-	echo "#! /bin/sh"
-	echo "# Created by GNU Automake missing as a replacement of"
-	echo "#  $ $@"
-	echo "exit 0"
-	chmod +x $file
-	exit 1
-    fi
-    ;;
-
-  bison*|yacc*)
-    echo 1>&2 "\
-WARNING: \`$1' $msg.  You should only need it if
-         you modified a \`.y' file.  You may need the \`Bison' package
-         in order for those modifications to take effect.  You can get
-         \`Bison' from any GNU archive site."
-    rm -f y.tab.c y.tab.h
-    if test $# -ne 1; then
-        eval LASTARG="\${$#}"
-	case $LASTARG in
-	*.y)
-	    SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
-	    if test -f "$SRCFILE"; then
-	         cp "$SRCFILE" y.tab.c
-	    fi
-	    SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
-	    if test -f "$SRCFILE"; then
-	         cp "$SRCFILE" y.tab.h
-	    fi
-	  ;;
-	esac
-    fi
-    if test ! -f y.tab.h; then
-	echo >y.tab.h
-    fi
-    if test ! -f y.tab.c; then
-	echo 'main() { return 0; }' >y.tab.c
-    fi
-    ;;
-
-  lex*|flex*)
-    echo 1>&2 "\
-WARNING: \`$1' is $msg.  You should only need it if
-         you modified a \`.l' file.  You may need the \`Flex' package
-         in order for those modifications to take effect.  You can get
-         \`Flex' from any GNU archive site."
-    rm -f lex.yy.c
-    if test $# -ne 1; then
-        eval LASTARG="\${$#}"
-	case $LASTARG in
-	*.l)
-	    SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
-	    if test -f "$SRCFILE"; then
-	         cp "$SRCFILE" lex.yy.c
-	    fi
-	  ;;
-	esac
-    fi
-    if test ! -f lex.yy.c; then
-	echo 'main() { return 0; }' >lex.yy.c
-    fi
-    ;;
-
-  help2man*)
-    echo 1>&2 "\
-WARNING: \`$1' is $msg.  You should only need it if
-	 you modified a dependency of a manual page.  You may need the
-	 \`Help2man' package in order for those modifications to take
-	 effect.  You can get \`Help2man' from any GNU archive site."
-
-    file=`echo "$*" | sed -n "$sed_output"`
-    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
-    if test -f "$file"; then
-	touch $file
-    else
-	test -z "$file" || exec >$file
-	echo ".ab help2man is required to generate this page"
-	exit $?
-    fi
-    ;;
-
-  makeinfo*)
-    echo 1>&2 "\
-WARNING: \`$1' is $msg.  You should only need it if
-         you modified a \`.texi' or \`.texinfo' file, or any other file
-         indirectly affecting the aspect of the manual.  The spurious
-         call might also be the consequence of using a buggy \`make' (AIX,
-         DU, IRIX).  You might want to install the \`Texinfo' package or
-         the \`GNU make' package.  Grab either from any GNU archive site."
-    # The file to touch is that specified with -o ...
-    file=`echo "$*" | sed -n "$sed_output"`
-    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
-    if test -z "$file"; then
-      # ... or it is the one specified with @setfilename ...
-      infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
-      file=`sed -n '
-	/^@setfilename/{
-	  s/.* \([^ ]*\) *$/\1/
-	  p
-	  q
-	}' $infile`
-      # ... or it is derived from the source name (dir/f.texi becomes f.info)
-      test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
-    fi
-    # If the file does not exist, the user really needs makeinfo;
-    # let's fail without touching anything.
-    test -f $file || exit 1
-    touch $file
-    ;;
-
-  tar*)
-    shift
-
-    # We have already tried tar in the generic part.
-    # Look for gnutar/gtar before invocation to avoid ugly error
-    # messages.
-    if (gnutar --version > /dev/null 2>&1); then
-       gnutar "$@" && exit 0
-    fi
-    if (gtar --version > /dev/null 2>&1); then
-       gtar "$@" && exit 0
-    fi
-    firstarg="$1"
-    if shift; then
-	case $firstarg in
-	*o*)
-	    firstarg=`echo "$firstarg" | sed s/o//`
-	    tar "$firstarg" "$@" && exit 0
-	    ;;
-	esac
-	case $firstarg in
-	*h*)
-	    firstarg=`echo "$firstarg" | sed s/h//`
-	    tar "$firstarg" "$@" && exit 0
-	    ;;
-	esac
-    fi
-
-    echo 1>&2 "\
-WARNING: I can't seem to be able to run \`tar' with the given arguments.
-         You may want to install GNU tar or Free paxutils, or check the
-         command line arguments."
-    exit 1
-    ;;
-
-  *)
-    echo 1>&2 "\
-WARNING: \`$1' is needed, and is $msg.
-         You might have modified some files without having the
-         proper tools for further handling them.  Check the \`README' file,
-         it often tells you about the needed prerequisites for installing
-         this package.  You may also peek at any GNU archive site, in case
-         some other package would contain this missing \`$1' program."
-    exit 1
-    ;;
-esac
-
-exit 0
-
-# Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "scriptversion="
-# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-time-zone: "UTC"
-# time-stamp-end: "; # UTC"
-# End:
diff --git a/packaging/debian.templates/changelog b/packaging/debian.templates/changelog
new file mode 100644
index 0000000..7017a07
--- /dev/null
+++ b/packaging/debian.templates/changelog
@@ -0,0 +1,5 @@
+#PACKAGE# (#VERSION#-1) unstable; urgency=low
+
+  * New upstream release.
+
+ -- #USERNAME# <#EMAIL#>  #DATE#
diff --git a/packaging/debian.templates/compat b/packaging/debian.templates/compat
new file mode 100644
index 0000000..45a4fb7
--- /dev/null
+++ b/packaging/debian.templates/compat
@@ -0,0 +1 @@
+8
diff --git a/packaging/debian.templates/control b/packaging/debian.templates/control
new file mode 100644
index 0000000..6e07492
--- /dev/null
+++ b/packaging/debian.templates/control
@@ -0,0 +1,31 @@
+Source: opensc
+Section: utils
+Priority: extra
+Maintainer: Viktor Tarasov <viktor.tarasov at gmail.com>
+Build-Depends: debhelper (>= 8.0.0), autotools-dev, libltdl3-dev, libreadline-dev, libssl-dev (>= 0.9.7d-3), libpcsclite-dev (>= 1.2.9-beta1), pkg-config, xsltproc, docbook-xsl, zlib1g-dev, dh-autoreconf, flex
+Standards-Version: 3.9.2
+Homepage: https://github.com/OpenSC/OpenSC
+#Vcs-Git: git://git.debian.org/collab-maint/opensc.git
+#Vcs-Browser: http://git.debian.org/?p=collab-maint/opensc.git;a=summary
+
+Package: opensc
+Section: utils
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}, pcscd
+Replaces: libopensc2 (<< 0.12.0)
+Conflicts: libopensc2 (<< 0.12.0), mozilla-opensc
+Description: Smart card utilities with support for PKCS#15 compatible cards
+ OpenSC provides a set of libraries and utilities to access smart
+ cards. It mainly focuses on cards that support cryptographic
+ operations. It facilitates their use in security applications such as
+ mail encryption, authentication, and digital signature. OpenSC
+ implements the PKCS#11 API. OpenSC implements the PKCS#15
+ standard and aims to be compatible with all software that does so as
+ well.
+ .
+ Before purchasing any cards, please read carefully documentation in
+ /usr/share/doc/opensc/html/wiki/index.html - only some cards are
+ supported. Not only does card type matters, but also card version,
+ card OS version and preloaded applet. Only a subset of possible
+ operations may be supported for your card. Card initialization may
+ require third party proprietary software.
diff --git a/packaging/debian.templates/copyright b/packaging/debian.templates/copyright
new file mode 100644
index 0000000..06c5ce1
--- /dev/null
+++ b/packaging/debian.templates/copyright
@@ -0,0 +1,29 @@
+Format: http://dep.debian.net/deps/dep5
+Upstream-Name: opensc
+Source: https://github.com/OpenSC/OpenSC.git
+
+Files: *
+Copyright: 2001-2013 OpenSC developers <opensc-devel at lists.sourceforge.net>
+
+License: LGPL-2.1
+
+
+License: LGPL-2.1
+ This package is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 3 of the License, or (at your option) any later version.
+ .
+ This package is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ Lesser General Public License for more details.
+ .
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+ .
+ On Debian systems, the complete text of the GNU Lesser General
+ Public License can be found in "/usr/share/common-licenses/LGPL-3".
+
+# Please also look if there are files or directories which have a
+# different copyright/license attached and list them here.
diff --git a/packaging/debian.templates/docs b/packaging/debian.templates/docs
new file mode 100644
index 0000000..50bd824
--- /dev/null
+++ b/packaging/debian.templates/docs
@@ -0,0 +1,2 @@
+NEWS
+README
diff --git a/packaging/debian.templates/opensc.install b/packaging/debian.templates/opensc.install
new file mode 100644
index 0000000..7bc95c7
--- /dev/null
+++ b/packaging/debian.templates/opensc.install
@@ -0,0 +1,14 @@
+debian/tmp/usr/bin/pkcs15-*
+debian/tmp/usr/bin/*-tool
+debian/tmp/usr/bin/eidenv
+debian/tmp/usr/bin/opensc-explorer
+
+debian/tmp/usr/lib/*.so.*
+debian/tmp/usr/lib/*.so
+debian/tmp/usr/lib/pkcs11/*.so
+debian/tmp/usr/share/opensc/*.profile
+etc/opensc.conf etc/opensc
+
+debian/tmp/usr/share/man/man5/*.5
+debian/tmp/usr/share/man/man1/*.1
+
diff --git a/packaging/debian.templates/rules b/packaging/debian.templates/rules
new file mode 100755
index 0000000..ec80de2
--- /dev/null
+++ b/packaging/debian.templates/rules
@@ -0,0 +1,30 @@
+#!/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
+
+%:
+	dh $@ --with autoreconf
+
+override_dh_auto_configure:
+	dh_auto_configure -- --sysconfdir=/etc/opensc \
+		--enable-pcsc \
+		--disable-openct \
+		--enable-doc \
+		--enable-readline \
+		--enable-zlib \
+		--enable-sm \
+		--htmldir=/usr/share/doc/opensc/html
+
+override_dh_auto_install:
+	dh_auto_install --destdir=debian/tmp
+
+override_dh_installdocs:
+	dh_installdocs -A README NEWS ChangeLog
+ 
diff --git a/src/Makefile.am b/src/Makefile.am
index 48a460d..fb92972 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -6,6 +6,6 @@ SUBDIRS = common scconf pkcs15init libopensc pkcs11 \
 	tools tests minidriver
 
 if ENABLE_SM
-SUBDIRS += sm
+SUBDIRS += libsm smm
 endif
 
diff --git a/src/Makefile.in b/src/Makefile.in
deleted file mode 100644
index 35e4ee0..0000000
--- a/src/Makefile.in
+++ /dev/null
@@ -1,614 +0,0 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
- at SET_MAKE@
-VPATH = @srcdir@
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
- at ENABLE_SM_TRUE@am__append_1 = sm
-subdir = src
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_pthread.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo "  GEN   " $@;
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
-am__v_at_0 = @
-SOURCES =
-DIST_SOURCES =
-RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
-	html-recursive info-recursive install-data-recursive \
-	install-dvi-recursive install-exec-recursive \
-	install-html-recursive install-info-recursive \
-	install-pdf-recursive install-ps-recursive install-recursive \
-	installcheck-recursive installdirs-recursive pdf-recursive \
-	ps-recursive uninstall-recursive
-RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
-  distclean-recursive maintainer-clean-recursive
-AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
-	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
-	distdir
-ETAGS = etags
-CTAGS = ctags
-DIST_SUBDIRS = common scconf pkcs15init libopensc pkcs11 tools tests \
-	minidriver sm
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-am__relativize = \
-  dir0=`pwd`; \
-  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
-  sed_rest='s,^[^/]*/*,,'; \
-  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
-  sed_butlast='s,/*[^/]*$$,,'; \
-  while test -n "$$dir1"; do \
-    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
-    if test "$$first" != "."; then \
-      if test "$$first" = ".."; then \
-        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
-        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
-      else \
-        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
-        if test "$$first2" = "$$first"; then \
-          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
-        else \
-          dir2="../$$dir2"; \
-        fi; \
-        dir0="$$dir0"/"$$first"; \
-      fi; \
-    fi; \
-    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
-  done; \
-  reldir="$$dir2"
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AR = @AR@
-AS = @AS@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEBUG_FILE = @DEBUG_FILE@
-DEFAULT_PCSC_PROVIDER = @DEFAULT_PCSC_PROVIDER@
-DEFAULT_SM_MODULE = @DEFAULT_SM_MODULE@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DLLTOOL = @DLLTOOL@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-FGREP = @FGREP@
-GIT = @GIT@
-GREP = @GREP@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBOBJS = @LIBOBJS@
-LIBRARY_BITNESS = @LIBRARY_BITNESS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-NM = @NM@
-NMEDIT = @NMEDIT@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OPENCT_CFLAGS = @OPENCT_CFLAGS@
-OPENCT_LIBS = @OPENCT_LIBS@
-OPENSC_LT_AGE = @OPENSC_LT_AGE@
-OPENSC_LT_CURRENT = @OPENSC_LT_CURRENT@
-OPENSC_LT_OLDEST = @OPENSC_LT_OLDEST@
-OPENSC_LT_REVISION = @OPENSC_LT_REVISION@
-OPENSC_VERSION_FIX = @OPENSC_VERSION_FIX@
-OPENSC_VERSION_MAJOR = @OPENSC_VERSION_MAJOR@
-OPENSC_VERSION_MINOR = @OPENSC_VERSION_MINOR@
-OPENSSL_CFLAGS = @OPENSSL_CFLAGS@
-OPENSSL_LIBS = @OPENSSL_LIBS@
-OPTIONAL_OPENCT_CFLAGS = @OPTIONAL_OPENCT_CFLAGS@
-OPTIONAL_OPENCT_LIBS = @OPTIONAL_OPENCT_LIBS@
-OPTIONAL_OPENSSL_CFLAGS = @OPTIONAL_OPENSSL_CFLAGS@
-OPTIONAL_OPENSSL_LIBS = @OPTIONAL_OPENSSL_LIBS@
-OPTIONAL_PCSC_CFLAGS = @OPTIONAL_PCSC_CFLAGS@
-OPTIONAL_READLINE_CFLAGS = @OPTIONAL_READLINE_CFLAGS@
-OPTIONAL_READLINE_LIBS = @OPTIONAL_READLINE_LIBS@
-OPTIONAL_ZLIB_CFLAGS = @OPTIONAL_ZLIB_CFLAGS@
-OPTIONAL_ZLIB_LIBS = @OPTIONAL_ZLIB_LIBS@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PCSC_CFLAGS = @PCSC_CFLAGS@
-PCSC_LIBS = @PCSC_LIBS@
-PKG_CONFIG = @PKG_CONFIG@
-PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
-PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
-PTHREAD_CC = @PTHREAD_CC@
-PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
-PTHREAD_LIBS = @PTHREAD_LIBS@
-RANLIB = @RANLIB@
-RC = @RC@
-READLINE_CFLAGS = @READLINE_CFLAGS@
-READLINE_LIBS = @READLINE_LIBS@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-WIN_LIBPREFIX = @WIN_LIBPREFIX@
-XSLTPROC = @XSLTPROC@
-ZLIB_CFLAGS = @ZLIB_CFLAGS@
-ZLIB_LIBS = @ZLIB_LIBS@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-ax_pthread_config = @ax_pthread_config@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-git = @git@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-pkcs11dir = @pkcs11dir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-xslstylesheetsdir = @xslstylesheetsdir@
-MAINTAINERCLEANFILES = $(srcdir)/Makefile.in
-EXTRA_DIST = Makefile.mak
-
-# Order IS important
-SUBDIRS = common scconf pkcs15init libopensc pkcs11 tools tests \
-	minidriver $(am__append_1)
-all: all-recursive
-
-.SUFFIXES:
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
-	@for dep in $?; do \
-	  case '$(am__configure_deps)' in \
-	    *$$dep*) \
-	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
-	        && { if test -f $@; then exit 0; else break; fi; }; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --foreign src/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-	@case '$?' in \
-	  *config.status*) \
-	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-	esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure:  $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-
-# This directory's subdirectories are mostly independent; you can cd
-# into them and run `make' without going through this Makefile.
-# To change the values of `make' variables: instead of editing Makefiles,
-# (1) if the variable is set in `config.status', edit `config.status'
-#     (which will cause the Makefiles to be regenerated when you run `make');
-# (2) otherwise, pass the desired values on the `make' command line.
-$(RECURSIVE_TARGETS):
-	@fail= failcom='exit 1'; \
-	for f in x $$MAKEFLAGS; do \
-	  case $$f in \
-	    *=* | --[!k]*);; \
-	    *k*) failcom='fail=yes';; \
-	  esac; \
-	done; \
-	dot_seen=no; \
-	target=`echo $@ | sed s/-recursive//`; \
-	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  echo "Making $$target in $$subdir"; \
-	  if test "$$subdir" = "."; then \
-	    dot_seen=yes; \
-	    local_target="$$target-am"; \
-	  else \
-	    local_target="$$target"; \
-	  fi; \
-	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
-	  || eval $$failcom; \
-	done; \
-	if test "$$dot_seen" = "no"; then \
-	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
-	fi; test -z "$$fail"
-
-$(RECURSIVE_CLEAN_TARGETS):
-	@fail= failcom='exit 1'; \
-	for f in x $$MAKEFLAGS; do \
-	  case $$f in \
-	    *=* | --[!k]*);; \
-	    *k*) failcom='fail=yes';; \
-	  esac; \
-	done; \
-	dot_seen=no; \
-	case "$@" in \
-	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
-	  *) list='$(SUBDIRS)' ;; \
-	esac; \
-	rev=''; for subdir in $$list; do \
-	  if test "$$subdir" = "."; then :; else \
-	    rev="$$subdir $$rev"; \
-	  fi; \
-	done; \
-	rev="$$rev ."; \
-	target=`echo $@ | sed s/-recursive//`; \
-	for subdir in $$rev; do \
-	  echo "Making $$target in $$subdir"; \
-	  if test "$$subdir" = "."; then \
-	    local_target="$$target-am"; \
-	  else \
-	    local_target="$$target"; \
-	  fi; \
-	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
-	  || eval $$failcom; \
-	done && test -z "$$fail"
-tags-recursive:
-	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
-	done
-ctags-recursive:
-	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
-	done
-
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	set x; \
-	here=`pwd`; \
-	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
-	  include_option=--etags-include; \
-	  empty_fix=.; \
-	else \
-	  include_option=--include; \
-	  empty_fix=; \
-	fi; \
-	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  if test "$$subdir" = .; then :; else \
-	    test ! -f $$subdir/TAGS || \
-	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
-	  fi; \
-	done; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	shift; \
-	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
-	  test -n "$$unique" || unique=$$empty_fix; \
-	  if test $$# -gt 0; then \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      "$$@" $$unique; \
-	  else \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      $$unique; \
-	  fi; \
-	fi
-ctags: CTAGS
-CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	test -z "$(CTAGS_ARGS)$$unique" \
-	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$unique
-
-GTAGS:
-	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && $(am__cd) $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) "$$here"
-
-distclean-tags:
-	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d "$(distdir)/$$file"; then \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-	  else \
-	    test -f "$(distdir)/$$file" \
-	    || cp -p $$d/$$file "$(distdir)/$$file" \
-	    || exit 1; \
-	  fi; \
-	done
-	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
-	  if test "$$subdir" = .; then :; else \
-	    test -d "$(distdir)/$$subdir" \
-	    || $(MKDIR_P) "$(distdir)/$$subdir" \
-	    || exit 1; \
-	  fi; \
-	done
-	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
-	  if test "$$subdir" = .; then :; else \
-	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
-	    $(am__relativize); \
-	    new_distdir=$$reldir; \
-	    dir1=$$subdir; dir2="$(top_distdir)"; \
-	    $(am__relativize); \
-	    new_top_distdir=$$reldir; \
-	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
-	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
-	    ($(am__cd) $$subdir && \
-	      $(MAKE) $(AM_MAKEFLAGS) \
-	        top_distdir="$$new_top_distdir" \
-	        distdir="$$new_distdir" \
-		am__remove_distdir=: \
-		am__skip_length_check=: \
-		am__skip_mode_fix=: \
-	        distdir) \
-	      || exit 1; \
-	  fi; \
-	done
-check-am: all-am
-check: check-recursive
-all-am: Makefile
-installdirs: installdirs-recursive
-installdirs-am:
-install: install-recursive
-install-exec: install-exec-recursive
-install-data: install-data-recursive
-uninstall: uninstall-recursive
-
-install-am: all-am
-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-recursive
-install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
-	@echo "This command is intended for maintainers to use"
-	@echo "it deletes files that may require special tools to rebuild."
-	-test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
-clean: clean-recursive
-
-clean-am: clean-generic clean-libtool mostlyclean-am
-
-distclean: distclean-recursive
-	-rm -f Makefile
-distclean-am: clean-am distclean-generic distclean-tags
-
-dvi: dvi-recursive
-
-dvi-am:
-
-html: html-recursive
-
-html-am:
-
-info: info-recursive
-
-info-am:
-
-install-data-am:
-
-install-dvi: install-dvi-recursive
-
-install-dvi-am:
-
-install-exec-am:
-
-install-html: install-html-recursive
-
-install-html-am:
-
-install-info: install-info-recursive
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-recursive
-
-install-pdf-am:
-
-install-ps: install-ps-recursive
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-recursive
-	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-recursive
-
-mostlyclean-am: mostlyclean-generic mostlyclean-libtool
-
-pdf: pdf-recursive
-
-pdf-am:
-
-ps: ps-recursive
-
-ps-am:
-
-uninstall-am:
-
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
-	install-am install-strip tags-recursive
-
-.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
-	all all-am check check-am clean clean-generic clean-libtool \
-	ctags ctags-recursive distclean distclean-generic \
-	distclean-libtool distclean-tags distdir dvi dvi-am html \
-	html-am info info-am install install-am install-data \
-	install-data-am install-dvi install-dvi-am install-exec \
-	install-exec-am install-html install-html-am install-info \
-	install-info-am install-man install-pdf install-pdf-am \
-	install-ps install-ps-am install-strip installcheck \
-	installcheck-am installdirs installdirs-am maintainer-clean \
-	maintainer-clean-generic mostlyclean mostlyclean-generic \
-	mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \
-	uninstall uninstall-am
-
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/src/Makefile.mak b/src/Makefile.mak
index f290737..5156b61 100644
--- a/src/Makefile.mak
+++ b/src/Makefile.mak
@@ -2,14 +2,14 @@ TOPDIR = ..
 
 !INCLUDE $(TOPDIR)\win32\Make.rules.mak
 
-SUBDIRS = common scconf pkcs15init libopensc pkcs11 tools tests
+SUBDIRS = common scconf libsm pkcs15init libopensc pkcs11 tools tests
 
 !IF "$(MINIDRIVER_DEF)" == "/DENABLE_MINIDRIVER"
 SUBDIRS = $(SUBDIRS) minidriver
 !ENDIF
 
 !IF "$(SM_DEF)" == "/DENABLE_SM"
-SUBDIRS = $(SUBDIRS) sm
+SUBDIRS = $(SUBDIRS) smm
 !ENDIF
 
 all::
diff --git a/src/common/Makefile.in b/src/common/Makefile.in
deleted file mode 100644
index 1557d66..0000000
--- a/src/common/Makefile.in
+++ /dev/null
@@ -1,596 +0,0 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
- at SET_MAKE@
-
-
-
-VPATH = @srcdir@
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-noinst_PROGRAMS = compat_getopt_main$(EXEEXT)
-subdir = src/common
-DIST_COMMON = $(dist_noinst_DATA) $(srcdir)/Makefile.am \
-	$(srcdir)/Makefile.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_pthread.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-LTLIBRARIES = $(noinst_LTLIBRARIES)
-libcompat_la_LIBADD =
-am_libcompat_la_OBJECTS = compat_dummy.lo compat_strlcat.lo \
-	compat_strlcpy.lo compat_getpass.lo compat_getopt.lo \
-	simclist.lo
-libcompat_la_OBJECTS = $(am_libcompat_la_OBJECTS)
-AM_V_lt = $(am__v_lt_$(V))
-am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
-am__v_lt_0 = --silent
-libpkcs11_la_LIBADD =
-am_libpkcs11_la_OBJECTS = libpkcs11.lo
-libpkcs11_la_OBJECTS = $(am_libpkcs11_la_OBJECTS)
-libscdl_la_LIBADD =
-am_libscdl_la_OBJECTS = libscdl.lo
-libscdl_la_OBJECTS = $(am_libscdl_la_OBJECTS)
-PROGRAMS = $(noinst_PROGRAMS)
-compat_getopt_main_SOURCES = compat_getopt_main.c
-compat_getopt_main_OBJECTS = compat_getopt_main.$(OBJEXT)
-compat_getopt_main_DEPENDENCIES = libcompat.la
-DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
-depcomp = $(SHELL) $(top_srcdir)/depcomp
-am__depfiles_maybe = depfiles
-am__mv = mv -f
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
-	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
-	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
-	$(AM_CFLAGS) $(CFLAGS)
-AM_V_CC = $(am__v_CC_$(V))
-am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
-am__v_CC_0 = @echo "  CC    " $@;
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
-am__v_at_0 = @
-CCLD = $(CC)
-LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CCLD = $(am__v_CCLD_$(V))
-am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
-am__v_CCLD_0 = @echo "  CCLD  " $@;
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo "  GEN   " $@;
-SOURCES = $(libcompat_la_SOURCES) $(libpkcs11_la_SOURCES) \
-	$(libscdl_la_SOURCES) compat_getopt_main.c
-DIST_SOURCES = $(libcompat_la_SOURCES) $(libpkcs11_la_SOURCES) \
-	$(libscdl_la_SOURCES) compat_getopt_main.c
-DATA = $(dist_noinst_DATA)
-ETAGS = etags
-CTAGS = ctags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AR = @AR@
-AS = @AS@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEBUG_FILE = @DEBUG_FILE@
-DEFAULT_PCSC_PROVIDER = @DEFAULT_PCSC_PROVIDER@
-DEFAULT_SM_MODULE = @DEFAULT_SM_MODULE@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DLLTOOL = @DLLTOOL@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-FGREP = @FGREP@
-GIT = @GIT@
-GREP = @GREP@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBOBJS = @LIBOBJS@
-LIBRARY_BITNESS = @LIBRARY_BITNESS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-NM = @NM@
-NMEDIT = @NMEDIT@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OPENCT_CFLAGS = @OPENCT_CFLAGS@
-OPENCT_LIBS = @OPENCT_LIBS@
-OPENSC_LT_AGE = @OPENSC_LT_AGE@
-OPENSC_LT_CURRENT = @OPENSC_LT_CURRENT@
-OPENSC_LT_OLDEST = @OPENSC_LT_OLDEST@
-OPENSC_LT_REVISION = @OPENSC_LT_REVISION@
-OPENSC_VERSION_FIX = @OPENSC_VERSION_FIX@
-OPENSC_VERSION_MAJOR = @OPENSC_VERSION_MAJOR@
-OPENSC_VERSION_MINOR = @OPENSC_VERSION_MINOR@
-OPENSSL_CFLAGS = @OPENSSL_CFLAGS@
-OPENSSL_LIBS = @OPENSSL_LIBS@
-OPTIONAL_OPENCT_CFLAGS = @OPTIONAL_OPENCT_CFLAGS@
-OPTIONAL_OPENCT_LIBS = @OPTIONAL_OPENCT_LIBS@
-OPTIONAL_OPENSSL_CFLAGS = @OPTIONAL_OPENSSL_CFLAGS@
-OPTIONAL_OPENSSL_LIBS = @OPTIONAL_OPENSSL_LIBS@
-OPTIONAL_PCSC_CFLAGS = @OPTIONAL_PCSC_CFLAGS@
-OPTIONAL_READLINE_CFLAGS = @OPTIONAL_READLINE_CFLAGS@
-OPTIONAL_READLINE_LIBS = @OPTIONAL_READLINE_LIBS@
-OPTIONAL_ZLIB_CFLAGS = @OPTIONAL_ZLIB_CFLAGS@
-OPTIONAL_ZLIB_LIBS = @OPTIONAL_ZLIB_LIBS@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PCSC_CFLAGS = @PCSC_CFLAGS@
-PCSC_LIBS = @PCSC_LIBS@
-PKG_CONFIG = @PKG_CONFIG@
-PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
-PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
-PTHREAD_CC = @PTHREAD_CC@
-PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
-PTHREAD_LIBS = @PTHREAD_LIBS@
-RANLIB = @RANLIB@
-RC = @RC@
-READLINE_CFLAGS = @READLINE_CFLAGS@
-READLINE_LIBS = @READLINE_LIBS@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-WIN_LIBPREFIX = @WIN_LIBPREFIX@
-XSLTPROC = @XSLTPROC@
-ZLIB_CFLAGS = @ZLIB_CFLAGS@
-ZLIB_LIBS = @ZLIB_LIBS@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-ax_pthread_config = @ax_pthread_config@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-git = @git@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-pkcs11dir = @pkcs11dir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-xslstylesheetsdir = @xslstylesheetsdir@
-MAINTAINERCLEANFILES = $(srcdir)/Makefile.in
-EXTRA_DIST = Makefile.mak
-noinst_LTLIBRARIES = libcompat.la libpkcs11.la libscdl.la
-dist_noinst_DATA = \
-	README.compat_getopt ChangeLog.compat_getopt \
-	LICENSE.compat_getopt compat_getopt.txt \
-	compat_getopt_main.c \
-	README.compat_strlcpy compat_strlcpy.3
-
-AM_CPPFLAGS = -I$(top_srcdir)/src
-libcompat_la_SOURCES = \
-	compat_dummy.c \
-	compat_strlcat.h compat_strlcat.c \
-	compat_strlcpy.h compat_strlcpy.c \
-	compat_getpass.h compat_getpass.c \
-	compat_getopt.h compat_getopt.c \
-	simclist.c simclist.h
-
-compat_getopt_main_LDADD = libcompat.la
-libpkcs11_la_SOURCES = libpkcs11.c libpkcs11.h
-libscdl_la_SOURCES = libscdl.c libscdl.h
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .c .lo .o .obj
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
-	@for dep in $?; do \
-	  case '$(am__configure_deps)' in \
-	    *$$dep*) \
-	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
-	        && { if test -f $@; then exit 0; else break; fi; }; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/common/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --foreign src/common/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-	@case '$?' in \
-	  *config.status*) \
-	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-	esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure:  $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-
-clean-noinstLTLIBRARIES:
-	-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
-	@list='$(noinst_LTLIBRARIES)'; for p in $$list; do \
-	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
-	  test "$$dir" != "$$p" || dir=.; \
-	  echo "rm -f \"$${dir}/so_locations\""; \
-	  rm -f "$${dir}/so_locations"; \
-	done
-libcompat.la: $(libcompat_la_OBJECTS) $(libcompat_la_DEPENDENCIES) 
-	$(AM_V_CCLD)$(LINK)  $(libcompat_la_OBJECTS) $(libcompat_la_LIBADD) $(LIBS)
-libpkcs11.la: $(libpkcs11_la_OBJECTS) $(libpkcs11_la_DEPENDENCIES) 
-	$(AM_V_CCLD)$(LINK)  $(libpkcs11_la_OBJECTS) $(libpkcs11_la_LIBADD) $(LIBS)
-libscdl.la: $(libscdl_la_OBJECTS) $(libscdl_la_DEPENDENCIES) 
-	$(AM_V_CCLD)$(LINK)  $(libscdl_la_OBJECTS) $(libscdl_la_LIBADD) $(LIBS)
-
-clean-noinstPROGRAMS:
-	@list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \
-	echo " rm -f" $$list; \
-	rm -f $$list || exit $$?; \
-	test -n "$(EXEEXT)" || exit 0; \
-	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
-	echo " rm -f" $$list; \
-	rm -f $$list
-compat_getopt_main$(EXEEXT): $(compat_getopt_main_OBJECTS) $(compat_getopt_main_DEPENDENCIES) 
-	@rm -f compat_getopt_main$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(compat_getopt_main_OBJECTS) $(compat_getopt_main_LDADD) $(LIBS)
-
-mostlyclean-compile:
-	-rm -f *.$(OBJEXT)
-
-distclean-compile:
-	-rm -f *.tab.c
-
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/compat_dummy.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/compat_getopt.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/compat_getopt_main.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/compat_getpass.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/compat_strlcat.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/compat_strlcpy.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpkcs11.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libscdl.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/simclist.Plo at am__quote@
-
-.c.o:
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(COMPILE) -c $<
-
-.c.obj:
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
-
-.c.lo:
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
- at am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $<
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	set x; \
-	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	shift; \
-	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
-	  test -n "$$unique" || unique=$$empty_fix; \
-	  if test $$# -gt 0; then \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      "$$@" $$unique; \
-	  else \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      $$unique; \
-	  fi; \
-	fi
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	test -z "$(CTAGS_ARGS)$$unique" \
-	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$unique
-
-GTAGS:
-	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && $(am__cd) $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) "$$here"
-
-distclean-tags:
-	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d "$(distdir)/$$file"; then \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-	  else \
-	    test -f "$(distdir)/$$file" \
-	    || cp -p $$d/$$file "$(distdir)/$$file" \
-	    || exit 1; \
-	  fi; \
-	done
-check-am: all-am
-check: check-am
-all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) $(DATA)
-installdirs:
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
-	@echo "This command is intended for maintainers to use"
-	@echo "it deletes files that may require special tools to rebuild."
-	-test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
-clean: clean-am
-
-clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
-	clean-noinstPROGRAMS mostlyclean-am
-
-distclean: distclean-am
-	-rm -rf ./$(DEPDIR)
-	-rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
-	distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am:
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am:
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
-	-rm -rf ./$(DEPDIR)
-	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-compile mostlyclean-generic \
-	mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am:
-
-.MAKE: install-am install-strip
-
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
-	clean-libtool clean-noinstLTLIBRARIES clean-noinstPROGRAMS \
-	ctags distclean distclean-compile distclean-generic \
-	distclean-libtool distclean-tags distdir dvi dvi-am html \
-	html-am info info-am install install-am install-data \
-	install-data-am install-dvi install-dvi-am install-exec \
-	install-exec-am install-html install-html-am install-info \
-	install-info-am install-man install-pdf install-pdf-am \
-	install-ps install-ps-am install-strip installcheck \
-	installcheck-am installdirs maintainer-clean \
-	maintainer-clean-generic mostlyclean mostlyclean-compile \
-	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-	tags uninstall uninstall-am
-
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/src/common/compat_getopt.3 b/src/common/compat_getopt.3
new file mode 100644
index 0000000..a63fcd8
--- /dev/null
+++ b/src/common/compat_getopt.3
@@ -0,0 +1,288 @@
+.\" (c) 1993 by Thomas Koenig (ig25 at rz.uni-karlsruhe.de)
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one
+.\" 
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\" 
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\" License.
+.\" Modified Sat Jul 24 19:27:50 1993 by Rik Faith (faith at cs.unc.edu)
+.\" Modified Mon Aug 30 22:02:34 1995 by Jim Van Zandt <jrv at vanzandt.mv.com>
+.\" longindex is a pointer, has_arg can take 3 values, using consistent
+.\" names for optstring and longindex, "\n" in formats fixed.  Documenting
+.\" opterr and getopt_long_only.  Clarified explanations (borrowing heavily
+.\" from the source code).
+.TH GETOPT 3  "Aug 30, 1995" "GNU" "Linux Programmer's Manual"
+.SH NAME
+getopt \- Parse command line options
+.SH SYNOPSIS
+.nf
+.B #include <unistd.h>
+.sp
+.BI "int getopt(int " argc ", char * const " argv[] ","
+.BI "           const char *" optstring ");"
+.sp
+.BI "extern char *" optarg ;
+.BI "extern int " optind ", " opterr ", " optopt ;
+.sp
+.B #include <getopt.h>
+.sp
+.BI "int getopt_long(int " argc ", char * const " argv[] ",
+.BI "           const char *" optstring ,
+.BI "           const struct option *" longopts ", int *" longindex ");"
+.sp
+.BI "int getopt_long_only(int " argc ", char * const " argv[] ",
+.BI "           const char *" optstring ,
+.BI "           const struct option *" longopts ", int *" longindex ");"
+.fi
+.SH DESCRIPTION
+The
+.B getopt()
+function parses the command line arguments.  Its arguments
+.I argc
+and
+.I argv
+are the argument count and array as passed to the
+.B main()
+function on program invocation.
+An element of \fIargv\fP that starts with `-' (and is not exactly "-" or "--")
+is an option element.  The characters of this element
+(aside from the initial `-') are option characters.  If \fBgetopt()\fP
+is called repeatedly, it returns successively each of the option characters
+from each of the option elements.
+.PP
+If \fBgetopt()\fP finds another option character, it returns that
+character, updating the external variable \fIoptind\fP and a static
+variable \fInextchar\fP so that the next call to \fBgetopt()\fP can
+resume the scan with the following option character or
+\fIargv\fP-element.
+.PP
+If there are no more option characters, \fBgetopt()\fP returns
+\fBEOF\fP.  Then \fIoptind\fP is the index in \fIargv\fP of the first
+\fIargv\fP-element that is not an option.
+.PP
+.I optstring
+is a string containing the legitimate option characters.  If such a
+character is followed by a colon, the option requires an argument, so
+\fBgetopt\fP places a pointer to the following text in the same
+\fIargv\fP-element, or the text of the following \fIargv\fP-element, in
+.IR optarg .
+Two colons mean an option takes
+an optional arg; if there is text in the current \fIargv\fP-element,
+it is returned in \fIoptarg\fP, otherwise \fIoptarg\fP is set to zero.
+.PP
+By default, \fBgetargs()\fP permutes the contents of \fIargv\fP as it
+scans, so that eventually all the non-options are at the end.  Two
+other modes are also implemented.  If the first character of
+\fIoptstring\fP is `+' or the environment variable POSIXLY_CORRECT is
+set, then option processing stops as soon as a non-option argument is
+encountered.  If the first character of \fIoptstring\fP is `-', then
+each non-option \fIargv\fP-element is handled as if it were the argument of
+an option with character code 1.  (This is used by programs that were
+written to expect options and other \fIargv\fP-elements in any order
+and that care about the ordering of the two.)
+The special argument `--' forces an end of option-scanning regardless
+of the scanning mode.
+.PP
+If \fBgetopt()\fP does not recognize an option character, it prints an
+error message to stderr, stores the character in \fIoptopt\fP, and
+returns `?'.  The calling program may prevent the error message by
+setting \fIopterr\fP to 0.
+.PP
+The
+.B getopt_long()
+function works like
+.B getopt()
+except that it also accepts long options, started out by two dashes.
+Long option names may be abbreviated if the abbreviation is
+unique or is an exact match for some defined option.  A long option 
+may take a parameter, of the form
+.B --arg=param
+or
+.BR "--arg param" .
+.PP
+.I longopts
+is a pointer to the first element of an array of
+.B struct option
+declared in
+.B <getopt.h>
+as
+.nf
+.sp
+.in 10
+struct option {
+.in 14
+const char *name;
+int has_arg;
+int *flag;
+int val;
+.in 10
+};
+.fi
+.PP
+The meanings of the different fields are:
+.TP
+.I name
+is the name of the long option.
+.TP
+.I has_arg
+is:
+\fBno_argument\fP (or 0) if the option does not take an argument,
+\fBrequired_argument\fP (or 1) if the option requires an argument, or
+\fBoptional_argument\fP (or 2) if the option takes an optional argument.
+.TP
+.I flag
+specifies how results are returned for a long option.  If \fIflag\fP
+is \fBNULL\fP, then \fBgetopt_long()\fP returns \fIval\fP.  (For
+example, the calling program may set \fIval\fP to the equivalent short
+option character.)  Otherwise, \fBgetopt_long()\fP returns 0, and
+\fIflag\fP points to a variable which is set to \fIval\fP if the
+option is found, but left unchanged if the option is not found.
+.TP
+\fIval\fP 
+is the value to return, or to load into the variable pointed
+to by \fIflag\fP.
+.PP
+The last element of the array has to be filled with zeroes.
+.PP
+If \fIlongindex\fP is not \fBNULL\fP, it
+points to a variable which is set to the index of the long option relative to
+.IR longopts .
+.PP
+\fBgetopt_long_only()\fP is like \fBgetopt_long()\fP, but `-' as well 
+as `--' can indicate a long option.  If an option that starts with `-'
+(not `--') doesn't match a long option, but does match a short option,
+it is parsed as a short option instead.  
+.SH "RETURN VALUE"
+The
+.B getopt()
+function returns the option character if the option was found
+successfully, `:' if there was a missing parameter for one of the
+options, `?' for an unknown option character, or \fBEOF\fP 
+for the end of the option list.
+.PP
+\fBgetopt_long()\fP and \fBgetopt_long_only()\fP also return the option
+character when a short option is recognized.  For a long option, they
+return \fIval\fP if \fIflag\fP is \fBNULL\fP, and 0 otherwise.  Error
+and EOF returns are the same as for \fBgetopt()\fP, plus `?' for an
+ambiguous match or an extraneous parameter.
+.SH "ENVIRONMENT VARIABLES"
+.TP
+.SM
+.B POSIXLY_CORRECT
+If this is set, then option processing stops as soon as a non-option 
+argument is encountered.
+.SH "EXAMPLE"
+The following example program, from the source code, illustrates the
+use of
+.BR getopt_long()
+with most of its features.
+.nf
+.sp
+#include <stdio.h>
+
+int
+main (argc, argv)
+     int argc;
+     char **argv;
+{
+  int c;
+  int digit_optind = 0;
+
+  while (1)
+    {
+      int this_option_optind = optind ? optind : 1;
+      int option_index = 0;
+      static struct option long_options[] =
+      {
+        {"add", 1, 0, 0},
+        {"append", 0, 0, 0},
+        {"delete", 1, 0, 0},
+        {"verbose", 0, 0, 0},
+        {"create", 1, 0, 'c'},
+        {"file", 1, 0, 0},
+        {0, 0, 0, 0}
+      };
+
+      c = getopt_long (argc, argv, "abc:d:012",
+		       long_options, &option_index);
+      if (c == -1)
+	break;
+
+      switch (c)
+        {
+        case 0:
+          printf ("option %s", long_options[option_index].name);
+          if (optarg)
+            printf (" with arg %s", optarg);
+          printf ("\\n");
+          break;
+
+        case '0':
+        case '1':
+        case '2':
+          if (digit_optind != 0 && digit_optind != this_option_optind)
+            printf ("digits occur in two different argv-elements.\\n");
+          digit_optind = this_option_optind;
+          printf ("option %c\\n", c);
+          break;
+
+        case 'a':
+          printf ("option a\\n");
+          break;
+
+        case 'b':
+          printf ("option b\\n");
+          break;
+
+        case 'c':
+          printf ("option c with value `%s'\\n", optarg);
+          break;
+
+        case 'd':
+          printf ("option d with value `%s'\\n", optarg);
+          break;
+
+        case '?':
+          break;
+
+        default:
+          printf ("?? getopt returned character code 0%o ??\\n", c);
+        }
+    }
+
+  if (optind < argc)
+    {
+      printf ("non-option ARGV-elements: ");
+      while (optind < argc)
+      printf ("%s ", argv[optind++]);
+      printf ("\\n");
+    }
+
+  exit (0);
+}
+.fi
+.SH "BUGS"
+This manpage is confusing.
+.SH "CONFORMING TO"
+.TP
+\fBgetopt()\fP:
+POSIX.1, provided the environment variable POSIXLY_CORRECT is set.
+Otherwise, the elements of \fIargv\fP aren't really const, because we
+permute them.  We pretend they're const in the prototype to be
+compatible with other systems.
+
diff --git a/src/common/compat_getpass.c b/src/common/compat_getpass.c
index 8db74db..f0b09e9 100644
--- a/src/common/compat_getpass.c
+++ b/src/common/compat_getpass.c
@@ -6,6 +6,35 @@
 #include "compat_getpass.h"
 
 #ifdef _WIN32
+#include <conio.h>
+#else
+#include <stdio.h>
+#include <termios.h>
+#include <unistd.h>
+
+int _getch(void)
+{
+	struct termios old, mute;
+	int c;
+
+	tcgetattr(STDIN_FILENO, &old);
+	mute = old;
+	mute.c_lflag &= ~(ICANON|ECHO);
+
+	if (0 != tcsetattr(STDIN_FILENO, TCSANOW, &mute)) {
+		/* XXX an error happened */
+		/* We prefer to print the password, i.e. ignore the error,
+		 * rather than to deny the service, i.e. return something like '\0' */
+	}
+
+	c = getchar();
+
+	tcsetattr(STDIN_FILENO, TCSANOW, &old);
+
+	return c;
+}
+#endif
+
 char *getpass(const char *prompt)
 {
 	static char buf[128];
@@ -22,7 +51,4 @@ char *getpass(const char *prompt)
 	fputs("\n", stderr);
 	return buf;
 }
-#else
-#error Need getpass implementation
-#endif
 #endif	/* HAVE_GETPASS */
diff --git a/src/common/libpkcs11.c b/src/common/libpkcs11.c
index 35933fe..b22d16d 100644
--- a/src/common/libpkcs11.c
+++ b/src/common/libpkcs11.c
@@ -36,8 +36,10 @@ C_LoadModule(const char *mspec, CK_FUNCTION_LIST_PTR_PTR funcs)
 	mod = calloc(1, sizeof(*mod));
 	mod->_magic = MAGIC;
 
-	if (mspec == NULL)
+	if (mspec == NULL) {
+		free(mod);
 		return NULL;
+	}
 	mod->handle = sc_dlopen(mspec);
 	if (mod->handle == NULL) {
 		fprintf(stderr, "sc_dlopen failed: %s\n", sc_dlerror());
@@ -72,7 +74,7 @@ C_UnloadModule(void *module)
 	if (!mod || mod->_magic != MAGIC)
 		return CKR_ARGUMENTS_BAD;
 
-	if (sc_dlclose(mod->handle) < 0)
+	if (mod->handle != NULL && sc_dlclose(mod->handle) < 0)
 		return CKR_FUNCTION_FAILED;
 
 	memset(mod, 0, sizeof(*mod));
diff --git a/src/common/simclist.c b/src/common/simclist.c
index 9673756..15a66e2 100644
--- a/src/common/simclist.c
+++ b/src/common/simclist.c
@@ -178,6 +178,7 @@ static inline struct list_entry_s *list_findpos(const list_t *restrict l, int po
 #define READ_ERRCHECK(fd, msgbuf, msglen)      do {                                                     \
                                                     if (read(fd, msgbuf, msglen) != msglen) {           \
                                                         /*errno = EPROTO;*/                             \
+                                                        free(buf);                                      \
                                                         return -1;                                      \
                                                     }                                                   \
                                                 } while (0);
@@ -1199,7 +1200,7 @@ int list_dump_filedescriptor(const list_t *restrict l, int fd, size_t *restrict
 int list_restore_filedescriptor(list_t *restrict l, int fd, size_t *restrict len) {
     struct list_dump_header_s header;
     unsigned long cnt;
-    void *buf;
+    void *buf = NULL;
     uint32_t elsize, totreadlen, totmemorylen;
 
     memset(& header, 0, sizeof(header));
diff --git a/src/libopensc/Makefile.am b/src/libopensc/Makefile.am
index 538b167..33bc3e6 100644
--- a/src/libopensc/Makefile.am
+++ b/src/libopensc/Makefile.am
@@ -11,7 +11,7 @@ noinst_HEADERS = cards.h ctbcs.h internal.h esteid.h muscle.h muscle-filesystem.
 	cardctl.h asn1.h log.h \
 	errors.h types.h compression.h itacns.h iso7816.h \
 	authentic.h iasecc.h iasecc-sdo.h sm.h card-sc-hsm.h \
-	pace.h
+	pace.h cwa14890.h user-interface.h cwa-dnie.h
 
 AM_CPPFLAGS = -DOPENSC_CONF_PATH=\"$(sysconfdir)/opensc.conf\" \
 	-I$(top_srcdir)/src
@@ -38,15 +38,17 @@ libopensc_la_SOURCES = \
 	card-incrypto34.c card-piv.c card-muscle.c card-acos5.c \
 	card-asepcos.c card-akis.c card-gemsafeV1.c card-rutoken.c \
 	card-rtecp.c card-westcos.c card-myeid.c card-ias.c \
-	card-javacard.c card-itacns.c card-authentic.c \
+	card-itacns.c card-authentic.c \
 	card-iasecc.c iasecc-sdo.c iasecc-sm.c card-sc-hsm.c \
+	card-dnie.c cwa14890.c cwa-dnie.c user-interface.c \
 	\
 	pkcs15-openpgp.c pkcs15-infocamere.c pkcs15-starcert.c \
 	pkcs15-tcos.c pkcs15-esteid.c pkcs15-postecert.c pkcs15-gemsafeGPK.c \
 	pkcs15-actalis.c pkcs15-atrust-acos.c pkcs15-tccardos.c pkcs15-piv.c \
 	pkcs15-esinit.c pkcs15-westcos.c pkcs15-pteid.c pkcs15-oberthur.c \
 	pkcs15-itacns.c pkcs15-gemsafeV1.c pkcs15-sc-hsm.c \
-	compression.c p15card-helper.c \
+	pkcs15-dnie.c \
+	compression.c p15card-helper.c sm.c \
 	libopensc.exports
 if WIN32
 libopensc_la_SOURCES += $(top_builddir)/win32/versioninfo.rc
diff --git a/src/libopensc/Makefile.in b/src/libopensc/Makefile.in
deleted file mode 100644
index 532a2f7..0000000
--- a/src/libopensc/Makefile.in
+++ /dev/null
@@ -1,832 +0,0 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
- at SET_MAKE@
-
-# Required to build Windows resource file
-
-
-
-VPATH = @srcdir@
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \
-	$(srcdir)/Makefile.in $(srcdir)/libopensc.pc.in \
-	$(top_srcdir)/win32/ltrc.inc
- at WIN32_TRUE@am__append_1 = $(top_builddir)/win32/versioninfo.rc
- at WIN32_TRUE@am__append_2 = -lws2_32
-subdir = src/libopensc
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_pthread.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES = libopensc.pc
-CONFIG_CLEAN_VPATH_FILES =
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
-  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
-  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
-  for p in $$list; do echo "$$p $$p"; done | \
-  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
-  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
-    if (++n[$$2] == $(am__install_max)) \
-      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
-    END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
-  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
-  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(mylibdir)"
-LTLIBRARIES = $(lib_LTLIBRARIES)
-am__DEPENDENCIES_1 =
-libopensc_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
-	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
-	$(top_builddir)/src/pkcs15init/libpkcs15init.la \
-	$(top_builddir)/src/scconf/libscconf.la \
-	$(top_builddir)/src/common/libscdl.la \
-	$(top_builddir)/src/common/libcompat.la $(am__DEPENDENCIES_1)
-am__libopensc_la_SOURCES_DIST = sc.c ctx.c log.c errors.c asn1.c \
-	base64.c sec.c card.c iso7816.c dir.c ef-atr.c padding.c \
-	apdu.c pkcs15.c pkcs15-cert.c pkcs15-data.c pkcs15-pin.c \
-	pkcs15-prkey.c pkcs15-pubkey.c pkcs15-skey.c pkcs15-sec.c \
-	pkcs15-algo.c pkcs15-cache.c pkcs15-syn.c muscle.c \
-	muscle-filesystem.c ctbcs.c reader-ctapi.c reader-pcsc.c \
-	reader-openct.c card-setcos.c card-miocos.c card-flex.c \
-	card-gpk.c card-cardos.c card-tcos.c card-default.c \
-	card-mcrd.c card-starcos.c card-openpgp.c card-jcop.c \
-	card-oberthur.c card-belpic.c card-atrust-acos.c \
-	card-entersafe.c card-epass2003.c card-incrypto34.c card-piv.c \
-	card-muscle.c card-acos5.c card-asepcos.c card-akis.c \
-	card-gemsafeV1.c card-rutoken.c card-rtecp.c card-westcos.c \
-	card-myeid.c card-ias.c card-javacard.c card-itacns.c \
-	card-authentic.c card-iasecc.c iasecc-sdo.c iasecc-sm.c \
-	card-sc-hsm.c pkcs15-openpgp.c pkcs15-infocamere.c \
-	pkcs15-starcert.c pkcs15-tcos.c pkcs15-esteid.c \
-	pkcs15-postecert.c pkcs15-gemsafeGPK.c pkcs15-actalis.c \
-	pkcs15-atrust-acos.c pkcs15-tccardos.c pkcs15-piv.c \
-	pkcs15-esinit.c pkcs15-westcos.c pkcs15-pteid.c \
-	pkcs15-oberthur.c pkcs15-itacns.c pkcs15-gemsafeV1.c \
-	pkcs15-sc-hsm.c compression.c p15card-helper.c \
-	libopensc.exports $(top_builddir)/win32/versioninfo.rc
-am__dirstamp = $(am__leading_dot)dirstamp
- at WIN32_TRUE@am__objects_1 = $(top_builddir)/win32/versioninfo.lo
-am_libopensc_la_OBJECTS = sc.lo ctx.lo log.lo errors.lo asn1.lo \
-	base64.lo sec.lo card.lo iso7816.lo dir.lo ef-atr.lo \
-	padding.lo apdu.lo pkcs15.lo pkcs15-cert.lo pkcs15-data.lo \
-	pkcs15-pin.lo pkcs15-prkey.lo pkcs15-pubkey.lo pkcs15-skey.lo \
-	pkcs15-sec.lo pkcs15-algo.lo pkcs15-cache.lo pkcs15-syn.lo \
-	muscle.lo muscle-filesystem.lo ctbcs.lo reader-ctapi.lo \
-	reader-pcsc.lo reader-openct.lo card-setcos.lo card-miocos.lo \
-	card-flex.lo card-gpk.lo card-cardos.lo card-tcos.lo \
-	card-default.lo card-mcrd.lo card-starcos.lo card-openpgp.lo \
-	card-jcop.lo card-oberthur.lo card-belpic.lo \
-	card-atrust-acos.lo card-entersafe.lo card-epass2003.lo \
-	card-incrypto34.lo card-piv.lo card-muscle.lo card-acos5.lo \
-	card-asepcos.lo card-akis.lo card-gemsafeV1.lo card-rutoken.lo \
-	card-rtecp.lo card-westcos.lo card-myeid.lo card-ias.lo \
-	card-javacard.lo card-itacns.lo card-authentic.lo \
-	card-iasecc.lo iasecc-sdo.lo iasecc-sm.lo card-sc-hsm.lo \
-	pkcs15-openpgp.lo pkcs15-infocamere.lo pkcs15-starcert.lo \
-	pkcs15-tcos.lo pkcs15-esteid.lo pkcs15-postecert.lo \
-	pkcs15-gemsafeGPK.lo pkcs15-actalis.lo pkcs15-atrust-acos.lo \
-	pkcs15-tccardos.lo pkcs15-piv.lo pkcs15-esinit.lo \
-	pkcs15-westcos.lo pkcs15-pteid.lo pkcs15-oberthur.lo \
-	pkcs15-itacns.lo pkcs15-gemsafeV1.lo pkcs15-sc-hsm.lo \
-	compression.lo p15card-helper.lo $(am__objects_1)
-libopensc_la_OBJECTS = $(am_libopensc_la_OBJECTS)
-AM_V_lt = $(am__v_lt_$(V))
-am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
-am__v_lt_0 = --silent
-libopensc_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(libopensc_la_LDFLAGS) $(LDFLAGS) -o $@
-DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
-depcomp = $(SHELL) $(top_srcdir)/depcomp
-am__depfiles_maybe = depfiles
-am__mv = mv -f
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
-	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
-	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
-	$(AM_CFLAGS) $(CFLAGS)
-AM_V_CC = $(am__v_CC_$(V))
-am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
-am__v_CC_0 = @echo "  CC    " $@;
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
-am__v_at_0 = @
-CCLD = $(CC)
-LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CCLD = $(am__v_CCLD_$(V))
-am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
-am__v_CCLD_0 = @echo "  CCLD  " $@;
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo "  GEN   " $@;
-SOURCES = $(libopensc_la_SOURCES)
-DIST_SOURCES = $(am__libopensc_la_SOURCES_DIST)
-DATA = $(mylib_DATA)
-HEADERS = $(noinst_HEADERS)
-ETAGS = etags
-CTAGS = ctags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AR = @AR@
-AS = @AS@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEBUG_FILE = @DEBUG_FILE@
-DEFAULT_PCSC_PROVIDER = @DEFAULT_PCSC_PROVIDER@
-DEFAULT_SM_MODULE = @DEFAULT_SM_MODULE@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DLLTOOL = @DLLTOOL@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-FGREP = @FGREP@
-GIT = @GIT@
-GREP = @GREP@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBOBJS = @LIBOBJS@
-LIBRARY_BITNESS = @LIBRARY_BITNESS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-NM = @NM@
-NMEDIT = @NMEDIT@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OPENCT_CFLAGS = @OPENCT_CFLAGS@
-OPENCT_LIBS = @OPENCT_LIBS@
-OPENSC_LT_AGE = @OPENSC_LT_AGE@
-OPENSC_LT_CURRENT = @OPENSC_LT_CURRENT@
-OPENSC_LT_OLDEST = @OPENSC_LT_OLDEST@
-OPENSC_LT_REVISION = @OPENSC_LT_REVISION@
-OPENSC_VERSION_FIX = @OPENSC_VERSION_FIX@
-OPENSC_VERSION_MAJOR = @OPENSC_VERSION_MAJOR@
-OPENSC_VERSION_MINOR = @OPENSC_VERSION_MINOR@
-OPENSSL_CFLAGS = @OPENSSL_CFLAGS@
-OPENSSL_LIBS = @OPENSSL_LIBS@
-OPTIONAL_OPENCT_CFLAGS = @OPTIONAL_OPENCT_CFLAGS@
-OPTIONAL_OPENCT_LIBS = @OPTIONAL_OPENCT_LIBS@
-OPTIONAL_OPENSSL_CFLAGS = @OPTIONAL_OPENSSL_CFLAGS@
-OPTIONAL_OPENSSL_LIBS = @OPTIONAL_OPENSSL_LIBS@
-OPTIONAL_PCSC_CFLAGS = @OPTIONAL_PCSC_CFLAGS@
-OPTIONAL_READLINE_CFLAGS = @OPTIONAL_READLINE_CFLAGS@
-OPTIONAL_READLINE_LIBS = @OPTIONAL_READLINE_LIBS@
-OPTIONAL_ZLIB_CFLAGS = @OPTIONAL_ZLIB_CFLAGS@
-OPTIONAL_ZLIB_LIBS = @OPTIONAL_ZLIB_LIBS@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PCSC_CFLAGS = @PCSC_CFLAGS@
-PCSC_LIBS = @PCSC_LIBS@
-PKG_CONFIG = @PKG_CONFIG@
-PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
-PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
-PTHREAD_CC = @PTHREAD_CC@
-PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
-PTHREAD_LIBS = @PTHREAD_LIBS@
-RANLIB = @RANLIB@
-RC = @RC@
-READLINE_CFLAGS = @READLINE_CFLAGS@
-READLINE_LIBS = @READLINE_LIBS@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-WIN_LIBPREFIX = @WIN_LIBPREFIX@
-XSLTPROC = @XSLTPROC@
-ZLIB_CFLAGS = @ZLIB_CFLAGS@
-ZLIB_LIBS = @ZLIB_LIBS@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-ax_pthread_config = @ax_pthread_config@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-git = @git@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-pkcs11dir = @pkcs11dir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-xslstylesheetsdir = @xslstylesheetsdir@
-RCCOMPILE = $(RC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS)
-
-LTRCCOMPILE = $(LIBTOOL) --mode=compile --tag=RC $(RCCOMPILE)
-MAINTAINERCLEANFILES = $(srcdir)/Makefile.in
-EXTRA_DIST = Makefile.mak
-lib_LTLIBRARIES = libopensc.la
-noinst_HEADERS = cards.h ctbcs.h internal.h esteid.h muscle.h muscle-filesystem.h \
-	internal-winscard.h p15card-helper.h \
-	opensc.h pkcs15.h \
-	cardctl.h asn1.h log.h \
-	errors.h types.h compression.h itacns.h iso7816.h \
-	authentic.h iasecc.h iasecc-sdo.h sm.h card-sc-hsm.h \
-	pace.h
-
-AM_CPPFLAGS = -DOPENSC_CONF_PATH=\"$(sysconfdir)/opensc.conf\" \
-	-I$(top_srcdir)/src
-
-AM_CFLAGS = $(OPTIONAL_OPENSSL_CFLAGS) $(OPTIONAL_OPENCT_CFLAGS) \
-	$(OPTIONAL_PCSC_CFLAGS) $(OPTIONAL_ZLIB_CFLAGS)
-
-libopensc_la_SOURCES = sc.c ctx.c log.c errors.c asn1.c base64.c sec.c \
-	card.c iso7816.c dir.c ef-atr.c padding.c apdu.c pkcs15.c \
-	pkcs15-cert.c pkcs15-data.c pkcs15-pin.c pkcs15-prkey.c \
-	pkcs15-pubkey.c pkcs15-skey.c pkcs15-sec.c pkcs15-algo.c \
-	pkcs15-cache.c pkcs15-syn.c muscle.c muscle-filesystem.c \
-	ctbcs.c reader-ctapi.c reader-pcsc.c reader-openct.c \
-	card-setcos.c card-miocos.c card-flex.c card-gpk.c \
-	card-cardos.c card-tcos.c card-default.c card-mcrd.c \
-	card-starcos.c card-openpgp.c card-jcop.c card-oberthur.c \
-	card-belpic.c card-atrust-acos.c card-entersafe.c \
-	card-epass2003.c card-incrypto34.c card-piv.c card-muscle.c \
-	card-acos5.c card-asepcos.c card-akis.c card-gemsafeV1.c \
-	card-rutoken.c card-rtecp.c card-westcos.c card-myeid.c \
-	card-ias.c card-javacard.c card-itacns.c card-authentic.c \
-	card-iasecc.c iasecc-sdo.c iasecc-sm.c card-sc-hsm.c \
-	pkcs15-openpgp.c pkcs15-infocamere.c pkcs15-starcert.c \
-	pkcs15-tcos.c pkcs15-esteid.c pkcs15-postecert.c \
-	pkcs15-gemsafeGPK.c pkcs15-actalis.c pkcs15-atrust-acos.c \
-	pkcs15-tccardos.c pkcs15-piv.c pkcs15-esinit.c \
-	pkcs15-westcos.c pkcs15-pteid.c pkcs15-oberthur.c \
-	pkcs15-itacns.c pkcs15-gemsafeV1.c pkcs15-sc-hsm.c \
-	compression.c p15card-helper.c libopensc.exports \
-	$(am__append_1)
-libopensc_la_LIBADD = $(OPTIONAL_OPENSSL_LIBS) $(OPTIONAL_OPENCT_LIBS) \
-	$(OPTIONAL_ZLIB_LIBS) \
-	$(top_builddir)/src/pkcs15init/libpkcs15init.la \
-	$(top_builddir)/src/scconf/libscconf.la \
-	$(top_builddir)/src/common/libscdl.la \
-	$(top_builddir)/src/common/libcompat.la $(am__append_2)
-libopensc_la_LDFLAGS = $(AM_LDFLAGS) \
-	-version-info @OPENSC_LT_CURRENT@:@OPENSC_LT_REVISION@:@OPENSC_LT_AGE@ \
-	-export-symbols "$(srcdir)/libopensc.exports" \
-	-no-undefined
-
-
-# def file required for MS users to build library
- at WIN32_TRUE@mylibdir = $(libdir)
- at WIN32_TRUE@mylib_DATA = .libs/@WIN_LIBPREFIX at opensc-@OPENSC_LT_OLDEST at .dll.def
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .c .lo .o .obj .rc
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am $(top_srcdir)/win32/ltrc.inc $(am__configure_deps)
-	@for dep in $?; do \
-	  case '$(am__configure_deps)' in \
-	    *$$dep*) \
-	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
-	        && { if test -f $@; then exit 0; else break; fi; }; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/libopensc/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --foreign src/libopensc/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-	@case '$?' in \
-	  *config.status*) \
-	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-	esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure:  $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-libopensc.pc: $(top_builddir)/config.status $(srcdir)/libopensc.pc.in
-	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
-install-libLTLIBRARIES: $(lib_LTLIBRARIES)
-	@$(NORMAL_INSTALL)
-	test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)"
-	@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
-	list2=; for p in $$list; do \
-	  if test -f $$p; then \
-	    list2="$$list2 $$p"; \
-	  else :; fi; \
-	done; \
-	test -z "$$list2" || { \
-	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \
-	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \
-	}
-
-uninstall-libLTLIBRARIES:
-	@$(NORMAL_UNINSTALL)
-	@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
-	for p in $$list; do \
-	  $(am__strip_dir) \
-	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \
-	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \
-	done
-
-clean-libLTLIBRARIES:
-	-test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
-	@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
-	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
-	  test "$$dir" != "$$p" || dir=.; \
-	  echo "rm -f \"$${dir}/so_locations\""; \
-	  rm -f "$${dir}/so_locations"; \
-	done
-$(top_builddir)/win32/$(am__dirstamp):
-	@$(MKDIR_P) $(top_builddir)/win32
-	@: > $(top_builddir)/win32/$(am__dirstamp)
-$(top_builddir)/win32/$(DEPDIR)/$(am__dirstamp):
-	@$(MKDIR_P) $(top_builddir)/win32/$(DEPDIR)
-	@: > $(top_builddir)/win32/$(DEPDIR)/$(am__dirstamp)
-$(top_builddir)/win32/versioninfo.lo:  \
-	$(top_builddir)/win32/$(am__dirstamp) \
-	$(top_builddir)/win32/$(DEPDIR)/$(am__dirstamp)
-libopensc.la: $(libopensc_la_OBJECTS) $(libopensc_la_DEPENDENCIES) 
-	$(AM_V_CCLD)$(libopensc_la_LINK) -rpath $(libdir) $(libopensc_la_OBJECTS) $(libopensc_la_LIBADD) $(LIBS)
-
-mostlyclean-compile:
-	-rm -f *.$(OBJEXT)
-	-rm -f $(top_builddir)/win32/versioninfo.$(OBJEXT)
-	-rm -f $(top_builddir)/win32/versioninfo.lo
-
-distclean-compile:
-	-rm -f *.tab.c
-
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/apdu.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/asn1.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/base64.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/card-acos5.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/card-akis.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/card-asepcos.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/card-atrust-acos.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/card-authentic.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/card-belpic.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/card-cardos.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/card-default.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/card-entersafe.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/card-epass2003.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/card-flex.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/card-gemsafeV1.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/card-gpk.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/card-ias.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/card-iasecc.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/card-incrypto34.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/card-itacns.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/card-javacard.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/card-jcop.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/card-mcrd.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/card-miocos.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/card-muscle.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/card-myeid.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/card-oberthur.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/card-openpgp.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/card-piv.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/card-rtecp.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/card-rutoken.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/card-sc-hsm.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/card-setcos.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/card-starcos.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/card-tcos.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/card-westcos.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/card.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/compression.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ctbcs.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ctx.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/dir.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ef-atr.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/errors.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/iasecc-sdo.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/iasecc-sm.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/iso7816.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/log.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/muscle-filesystem.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/muscle.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/p15card-helper.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/padding.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pkcs15-actalis.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pkcs15-algo.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pkcs15-atrust-acos.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pkcs15-cache.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pkcs15-cert.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pkcs15-data.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pkcs15-esinit.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pkcs15-esteid.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pkcs15-gemsafeGPK.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pkcs15-gemsafeV1.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pkcs15-infocamere.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pkcs15-itacns.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pkcs15-oberthur.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pkcs15-openpgp.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pkcs15-pin.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pkcs15-piv.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pkcs15-postecert.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pkcs15-prkey.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pkcs15-pteid.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pkcs15-pubkey.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pkcs15-sc-hsm.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pkcs15-sec.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pkcs15-skey.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pkcs15-starcert.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pkcs15-syn.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pkcs15-tccardos.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pkcs15-tcos.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pkcs15-westcos.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pkcs15.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/reader-ctapi.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/reader-openct.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/reader-pcsc.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/sc.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/sec.Plo at am__quote@
-
-.c.o:
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(COMPILE) -c $<
-
-.c.obj:
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
-
-.c.lo:
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
- at am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $<
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf $(top_builddir)/win32/.libs $(top_builddir)/win32/_libs
-	-rm -rf .libs _libs
-install-mylibDATA: $(mylib_DATA)
-	@$(NORMAL_INSTALL)
-	test -z "$(mylibdir)" || $(MKDIR_P) "$(DESTDIR)$(mylibdir)"
-	@list='$(mylib_DATA)'; test -n "$(mylibdir)" || list=; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(mylibdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(mylibdir)" || exit $$?; \
-	done
-
-uninstall-mylibDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(mylib_DATA)'; test -n "$(mylibdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	test -n "$$files" || exit 0; \
-	echo " ( cd '$(DESTDIR)$(mylibdir)' && rm -f" $$files ")"; \
-	cd "$(DESTDIR)$(mylibdir)" && rm -f $$files
-
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	set x; \
-	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	shift; \
-	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
-	  test -n "$$unique" || unique=$$empty_fix; \
-	  if test $$# -gt 0; then \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      "$$@" $$unique; \
-	  else \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      $$unique; \
-	  fi; \
-	fi
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	test -z "$(CTAGS_ARGS)$$unique" \
-	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$unique
-
-GTAGS:
-	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && $(am__cd) $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) "$$here"
-
-distclean-tags:
-	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d "$(distdir)/$$file"; then \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-	  else \
-	    test -f "$(distdir)/$$file" \
-	    || cp -p $$d/$$file "$(distdir)/$$file" \
-	    || exit 1; \
-	  fi; \
-	done
-check-am: all-am
-check: check-am
-all-am: Makefile $(LTLIBRARIES) $(DATA) $(HEADERS)
-installdirs:
-	for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(mylibdir)"; do \
-	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
-	done
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-	-test -z "$(top_builddir)/win32/$(DEPDIR)/$(am__dirstamp)" || rm -f $(top_builddir)/win32/$(DEPDIR)/$(am__dirstamp)
-	-test -z "$(top_builddir)/win32/$(am__dirstamp)" || rm -f $(top_builddir)/win32/$(am__dirstamp)
-
-maintainer-clean-generic:
-	@echo "This command is intended for maintainers to use"
-	@echo "it deletes files that may require special tools to rebuild."
-	-test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
-clean: clean-am
-
-clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \
-	mostlyclean-am
-
-distclean: distclean-am
-	-rm -rf ./$(DEPDIR)
-	-rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
-	distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am: install-mylibDATA
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am: install-libLTLIBRARIES
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
-	-rm -rf ./$(DEPDIR)
-	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-compile mostlyclean-generic \
-	mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-libLTLIBRARIES uninstall-mylibDATA
-
-.MAKE: install-am install-strip
-
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
-	clean-libLTLIBRARIES clean-libtool ctags distclean \
-	distclean-compile distclean-generic distclean-libtool \
-	distclean-tags distdir dvi dvi-am html html-am info info-am \
-	install install-am install-data install-data-am install-dvi \
-	install-dvi-am install-exec install-exec-am install-html \
-	install-html-am install-info install-info-am \
-	install-libLTLIBRARIES install-man install-mylibDATA \
-	install-pdf install-pdf-am install-ps install-ps-am \
-	install-strip installcheck installcheck-am installdirs \
-	maintainer-clean maintainer-clean-generic mostlyclean \
-	mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
-	pdf pdf-am ps ps-am tags uninstall uninstall-am \
-	uninstall-libLTLIBRARIES uninstall-mylibDATA
-
-
-.rc.lo:
-	$(LTRCCOMPILE) -i "$<" -o "$@"
-
-.rc.o:
-	$(RCCOMPILE) -i "$<" -o "$@"
- at WIN32_TRUE@.libs/@WIN_LIBPREFIX at opensc-@OPENSC_LT_OLDEST at .dll.def:	libopensc.la
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/src/libopensc/Makefile.mak b/src/libopensc/Makefile.mak
index 9902f87..6a004e3 100644
--- a/src/libopensc/Makefile.mak
+++ b/src/libopensc/Makefile.mak
@@ -21,16 +21,17 @@ OBJECTS			= \
 	card-incrypto34.obj card-piv.obj card-muscle.obj card-acos5.obj \
 	card-asepcos.obj card-akis.obj card-gemsafeV1.obj card-rutoken.obj \
 	card-rtecp.obj card-westcos.obj card-myeid.obj card-ias.obj \
-	card-javacard.obj card-itacns.obj card-authentic.obj \
-	card-iasecc.obj iasecc-sdo.obj iasecc-sm.obj \
-	card-sc-hsm.obj \
+	card-itacns.obj card-authentic.obj \
+	card-iasecc.obj iasecc-sdo.obj iasecc-sm.obj cwa-dnie.obj cwa14890.obj \
+	card-sc-hsm.obj card-dnie.obj user-interface.obj \
 	\
 	pkcs15-openpgp.obj pkcs15-infocamere.obj pkcs15-starcert.obj \
 	pkcs15-tcos.obj pkcs15-esteid.obj pkcs15-postecert.obj pkcs15-gemsafeGPK.obj \
 	pkcs15-actalis.obj pkcs15-atrust-acos.obj pkcs15-tccardos.obj pkcs15-piv.obj \
 	pkcs15-esinit.obj pkcs15-westcos.obj pkcs15-pteid.obj pkcs15-oberthur.obj \
 	pkcs15-itacns.obj pkcs15-gemsafeV1.obj pkcs15-sc-hsm.obj \
-	compression.obj p15card-helper.obj \
+	pkcs15-dnie.obj \
+	compression.obj p15card-helper.obj sm.obj \
 	$(TOPDIR)\win32\versioninfo.res
 
 all: $(TOPDIR)\win32\versioninfo.res $(TARGET)
diff --git a/src/libopensc/apdu.c b/src/libopensc/apdu.c
index 4cbd53d..55f13d0 100644
--- a/src/libopensc/apdu.c
+++ b/src/libopensc/apdu.c
@@ -234,95 +234,6 @@ int sc_apdu_set_resp(sc_context_t *ctx, sc_apdu_t *apdu, const u8 *buf,
 	return SC_SUCCESS;
 }
 
-#ifdef ENABLE_SM
-static const struct sc_asn1_entry c_asn1_sm_response[4] = {
-	{ "encryptedData",	SC_ASN1_OCTET_STRING,   SC_ASN1_CTX | 7,        SC_ASN1_OPTIONAL,       NULL, NULL },
-	{ "statusWord",		SC_ASN1_OCTET_STRING,   SC_ASN1_CTX | 0x19,     0,                      NULL, NULL },
-	{ "mac",		SC_ASN1_OCTET_STRING,   SC_ASN1_CTX | 0x0E,     0,                      NULL, NULL },
-	{ NULL, 0, 0, 0, NULL, NULL }
-};
-static int
-sc_sm_parse_answer(struct sc_context *ctx, unsigned char *resp_data, size_t resp_len,
-		struct sm_card_response *out)
-{
-	struct sc_asn1_entry asn1_sm_response[4];
-	unsigned char data[SC_MAX_APDU_BUFFER_SIZE];
-	size_t data_len = sizeof(data);
-	unsigned char status[2] = {0, 0};
-	size_t status_len = sizeof(status);
-	unsigned char mac[8];
-	size_t mac_len = sizeof(mac);
-	int r;
-
-	if (!resp_data || !resp_len || !out)
-		return SC_ERROR_INVALID_ARGUMENTS;
-
-	sc_copy_asn1_entry(c_asn1_sm_response, asn1_sm_response);
-
-	sc_format_asn1_entry(asn1_sm_response + 0, data, &data_len, 0);
-	sc_format_asn1_entry(asn1_sm_response + 1, status, &status_len, 0);
-	sc_format_asn1_entry(asn1_sm_response + 2, mac, &mac_len, 0);
-
-	r = sc_asn1_decode(ctx, asn1_sm_response, resp_data, resp_len, NULL, NULL);
-	if (r)
-		return r;
-
-	if (asn1_sm_response[1].flags & SC_ASN1_PRESENT)   {
-		out->sw1 = status[0];
-		out->sw2 = status[1];
-	}
-
-	if (asn1_sm_response[2].flags & SC_ASN1_PRESENT)   {
-		memcpy(out->mac, mac, mac_len);
-		out->mac_len = mac_len;
-	}
-	/* TODO: to be continued ... */
-
-	return SC_SUCCESS;
-}
-
-/**  parse answer of SM protected APDU returned by APDU or by 'GET RESPONSE'
- *  @param  card 'sc_card' smartcard object
- *  @param  resp_data 'raw data returned by SM protected APDU
- *  @param  resp_len 'length of raw data returned by SM protected APDU
- *  @param  ref_rv 'status word returned by APDU or 'GET RESPONSE' (can be different from status word encoded into SM response date)
- *  @param  apdu 'sc_apdu' object to update
- *  @return SC_SUCCESS on success and an error code otherwise
- */
-static int
-sc_sm_update_apdu_response(struct sc_card *card, unsigned char *resp_data, size_t resp_len, int ref_rv,
-		struct sc_apdu *apdu)
-{
-	struct sm_card_response sm_resp;
-	int r;
-
-	if (!apdu)
-		return SC_ERROR_INVALID_ARGUMENTS;
-	else if (!resp_data || !resp_len)
-		return SC_SUCCESS;
-
-	memset(&sm_resp, 0, sizeof(sm_resp));
-	r = sc_sm_parse_answer(card->ctx, resp_data, resp_len, &sm_resp);
-	if (r)
-		return r;
-	else if (!sm_resp.sw1 && !sm_resp.sw2)
-		return SC_ERROR_INVALID_DATA;
-	else if (ref_rv != sc_check_sw(card, sm_resp.sw1, sm_resp.sw2))
-		return SC_ERROR_INVALID_DATA;
-
-	if (sm_resp.mac_len)   {
-		if (sm_resp.mac_len > sizeof(apdu->mac))
-			return SC_ERROR_INVALID_DATA;
-		memcpy(apdu->mac, sm_resp.mac, sm_resp.mac_len);
-		apdu->mac_len = sm_resp.mac_len;
-	}
-
-	apdu->sw1 = sm_resp.sw1;
-	apdu->sw2 = sm_resp.sw2;
-
-	return SC_SUCCESS;
-}
-#endif
 
 /*********************************************************************/
 /*   higher level APDU transfer handling functions                   */
@@ -354,7 +265,8 @@ sc_sm_update_apdu_response(struct sc_card *card, unsigned char *resp_data, size_
  *  @param  apdu  sc_apdu_t object to check
  *  @return SC_SUCCESS on success and an error code otherwise
  */
-static int sc_check_apdu(sc_card_t *card, const sc_apdu_t *apdu)
+int
+sc_check_apdu(sc_card_t *card, const sc_apdu_t *apdu)
 {
 	if ((apdu->cse & ~SC_APDU_SHORT_MASK) == 0) {
 		/* length check for short APDU    */
@@ -441,7 +353,8 @@ error:
  *  APDU if one of the SC_APDU_CASE_? types is used.
  *  @param  apdu  APDU object
  */
-static void sc_detect_apdu_cse(const sc_card_t *card, sc_apdu_t *apdu)
+static void
+sc_detect_apdu_cse(const sc_card_t *card, sc_apdu_t *apdu)
 {
 	if (apdu->cse == SC_APDU_CASE_2 || apdu->cse == SC_APDU_CASE_3 ||
 	    apdu->cse == SC_APDU_CASE_4) {
@@ -458,48 +371,6 @@ static void sc_detect_apdu_cse(const sc_card_t *card, sc_apdu_t *apdu)
 }
 
 
-#ifdef ENABLE_SM
-static int
-sc_single_sm_transmit(struct sc_card *card, struct sc_apdu *apdu)
-{
-	struct sc_context *ctx  = card->ctx;
-	struct sc_apdu *sm_apdu = NULL;
-	int rv;
-
-	LOG_FUNC_CALLED(ctx);
-	sc_log(ctx, "SM_MODE:%X", card->sm_ctx.sm_mode);
-	if (!card->sm_ctx.ops.get_sm_apdu || !card->sm_ctx.ops.free_sm_apdu)
-		LOG_FUNC_RETURN(ctx, SC_ERROR_NOT_SUPPORTED);
-
-	/* get SM encoded APDU */
-	rv = card->sm_ctx.ops.get_sm_apdu(card, apdu, &sm_apdu);
-	if (rv == SC_ERROR_SM_NOT_APPLIED)   {
-		/* SM wrap of this APDU is ignored by card driver.
-		 * Send plain APDU to the reader driver */
-		rv = card->reader->ops->transmit(card->reader, apdu);
-		LOG_FUNC_RETURN(ctx, rv);
-	}
-	LOG_TEST_RET(ctx, rv, "get SM APDU error");
-
-	/* check if SM APDU is still valid */
-	rv = sc_check_apdu(card, sm_apdu);
-	if (rv < 0)   {
-		card->sm_ctx.ops.free_sm_apdu(card, apdu, &sm_apdu);
-		LOG_TEST_RET(ctx, rv, "cannot validate SM encoded APDU");
-	}
-
-	/* send APDU to the reader driver */
-	rv = card->reader->ops->transmit(card->reader, sm_apdu);
-	LOG_TEST_RET(ctx, rv, "unable to transmit APDU");
-
-	/* decode SM answer and free temporary SM related data */
-	rv = card->sm_ctx.ops.free_sm_apdu(card, apdu, &sm_apdu);
-
-	LOG_FUNC_RETURN(ctx, rv);
-}
-#endif
-
-
 static int
 sc_single_transmit(struct sc_card *card, struct sc_apdu *apdu)
 {
@@ -514,7 +385,7 @@ sc_single_transmit(struct sc_card *card, struct sc_apdu *apdu)
 			apdu->cla, apdu->ins, apdu->p1, apdu->p2, apdu->datalen, apdu->data);
 #ifdef ENABLE_SM
 	if (card->sm_ctx.sm_mode == SM_MODE_TRANSMIT)
-		return sc_single_sm_transmit(card, apdu);
+		return sc_sm_single_transmit(card, apdu);
 #endif
 
 	/* send APDU to the reader driver */
@@ -524,6 +395,7 @@ sc_single_transmit(struct sc_card *card, struct sc_apdu *apdu)
 	LOG_FUNC_RETURN(ctx, rv);
 }
 
+
 static int
 sc_set_le_and_transmit(struct sc_card *card, struct sc_apdu *apdu, size_t olen)
 {
diff --git a/src/libopensc/asn1.c b/src/libopensc/asn1.c
index 447045a..cad459b 100644
--- a/src/libopensc/asn1.c
+++ b/src/libopensc/asn1.c
@@ -209,7 +209,8 @@ static void sc_asn1_print_object_id(const u8 * buf, size_t buflen)
 {
 	struct sc_object_id oid;
 	int i = 0;
-	char sbuf[256];
+	char tmp[12];
+	char sbuf[(sizeof tmp)*SC_MAX_OBJECT_ID_OCTETS];
 
 	if (sc_asn1_decode_object_id(buf, buflen, &oid)) {
 		printf("decode error");
@@ -218,7 +219,6 @@ static void sc_asn1_print_object_id(const u8 * buf, size_t buflen)
 
 	sbuf[0] = 0;
 	for (i = 0; (i < SC_MAX_OBJECT_ID_OCTETS) && (oid.value[i] != -1); i++)   {
-		char tmp[12];
 
 		if (i)
 			strcat(sbuf, ".");
@@ -1001,7 +1001,7 @@ static int asn1_decode_se_info(sc_context_t *ctx, const u8 *obj, size_t objlen,
 	ret = SC_SUCCESS;
 err:
 	if (ret != SC_SUCCESS) {
-		int i;
+		size_t i;
 		for (i = 0; i < idx; i++)
 			if (ses[i])
 				free(ses[i]);
@@ -1016,7 +1016,7 @@ static int asn1_encode_se_info(sc_context_t *ctx,
 		struct sc_pkcs15_sec_env_info **se, size_t se_num,
 		unsigned char **buf, size_t *bufsize, int depth)
 {
-	unsigned char *ptr = NULL, *out = NULL;
+	unsigned char *ptr = NULL, *out = NULL, *p;
 	size_t ptrlen = 0, outlen = 0, idx;
 	int ret;
 
@@ -1038,11 +1038,12 @@ static int asn1_encode_se_info(sc_context_t *ctx,
 		if (ret != SC_SUCCESS)
 			goto err;
 
-		out = (unsigned char *) realloc(out, outlen + ptrlen);
-		if (!out)   {
+		p = (unsigned char *) realloc(out, outlen + ptrlen);
+		if (!p)   {
 			ret = SC_ERROR_OUT_OF_MEMORY;
 			goto err;
 		}
+		out = p;
 		memcpy(out + outlen, ptr, ptrlen);
 		outlen += ptrlen;
 		free(ptr);
diff --git a/src/libopensc/base64.c b/src/libopensc/base64.c
index 1eca786..9152080 100644
--- a/src/libopensc/base64.c
+++ b/src/libopensc/base64.c
@@ -73,7 +73,7 @@ static int from_base64(const char *in, unsigned int *out, int *skip)
 		u8 b;
 		int k = *in;
 		
-		if (k < 0)
+		if (k < 0 || k >= (int)sizeof(bin_table))
 			return -1;
 		if (k == 0 && c == 0)
 			return 0;
diff --git a/src/libopensc/card-authentic.c b/src/libopensc/card-authentic.c
index e5dada0..f5f0e00 100644
--- a/src/libopensc/card-authentic.c
+++ b/src/libopensc/card-authentic.c
@@ -1134,7 +1134,7 @@ authentic_fcp_encode(struct sc_card *card, struct sc_file *file, unsigned char *
 	buf[offs++] = 1;
 	buf[offs++] = file->type == SC_FILE_TYPE_DF ? ISO7816_FILE_TYPE_DF : ISO7816_FILE_TYPE_TRANSPARENT_EF;
 
-	buf[offs++] = ISO7816_TAG_FCP_ID;
+	buf[offs++] = ISO7816_TAG_FCP_FID;
 	buf[offs++] = 2;
 	buf[offs++] = (file->id >> 8) & 0xFF;
 	buf[offs++] = file->id & 0xFF;
@@ -1702,7 +1702,7 @@ static int
 authentic_pin_cmd(struct sc_card *card, struct sc_pin_cmd_data *data, int *tries_left)
 {
 	struct sc_context *ctx = card->ctx;
-	int rv;
+	int rv = SC_ERROR_INTERNAL;
 
 	LOG_FUNC_CALLED(ctx);
 	sc_log(ctx, "PIN-CMD:%X,PIN(type:%X,ret:%i)", data->cmd, data->pin_type, data->pin_reference);
@@ -2284,9 +2284,9 @@ authentic_sm_free_wrapped_apdu(struct sc_card *card, struct sc_apdu *plain, stru
 	}
 
 	if ((*sm_apdu)->data)
-		free((*sm_apdu)->data);
+		free((unsigned char *) (*sm_apdu)->data);
 	if ((*sm_apdu)->resp)
-		free((*sm_apdu)->resp);
+		free((unsigned char *) (*sm_apdu)->resp);
 
 	free(*sm_apdu);
 	*sm_apdu = NULL;
@@ -2337,7 +2337,7 @@ authentic_sm_get_wrapped_apdu(struct sc_card *card, struct sc_apdu *plain, struc
         if (!apdu->data)
 		LOG_FUNC_RETURN(ctx, SC_ERROR_OUT_OF_MEMORY);
 	if (plain->data && plain->datalen)
-		memcpy(apdu->data, plain->data, plain->datalen);
+		memcpy((unsigned char *) apdu->data, plain->data, plain->datalen);
 
         apdu->resp = calloc (1, plain->resplen + 32);
         if (!apdu->resp)
diff --git a/src/libopensc/card-belpic.c b/src/libopensc/card-belpic.c
index 3f7cf44..27a4947 100644
--- a/src/libopensc/card-belpic.c
+++ b/src/libopensc/card-belpic.c
@@ -981,14 +981,12 @@ static int belpic_init(sc_card_t *card)
 static int belpic_select_file(sc_card_t *card,
 			      const sc_path_t *in_path, sc_file_t **file_out)
 {
-	sc_context_t *ctx;
 	sc_apdu_t apdu;
 	u8 pathbuf[SC_MAX_PATH_SIZE], *path = pathbuf;
 	int r, pathlen;
 	sc_file_t *file = NULL;
 
 	assert(card != NULL && in_path != NULL);
-	ctx = card->ctx;
 	memcpy(path, in_path->value, in_path->len);
 	pathlen = in_path->len;
 
diff --git a/src/libopensc/card-cardos.c b/src/libopensc/card-cardos.c
index c5a0af1..52a90d9 100644
--- a/src/libopensc/card-cardos.c
+++ b/src/libopensc/card-cardos.c
@@ -1,6 +1,6 @@
 /*
- * card-cardos.c: Support for Siemens CardOS based cards and tokens
- * 	(for example Aladdin eToken PRO, Eutron CryptoIdentity IT-SEC)
+ * card-cardos.c: Support for CardOS (from Siemens or Atos) based cards and
+ * tokens (for example Aladdin eToken PRO, Eutron CryptoIdentity IT-SEC)
  *
  * Copyright (c) 2005  Nils Larsch <nils at larsch.net>
  * Copyright (C) 2002  Andreas Jellinghaus <aj at dungeon.inka.de>
@@ -54,9 +54,14 @@ static struct sc_atr_table cardos_atrs[] = {
 	{ "3b:f2:18:00:ff:c1:0a:31:fe:55:c8:06:8a", "ff:ff:0f:ff:00:ff:00:ff:ff:00:00:00:00", NULL, SC_CARD_TYPE_CARDOS_M4_2, 0, NULL },
 	/* CardOS 4.4 */
 	{ "3b:d2:18:02:c1:0a:31:fe:58:c8:0d:51", NULL, NULL, SC_CARD_TYPE_CARDOS_M4_4, 0, NULL},
+	/* CardOS v5.0 */
+	{ "3b:d2:18:00:81:31:fe:58:c9:01:14", NULL, NULL, SC_CARD_TYPE_CARDOS_V5_0, 0, NULL},
 	{ NULL, NULL, NULL, 0, 0, NULL }
 };
 
+static unsigned int algorithm_ids_in_tokeninfo[SC_MAX_SUPPORTED_ALGORITHMS];
+static unsigned int algorithm_ids_in_tokeninfo_count=0;
+
 static int cardos_match_card(sc_card_t *card)
 {
 	unsigned char atr[SC_MAX_ATR_SIZE];
@@ -73,6 +78,8 @@ static int cardos_match_card(sc_card_t *card)
 		return 1;
 	if (card->type == SC_CARD_TYPE_CARDOS_M4_4)
 		return 1;
+	if (card->type == SC_CARD_TYPE_CARDOS_V5_0)
+		return 1;
 	if (card->type == SC_CARD_TYPE_CARDOS_M4_2) {
 		int rv;
 		sc_apdu_t apdu;
@@ -107,9 +114,9 @@ static int cardos_match_card(sc_card_t *card)
 		} else if (atr[11] == 0x09) {
 			sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL, "found cardos v4.2b");
 			card->type = SC_CARD_TYPE_CARDOS_M4_2B;
-                } else if (atr[11] >= 0x0B) {
-                        sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL, "found cardos v4.2c or higher");
-                        card->type = SC_CARD_TYPE_CARDOS_M4_2C;
+		} else if (atr[11] >= 0x0B) {
+			sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL, "found cardos v4.2c or higher");
+			card->type = SC_CARD_TYPE_CARDOS_M4_2C;
 		} else {
 			sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL, "found cardos m4.2");
 		}
@@ -180,7 +187,8 @@ static int cardos_init(sc_card_t *card)
 	} else if (card->type == SC_CARD_TYPE_CARDOS_M4_3 
 		|| card->type == SC_CARD_TYPE_CARDOS_M4_2B
 		|| card->type == SC_CARD_TYPE_CARDOS_M4_2C
-		|| card->type == SC_CARD_TYPE_CARDOS_M4_4) {
+		|| card->type == SC_CARD_TYPE_CARDOS_M4_4
+		|| card->type == SC_CARD_TYPE_CARDOS_V5_0) {
 		rsa_2048 = 1;
 		card->caps |= SC_CARD_CAP_APDU_EXT;
 	}
@@ -727,9 +735,8 @@ cardos_set_security_env(sc_card_t *card,
 
 	assert(card != NULL && env != NULL);
 
-	if (!(env->flags & SC_SEC_ENV_KEY_REF_PRESENT)
-	 || env->key_ref_len != 1) {
-		sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL, "No or invalid key reference\n");
+	if (!(env->flags & SC_SEC_ENV_KEY_REF_PRESENT) || env->key_ref_len != 1) {
+		sc_log(card->ctx, "No or invalid key reference\n");
 		return SC_ERROR_INVALID_ARGUMENTS;
 	}
 	key_id = env->key_ref[0];
@@ -764,7 +771,28 @@ cardos_set_security_env(sc_card_t *card,
 	r = sc_check_sw(card, apdu.sw1, apdu.sw2);
 	SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, r, "Card returned error");
 
-	SC_FUNC_RETURN(card->ctx, SC_LOG_DEBUG_NORMAL, r);
+	do   {
+		const struct sc_supported_algo_info* algorithm_info = env->supported_algos;
+		int i=0;
+		int algorithm_id_count = 0;
+
+		for(i=0;i<SC_MAX_SUPPORTED_ALGORITHMS;++i)  {
+			struct sc_supported_algo_info alg = algorithm_info[i];
+
+			if(alg.operations & SC_PKCS15_ALGO_OP_COMPUTE_SIGNATURE)  {
+				unsigned int algorithm_id = alg.algo_ref;
+
+				sc_log(card->ctx, "is signature");
+				sc_log(card->ctx, "Adding ID %d at index %d", algorithm_id, algorithm_id_count);
+				algorithm_ids_in_tokeninfo[algorithm_id_count++] = algorithm_id;
+			}
+			sc_log(card->ctx, "reference=%d, mechanism=%d, operations=%d, algo_ref=%d",
+					alg.reference, alg.mechanism, alg.operations, alg.algo_ref);
+		}
+		algorithm_ids_in_tokeninfo_count = algorithm_id_count;
+	} while (0);
+
+	LOG_FUNC_RETURN(card->ctx, r);
 }
 
 /*
@@ -807,71 +835,104 @@ cardos_compute_signature(sc_card_t *card, const u8 *data, size_t datalen,
 	u8     buf[SC_MAX_APDU_BUFFER_SIZE];
 	size_t buf_len = sizeof(buf), tmp_len = buf_len;
 	sc_context_t *ctx;
+	int do_rsa_pure_sig = 0;
+	int do_rsa_sig = 0;
+
 
-	assert(card != NULL && data != NULL && out != NULL);	
+	assert(card != NULL && data != NULL && out != NULL);
 	ctx = card->ctx;
 	SC_FUNC_CALLED(ctx, SC_LOG_DEBUG_VERBOSE);
 
 	if (datalen > SC_MAX_APDU_BUFFER_SIZE)
-		SC_FUNC_RETURN(card->ctx, SC_LOG_DEBUG_VERBOSE, SC_ERROR_INVALID_ARGUMENTS);
+		LOG_FUNC_RETURN(ctx, SC_ERROR_INVALID_ARGUMENTS);
 	if (outlen < datalen)
-		SC_FUNC_RETURN(card->ctx, SC_LOG_DEBUG_VERBOSE, SC_ERROR_BUFFER_TOO_SMALL);
+		LOG_FUNC_RETURN(ctx, SC_ERROR_BUFFER_TOO_SMALL);
 	outlen = datalen;
 
-	/* XXX As we don't know what operations are allowed with a
-	 * certain key, let's try RSA_PURE etc. and see which operation
-	 * succeeds (this is not really beautiful, but currently the
-	 * only way I see) -- Nils
+	/* There are two ways to create a signature, depending on the way,
+	 * the key was created: RSA_SIG and RSA_PURE_SIG.
+	 * We can use the following reasoning, to determine the correct operation:
+	 * 1. We check for several caps flags (as set in card->caps), to pervent generating
+	 *    invalid signatures with duplicated hash prefixes with some cards
+	 * 2. Use the information from AlgorithmInfo of the TokenInfo file.
+	 *    This information is parsed in set_security_env and stored in a static variable.
+	 *    The problem is, that that information is only available for the whole token and not
+	      for a specific key, so if both operations are present, we can only do trial and error
 	 *
-	 * We also check for several caps flags here to pervent generating
-	 * invalid signatures with duplicated hash prefixes with some cards
+	 * The Algorithm IDs for RSA_SIG are 0x86 and 0x88, those for RSA_PURE_SIG 0x8c and 0x8a
+	 * (According to http://www.opensc-project.org/pipermail/opensc-devel/2010-September/014912.html
+	 *   and www.crysys.hu/infsec/M40_Manual_E_2001_10.pdf)
 	 */
 
-        if (card->caps & SC_CARD_CAP_ONLY_RAW_HASH_STRIPPED)
-            sc_debug(ctx, SC_LOG_DEBUG_NORMAL, "Forcing RAW_HASH_STRIPPED\n");        	 
-        if (card->caps & SC_CARD_CAP_ONLY_RAW_HASH)
-            sc_debug(ctx, SC_LOG_DEBUG_NORMAL, "Forcing RAW_HASH\n");
+	if (card->caps & SC_CARD_CAP_ONLY_RAW_HASH_STRIPPED){
+		sc_log(ctx, "Forcing RAW_HASH_STRIPPED");
+		do_rsa_sig = 1;
+	}
+	else if (card->caps & SC_CARD_CAP_ONLY_RAW_HASH){
+		sc_log(ctx, "Forcing RAW_HASH");
+		do_rsa_sig = 1;
+	}
+	else  {
+		/* check the the algorithmIDs from the AlgorithmInfo */
+		size_t i;
+		for(i=0; i<algorithm_ids_in_tokeninfo_count;++i){
+			unsigned int id = algorithm_ids_in_tokeninfo[i];
+			if(id == 0x86 || id == 0x88)
+				do_rsa_sig = 1;
+			else if(id == 0x8C || id == 0x8A)
+				do_rsa_pure_sig = 1;
+		}
+	}
+
+	/* check if any operation was selected */
+	if(do_rsa_sig == 0 && do_rsa_pure_sig == 0)  {
+		/* no operation selected. we just have to try both, for the lack of any better reasoning */
+		sc_log(ctx, "I was unable to determine, whether this key can be used with RSA_SIG or RSA_PURE_SIG. I will just try both.");
+		do_rsa_sig = 1;
+		do_rsa_pure_sig = 1;
+	}
 
-	if (!(card->caps & (SC_CARD_CAP_ONLY_RAW_HASH_STRIPPED | SC_CARD_CAP_ONLY_RAW_HASH))) {
-		sc_debug(ctx, SC_LOG_DEBUG_NORMAL, "trying RSA_PURE_SIG (padded DigestInfo)\n");
+	if(do_rsa_pure_sig == 1){
+		sc_log(ctx, "trying RSA_PURE_SIG (padded DigestInfo)");
 		r = do_compute_signature(card, data, datalen, out, outlen);
 		if (r >= SC_SUCCESS)
-			SC_FUNC_RETURN(ctx, SC_LOG_DEBUG_VERBOSE, r);
-	}		
-		
-	sc_debug(ctx, SC_LOG_DEBUG_NORMAL, "trying RSA_SIG (just the DigestInfo)\n");
-	/* remove padding: first try pkcs1 bt01 padding */
-	r = sc_pkcs1_strip_01_padding(data, datalen, buf, &tmp_len);
-	if (r != SC_SUCCESS) {
-		const u8 *p = data;
-		/* no pkcs1 bt01 padding => let's try zero padding
-		 * This can only work if the data tbs doesn't have a
-		 * leading 0 byte.  */
-		tmp_len = buf_len;
-		while (*p == 0 && tmp_len != 0) {
-			++p;
-			--tmp_len;
-		}
-		memcpy(buf, p, tmp_len);
+			LOG_FUNC_RETURN(ctx, r);
 	}
 
-	if (!(card->caps & (SC_CARD_CAP_ONLY_RAW_HASH_STRIPPED | SC_CARD_CAP_ONLY_RAW_HASH)) || card->caps & SC_CARD_CAP_ONLY_RAW_HASH ) {
-		sc_debug(ctx, SC_LOG_DEBUG_NORMAL, "trying to sign raw hash value with prefix\n");	
-		r = do_compute_signature(card, buf, tmp_len, out, outlen);
-		if (r >= SC_SUCCESS)	
-			SC_FUNC_RETURN(ctx, SC_LOG_DEBUG_VERBOSE, r);
+	if(do_rsa_sig == 1){
+		sc_log(ctx, "trying RSA_SIG (just the DigestInfo)");
+		/* remove padding: first try pkcs1 bt01 padding */
+		r = sc_pkcs1_strip_01_padding(ctx, data, datalen, buf, &tmp_len);
+		if (r != SC_SUCCESS) {
+			const u8 *p = data;
+			/* no pkcs1 bt01 padding => let's try zero padding
+			 * This can only work if the data tbs doesn't have a
+			 * leading 0 byte.  */
+			tmp_len = buf_len;
+			while (*p == 0 && tmp_len != 0) {
+				++p;
+				--tmp_len;
+			}
+			memcpy(buf, p, tmp_len);
+		}
+		if (!(card->caps & (SC_CARD_CAP_ONLY_RAW_HASH_STRIPPED | SC_CARD_CAP_ONLY_RAW_HASH)) || card->caps & SC_CARD_CAP_ONLY_RAW_HASH ) {
+			sc_log(ctx, "trying to sign raw hash value with prefix");
+			r = do_compute_signature(card, buf, tmp_len, out, outlen);
+			if (r >= SC_SUCCESS)
+				LOG_FUNC_RETURN(ctx, r);
+		}
+		if (card->caps & SC_CARD_CAP_ONLY_RAW_HASH) {
+			sc_log(ctx, "Failed to sign raw hash value with prefix when forcing");
+			LOG_FUNC_RETURN(ctx, SC_ERROR_INVALID_ARGUMENTS);
+		}
+		sc_log(ctx, "trying to sign stripped raw hash value (card is responsible for prefix)");
+		r = sc_pkcs1_strip_digest_info_prefix(NULL,buf,tmp_len,buf,&buf_len);
+		if (r != SC_SUCCESS)
+			LOG_FUNC_RETURN(ctx, r);
+		return do_compute_signature(card, buf, buf_len, out, outlen);
 	}
 
-	if (card->caps & SC_CARD_CAP_ONLY_RAW_HASH) {
-	    sc_debug(ctx, SC_LOG_DEBUG_NORMAL, "Failed to sign raw hash value with prefix when forcing\n");
-	    SC_FUNC_RETURN(ctx, SC_LOG_DEBUG_VERBOSE, SC_ERROR_INVALID_ARGUMENTS);
-	}
-	   
-	sc_debug(ctx, SC_LOG_DEBUG_NORMAL, "trying to sign stripped raw hash value (card is responsible for prefix)\n");
-	r = sc_pkcs1_strip_digest_info_prefix(NULL,buf,tmp_len,buf,&buf_len);
-	if (r != SC_SUCCESS)
-		SC_FUNC_RETURN(ctx, SC_LOG_DEBUG_VERBOSE, r);
-	return do_compute_signature(card, buf, buf_len, out, outlen);
+	LOG_FUNC_RETURN(ctx, SC_ERROR_INTERNAL);
 }
 
 static int
@@ -1102,21 +1163,35 @@ cardos_card_ctl(sc_card_t *card, unsigned long cmd, void *ptr)
  * Unfortunately, it doesn't seem to work without this flag :-/
  */
 static int
-cardos_pin_cmd(sc_card_t *card, struct sc_pin_cmd_data *data,
+cardos_pin_cmd(struct sc_card *card, struct sc_pin_cmd_data *data,
 		 int *tries_left)
 {
+	struct sc_context *ctx = card->ctx;
+	int rv;
+
+	LOG_FUNC_CALLED(card->ctx);
+
 	data->flags |= SC_PIN_CMD_NEED_PADDING;
 	data->pin_reference |= 0x80;
+
+	sc_log(ctx, "PIN_CMD(cmd:%i, ref:%i)", data->cmd, data->pin_reference);
+	sc_log(ctx, "PIN1(max:%i, min:%i)", data->pin1.max_length, data->pin1.min_length);
+	sc_log(ctx, "PIN2(max:%i, min:%i)", data->pin2.max_length, data->pin2.min_length);
+
 	/* FIXME: the following values depend on what pin length was
 	 * used when creating the BS objects */
 	if (data->pin1.max_length == 0)
 		data->pin1.max_length = 8;
 	if (data->pin2.max_length == 0)
 		data->pin2.max_length = 8;
-	return iso_ops->pin_cmd(card, data, tries_left);
+
+	rv = iso_ops->pin_cmd(card, data, tries_left);
+	LOG_FUNC_RETURN(ctx, rv);
 }
 
-static int cardos_logout(sc_card_t *card)
+
+static int
+cardos_logout(sc_card_t *card)
 {
 	if (card->type == SC_CARD_TYPE_CARDOS_M4_01 ||
 	    card->type == SC_CARD_TYPE_CARDOS_M4_2) {
diff --git a/src/libopensc/card-default.c b/src/libopensc/card-default.c
index 7e8974d..b550156 100644
--- a/src/libopensc/card-default.c
+++ b/src/libopensc/card-default.c
@@ -32,83 +32,22 @@ static struct sc_card_driver default_drv = {
 	NULL, 0, NULL
 };
 
-static int default_match_card(sc_card_t *card)
+
+static int
+default_match_card(struct sc_card *card)
 {
 	return 1;		/* always match */
 }
 
-static int autodetect_class(sc_card_t *card)
+static int
+default_init(struct sc_card *card)
 {
-	int classes[] = { 0x00, 0xC0, 0xB0, 0xA0 };
-	int class_count = sizeof(classes)/sizeof(int);
-	u8 rbuf[SC_MAX_APDU_BUFFER_SIZE];
-	sc_apdu_t apdu;
-	int i, r;
-
-	sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL, "autodetecting CLA byte\n");
-	for (i = 0; i < class_count; i++) {
-		sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL, "trying with 0x%02X\n", classes[i]);
-		memset(&apdu, 0, sizeof(apdu));
-		apdu.cla = classes[i];
-		apdu.cse = SC_APDU_CASE_2_SHORT;
-		apdu.ins = 0xC0;
-		apdu.p1 = apdu.p2 = 0;
-		apdu.datalen = 0;
-		apdu.lc = 0;
-		apdu.le = 256;
-		apdu.resp = rbuf;
-		apdu.resplen = sizeof(rbuf);
-		r = sc_transmit_apdu(card, &apdu);
-		SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, r, "APDU transmit failed");
-		if (apdu.sw1 == 0x6E)
-			continue;
-		if (apdu.sw1 == 0x90 && apdu.sw2 == 0x00)
-			break;
-		if (apdu.sw1 == 0x61)
-			break;
-		sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL,
-			"got strange SWs: 0x%02X 0x%02X\n", apdu.sw1, apdu.sw2);
-		break;
-	}
-	if (i == class_count)
-		return -1;
-	card->cla = classes[i];
-	sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL,
-		"detected CLA byte as 0x%02X\n", card->cla);
-	if (apdu.resplen < 2) {
-		sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL,
-			"SELECT FILE returned %d bytes\n", apdu.resplen);
-		return SC_SUCCESS;
-	}
-	if (rbuf[0] == 0x6F) {
-		sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL,
-		    "SELECT FILE seems to behave according to ISO 7816-4\n");
-		return SC_SUCCESS;
-	}
-	if (rbuf[0] == 0x00 && rbuf[1] == 0x00) {
-		struct sc_card_driver *drv;
-		sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL,
-		    "SELECT FILE seems to return Schlumberger 'flex stuff\n");
-		drv = sc_get_cryptoflex_driver();
-		card->ops->select_file = drv->ops->select_file;
-		return SC_SUCCESS;
-	}
-	return SC_SUCCESS;
-}
+	LOG_FUNC_CALLED(card->ctx);
 
-static int default_init(sc_card_t *card)
-{
-	int r;
-	
 	card->name = "Unsupported card";
 	card->drv_data = NULL;
-	r = autodetect_class(card);
-	if (r) {
-		sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL, "unable to determine the right class byte\n");
-		return SC_ERROR_INVALID_CARD;
-	}
 
-	return SC_SUCCESS;
+	LOG_FUNC_RETURN(card->ctx, SC_SUCCESS);
 }
 
 static struct sc_card_driver * sc_get_driver(void)
diff --git a/src/libopensc/card-dnie.c b/src/libopensc/card-dnie.c
new file mode 100644
index 0000000..d61e607
--- /dev/null
+++ b/src/libopensc/card-dnie.c
@@ -0,0 +1,2179 @@
+/**
+ * card-dnie.c: Support for Spanish DNI electronico (DNIe card).
+ *
+ * Copyright (C) 2010 Juan Antonio Martinez <jonsito at terra.es>
+ *
+ * This work is derived from many sources at OpenSC Project site,
+ * (see references) and the information made public for Spanish 
+ * Direccion General de la Policia y de la Guardia Civil
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+#define __CARD_DNIE_C__
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#ifdef ENABLE_OPENSSL		/* empty file without openssl */
+
+#include <stdlib.h>
+#include <string.h>
+#include <stdarg.h>
+#include <sys/stat.h>
+
+#include "opensc.h"
+#include "cardctl.h"
+#include "internal.h"
+#include "compression.h"
+#include "cwa14890.h"
+#include "cwa-dnie.h"
+#include "user-interface.h"
+
+extern cwa_provider_t *dnie_get_cwa_provider(sc_card_t * card);
+extern int dnie_read_file(
+	sc_card_t * card, 
+	const sc_path_t * path, 
+	sc_file_t ** file, 
+	u8 ** buffer, size_t * length);
+
+#define DNIE_CHIP_NAME "DNIe: Spanish eID card"
+#define DNIE_CHIP_SHORTNAME "dnie"
+#define DNIE_MF_NAME "Master.File"
+
+/* default user consent program (if required) */
+#define USER_CONSENT_CMD "/usr/bin/pinentry"
+
+/**
+ * SW internal apdu response table.
+ *
+ * Override APDU response error codes from iso7816.c to allow 
+ * handling of SM specific error
+ */
+static struct sc_card_error dnie_errors[] = {
+	{0x6688, SC_ERROR_SM, "Cryptographic checksum invalid"},
+	{0x6987, SC_ERROR_SM, "Expected SM Data Object missing"},
+	{0x6988, SC_ERROR_SM, "SM Data Object incorrect"},
+	{0, 0, NULL}
+};
+
+/* 
+ * DNIe ATR info from DGP web page
+ *
+Tag Value Meaning
+TS  0x3B  Direct Convention
+T0  0x7F  Y1=0x07=0111; TA1,TB1 y TC1 present.
+          K=0x0F=1111; 15 historical bytes
+TA1 0x38  FI (Factor de conversión de la tasa de reloj) = 744
+          DI (Factor de ajuste de la tasa de bits) = 12
+          Máximo 8 Mhz.
+TB1 0x00  Vpp (voltaje de programación) no requerido.
+TC1 0x00  No se requiere tiempo de espera adicional.
+H1  0x00  No usado
+H2  0x6A  Datos de preexpedición. Diez bytes con identificación del expedidor.
+H3  0x44  'D'
+H4  0x4E  'N'
+H5  0x49  'I'
+H6  0x65  'e'
+H7  Fabricante de la tecnología Match-on-Card incorporada.
+    0x10  SAGEM
+    0x20  SIEMENS
+H8  0x02  Fabricante del CI: STMicroelectronics.
+H9  0x4C
+H10 0x34  Tipo de CI: 19WL34
+H11 0x01  MSB de la version del SO: 1
+H12 0x1v  LSB de la version del SO: 1v
+H13 Fase del ciclo de vida .
+    0x00  prepersonalización.
+    0x01  personalización.
+    0x03  usuario.
+    0x0F  final.
+H14 0xss
+H15 0xss  Bytes de estado
+
+H13-H15: 0x03 0x90 0x00 user phase: tarjeta operativa
+H13-H15: 0x0F 0x65 0x81 final phase: tarjeta no operativa
+*/
+
+/**
+ * ATR Table list.
+ * OpenDNIe defines two ATR's for user and finalized card state
+ */
+static struct sc_atr_table dnie_atrs[] = {
+	/* TODO: get ATR for uninitalized DNIe */
+	{		/** card activated; normal operation state */
+	 "3B:7F:00:00:00:00:6A:44:4E:49:65:00:00:00:00:00:00:03:90:00",
+	 "FF:FF:00:FF:FF:FF:FF:FF:FF:FF:FF:00:00:00:00:00:00:FF:FF:FF",
+	 DNIE_CHIP_SHORTNAME,
+	 SC_CARD_TYPE_DNIE_USER,
+	 0,
+	 NULL},
+	{		/** card finalized, unusable */
+	 "3B:7F:00:00:00:00:6A:44:4E:49:65:00:00:00:00:00:00:0F:65:81",
+	 "FF:FF:00:FF:FF:FF:FF:FF:FF:FF:FF:00:00:00:00:00:00:FF:FF:FF",
+	 DNIE_CHIP_SHORTNAME,
+	 SC_CARD_TYPE_DNIE_TERMINATED,
+	 0,
+	 NULL},
+	{NULL, NULL, NULL, 0, 0, NULL}
+};
+
+/**
+ * Messages used on user consent procedures
+ */
+const char *user_consent_title="Signature Requested";
+
+#ifdef linux
+const char *user_consent_message="Está a punto de realizar una firma electrónica con su clave de FIRMA del DNI electrónico. ¿Desea permitir esta operación?";
+#else
+const char *user_consent_message="Esta a punto de realizar una firma digital\ncon su clave de FIRMA del DNI electronico.\nDesea permitir esta operacion?";
+#endif
+
+/**
+ * DNIe specific card driver operations
+ */
+static struct sc_card_operations dnie_ops;
+
+/**
+ * Local copy of iso7816 card driver operations
+ */
+static struct sc_card_operations *iso_ops = NULL;
+
+/**
+ * Module definition for OpenDNIe card driver
+ */
+static sc_card_driver_t dnie_driver = {
+	DNIE_CHIP_NAME, /**< Full name for DNIe card driver */
+	DNIE_CHIP_SHORTNAME, /**< Short name for DNIe card driver */
+	&dnie_ops,	/**< pointer to dnie_ops (DNIe card driver operations) */
+	dnie_atrs,	/**< List of card ATR's handled by this driver */
+	0,		/**< (natrs) number of atr's to check for this driver */
+	NULL		/**< (dll) Card driver module (on DNIe is null) */
+};
+
+/************************** card-dnie.c internal functions ****************/
+
+/**
+ * Parse configuration file for dnie parameters.
+ *
+ * DNIe card driver has two main paramaters:
+ * - The name of the user consent Application to be used in Linux. This application shoud be any of pinentry-xxx family
+ * - A flag to indicate if user consent is to be used in this driver. If false, the user won't be prompted for confirmation on signature operations
+ *
+ * @See ../../etc/opensc.conf for details
+ * @param card Pointer to card structure
+ * @param ui_context Pointer to ui_context structure to store data into
+ * @return SC_SUCCESS (should return no errors)
+ *
+ * TODO: Code should be revised in order to store user consent info
+ * in a card-independent way at configuration file
+ */
+#ifdef ENABLE_DNIE_UI
+static int dnie_get_environment(
+	sc_card_t * card, 
+	ui_context_t * ui_context)
+{
+	int i;
+	scconf_block **blocks, *blk;
+	sc_context_t *ctx;
+	/* set default values */
+	ui_context->user_consent_app = USER_CONSENT_CMD;
+	ui_context->user_consent_enabled = 1;
+	/* look for sc block in opensc.conf */
+	ctx = card->ctx;
+	for (i = 0; ctx->conf_blocks[i]; i++) {
+		blocks =
+		    scconf_find_blocks(ctx->conf, ctx->conf_blocks[i],
+				       "card_driver", "dnie");
+		if (!blocks)
+			continue;
+		blk = blocks[0];
+		free(blocks);
+		if (blk == NULL)
+			continue;
+		/* fill private data with configuration parameters */
+		ui_context->user_consent_app =	/* def user consent app is "pinentry" */
+		    (char *)scconf_get_str(blk, "user_consent_app",
+					   USER_CONSENT_CMD);
+		ui_context->user_consent_enabled =	/* user consent is enabled by default */
+		    scconf_get_bool(blk, "user_consent_enabled", 1);
+	}
+	return SC_SUCCESS;
+}
+#endif
+
+/************************** cardctl defined operations *******************/
+
+/** 
+ * Generate a public/private key pair.
+ *
+ * Manual says that generate_keys() is a reserved operation; that is: 
+ * only can be done at DGP offices. But several authors talk about 
+ * this operation is available also outside. So need to test :-)
+ * Notice that write operations are not supported, so we can't use 
+ * created keys to generate and store new certificates into the card.
+ * TODO: copy code from card-jcop.c::jcop_generate_keys()
+ * @param card pointer to card info data
+ * @param data where to store function results
+ * @return SC_SUCCESS if ok, else error code
+ */
+static int dnie_generate_key(sc_card_t * card, void *data)
+{
+	int result = SC_ERROR_NOT_SUPPORTED;
+	if ((card == NULL) || (data == NULL))
+		return SC_ERROR_INVALID_ARGUMENTS;
+	LOG_FUNC_CALLED(card->ctx);
+	/* TODO: write dnie_generate_key() */
+	LOG_FUNC_RETURN(card->ctx, result);
+}
+
+/**
+ * Analyze a buffer looking for provided data pattern.
+ *
+ * Comodity function for dnie_get_info() that searches a byte array
+ * in provided buffer
+ *
+ * @param card pointer to card info data
+ * @param pat data pattern to find in buffer
+ * @param buf where to look for pattern
+ * @param len buffer length
+ * @return retrieved value or NULL if pattern not found
+ * @see dnie_get_info()
+ */
+static char *findPattern(u8 *pat, u8 *buf, size_t len)
+{
+	char *res = NULL;
+	u8 *from = buf;
+	int size = 0;
+	/* Locate pattern. Assume pattern length=6 */
+	for ( from = buf; from < buf+len-6; from++) {
+		if (memcmp(from,pat,6) == 0 ) goto data_found;
+	}
+	/* arriving here means pattern not found */
+	return NULL;
+
+data_found:
+	/* assume length is less than 128 bytes, so is coded in 1 byte */
+	size = 0x000000ff & (int) *(from+6);
+	if ( size == 0 ) return NULL; /* empty data */
+	res = calloc( size+1, sizeof(char) );
+	if ( res == NULL) return NULL; /* calloc() error */
+	memcpy(res,from+7,size);
+	return res;
+}
+
+/**
+ * Retrieve name, surname, and DNIe number.
+ *
+ * This is done by mean of reading and parsing CDF file
+ * at address 3F0050156004
+ * No need to enter pin nor use Secure Channel
+ *
+ * Notice that this is done by mean of a dirty trick: instead
+ * of parsing ASN1 data on EF(CDF), 
+ * we look for desired OID patterns in binary array
+ *
+ * @param card pointer to card info data 
+ * @param data where to store function results (number,name,surname,idesp,version)
+ * @return SC_SUCCESS if ok, else error code
+ */
+static int dnie_get_info(sc_card_t * card, char *data[])
+{
+	sc_file_t *file = NULL;
+        sc_path_t *path = NULL;
+        u8 *buffer = NULL;
+	size_t bufferlen = 0;
+	char *msg = NULL;
+	u8 SerialNumber [] = { 0x06, 0x03, 0x55, 0x04, 0x05, 0x13 };
+	u8 Name [] = { 0x06, 0x03, 0x55, 0x04, 0x04, 0x0C };
+	u8 GivenName [] = { 0x06, 0x03, 0x55, 0x04, 0x2A, 0x0C };
+	int res = SC_ERROR_NOT_SUPPORTED;
+
+        if ((card == NULL) || (data == NULL))
+                return SC_ERROR_INVALID_ARGUMENTS;
+        LOG_FUNC_CALLED(card->ctx);
+
+	/* phase 1: get DNIe number, Name and GivenName */
+
+	/* read EF(CDF) at 3F0050156004 */
+	path = (sc_path_t *) calloc(1, sizeof(sc_path_t));
+	if (!path) {
+		msg = "Cannot allocate path data for EF(CDF) read";
+		res = SC_ERROR_OUT_OF_MEMORY;
+		goto get_info_end;
+	}
+	sc_format_path("3F0050156004", path);
+	res = dnie_read_file(card, path, &file, &buffer, &bufferlen);
+	if (res != SC_SUCCESS) {
+		msg = "Cannot read EF(CDF)";
+		goto get_info_end;
+	}
+	/* locate OID 2.5.4.5 (SerialNumber) - DNIe number*/
+	data[0]= findPattern(SerialNumber,buffer,bufferlen);
+	/* locate OID 2.5.4.4 (Name)         - Apellidos */
+	data[1]= findPattern(Name,buffer,bufferlen);
+	/* locate OID 2.5.4.42 (GivenName)   - Nombre */
+	data[2]= findPattern(GivenName,buffer,bufferlen);
+	if ( ! data[0] || !data[1] || !data[2] ) {
+		res = SC_ERROR_INVALID_DATA;
+		msg = "Cannot retrieve info from EF(CDF)";
+		goto get_info_end;
+        }
+
+	/* phase 2: get IDESP */
+	sc_format_path("3F000006", path);
+	if (file) {
+		sc_file_free(file);
+		file = NULL;
+	}
+	if (buffer) {
+		free(buffer); 
+		buffer=NULL; 
+		bufferlen=0;
+	}
+	res = dnie_read_file(card, path, &file, &buffer, &bufferlen);
+	if (res != SC_SUCCESS) {
+		msg = "Cannot read IDESP EF";
+		data[3]=NULL;
+		goto get_info_ph3;
+	}
+	data[3]=calloc(bufferlen+1,sizeof(char));
+	if ( !data[3] ) {
+		msg = "Cannot allocate memory for IDESP data";
+		res = SC_ERROR_OUT_OF_MEMORY;
+		goto get_info_end;
+	}
+	memcpy(data[3],buffer,bufferlen);
+
+get_info_ph3:
+	/* phase 3: get DNIe software version */
+	sc_format_path("3F002F03", path);
+	if (file) {
+		sc_file_free(file);
+		file = NULL;
+	}
+	if (buffer) {
+		free(buffer); 
+		buffer=NULL; 
+		bufferlen=0;
+	}
+	/* 
+	* Some old DNIe cards seems not to include SW version file,
+ 	* so let this code fail without notice
+ 	*/
+	res = dnie_read_file(card, path, &file, &buffer, &bufferlen);
+	if (res != SC_SUCCESS) {
+		msg = "Cannot read DNIe Version EF";
+		data[4]=NULL;
+		res = SC_SUCCESS; /* let function return successfully */
+		goto get_info_end;
+	}
+	data[4]=calloc(bufferlen+1,sizeof(char));
+	if ( !data[4] ) {
+		msg = "Cannot allocate memory for DNIe Version data";
+		res = SC_ERROR_OUT_OF_MEMORY;
+		goto get_info_end;
+	}
+	memcpy(data[4],buffer,bufferlen);
+
+	/* arriving here means ok */
+	res = SC_SUCCESS;
+	msg = NULL;
+
+get_info_end:
+	if (file) {
+		sc_file_free(file);
+		free(buffer);
+		file = NULL;
+		buffer = NULL;
+		bufferlen = 0;
+	}
+	if (msg)
+		sc_log(card->ctx,msg);
+        LOG_FUNC_RETURN(card->ctx, res);
+}
+
+/**
+ * Retrieve serial number (7 bytes) from card.
+ *
+ * This is done by mean of an special APDU command described
+ * in the DNIe Reference Manual
+ *
+ * @param card pointer to card description
+ * @param serial where to store data retrieved
+ * @return SC_SUCCESS if ok; else error code
+ */
+static int dnie_get_serialnr(sc_card_t * card, sc_serial_number_t * serial)
+{
+	int result;
+	sc_apdu_t apdu;
+	u8 rbuf[SC_MAX_APDU_BUFFER_SIZE];
+	if ((card == NULL) || (card->ctx == NULL) || (serial == NULL))
+		return SC_ERROR_INVALID_ARGUMENTS;
+
+	LOG_FUNC_CALLED(card->ctx);
+	if (card->type != SC_CARD_TYPE_DNIE_USER)
+		return SC_ERROR_NOT_SUPPORTED;
+	/* if serial number is cached, use it */
+	if (card->serialnr.len) {
+		memcpy(serial, &card->serialnr, sizeof(*serial));
+		sc_log(card->ctx, "Serial Number (cached): '%s'",
+		       sc_dump_hex(serial->value, serial->len));
+		LOG_FUNC_RETURN(card->ctx, SC_SUCCESS);
+	}
+	/* not cached, retrieve it by mean of an APDU */
+	sc_format_apdu(card, &apdu, SC_APDU_CASE_2_SHORT, 0xb8, 0x00, 0x00);
+	apdu.cla = 0x90;	/* propietary cmd */
+	apdu.resp = rbuf;
+	apdu.resplen = sizeof(rbuf);
+	/* official driver read 0x11 bytes, but only uses 7. Manual says just 7 */
+	apdu.le = 0x07;
+	apdu.lc = 0;
+	apdu.datalen = 0;
+	/* send apdu */
+	result = dnie_transmit_apdu(card, &apdu);
+	LOG_TEST_RET(card->ctx, result, "APDU transmit failed");
+	if (apdu.sw1 != 0x90 || apdu.sw2 != 0x00)
+		return SC_ERROR_INTERNAL;
+	/* cache serial number */
+	memcpy(card->serialnr.value, apdu.resp, 7 * sizeof(u8));
+	card->serialnr.len = 7 * sizeof(u8);
+	/* TODO: fill Issuer Identification Number data with proper (ATR?) info */
+	/*
+	   card->serialnr.iin.mii=;
+	   card->serialnr.iin.country=;
+	   card->serialnr.iin.issuer_id=;
+	 */
+	/* copy and return serial number */
+	memcpy(serial, &card->serialnr, sizeof(*serial));
+	sc_log(card->ctx, "Serial Number (apdu): '%s'",
+	       sc_dump_hex(serial->value, serial->len));
+	LOG_FUNC_RETURN(card->ctx, SC_SUCCESS);
+}
+
+static void dnie_clear_cache(dnie_private_data_t * data)
+{
+	if (data == NULL) return;
+	if (data->cache != NULL)
+		free(data->cache);
+	data->cache = NULL;
+	data->cachelen = 0;
+}
+
+static inline void init_flags(struct sc_card *card)
+{
+	unsigned long algoflags;
+	/* set up flags according documentation */
+	card->name = DNIE_CHIP_SHORTNAME;
+	card->cla = 0x00;	/* default APDU class (interindustry) */
+	card->caps |= SC_CARD_CAP_RNG;	/* we have a random number generator */
+	card->max_send_size = (255 - 12);	/* manual says 255, but we need 12 extra bytes when encoding */
+	card->max_recv_size = 255;
+
+	algoflags = SC_ALGORITHM_RSA_RAW;	/* RSA support */
+	algoflags |= SC_ALGORITHM_RSA_HASH_NONE;
+	_sc_card_add_rsa_alg(card, 1024, algoflags, 0);
+	_sc_card_add_rsa_alg(card, 2048, algoflags, 0);
+}
+
+/**************************** sc_card_operations **********************/
+
+/* Generic operations */
+
+/**
+ * Check if provided card can be handled by OpenDNIe.
+ *
+ * Called in sc_connect_card().  Must return 1, if the current
+ * card can be handled with this driver, or 0 otherwise.  ATR
+ * field of the sc_card struct is filled in before calling
+ * this function.
+ * do not declare static, as used by pkcs15-dnie module
+ *
+ * @param card Pointer to card structure
+ * @return on card matching 0 if not match; negative return means error
+ */
+int dnie_match_card(struct sc_card *card)
+{
+	int result = 0;
+	int matched = -1;
+	LOG_FUNC_CALLED(card->ctx);
+	matched = _sc_match_atr(card, dnie_atrs, &card->type);
+	result = (matched >= 0) ? 1 : 0;
+	LOG_FUNC_RETURN(card->ctx, result);
+}
+
+/**
+ * OpenDNIe card structures initialization.
+ *
+ * Called when ATR of the inserted card matches an entry in ATR
+ * table.  May return SC_ERROR_INVALID_CARD to indicate that
+ * the card cannot be handled with this driver.
+ *
+ * @param card Pointer to card structure
+ * @return SC_SUCCES if ok; else error code
+ */
+static int dnie_init(struct sc_card *card)
+{
+	int res = SC_SUCCESS;
+	sc_context_t *ctx = card->ctx;
+	cwa_provider_t *provider = NULL;
+
+	LOG_FUNC_CALLED(ctx);
+
+	/* if recognized as terminated DNIe card, return error */
+	if (card->type == SC_CARD_TYPE_DNIE_TERMINATED)
+	    LOG_TEST_RET(card->ctx, SC_ERROR_INVALID_CARD, "DNIe card is terminated.");
+
+	/* create and initialize cwa-dnie provider*/
+	provider = dnie_get_cwa_provider(card);
+	if (!provider) 
+	    LOG_TEST_RET(card->ctx, SC_ERROR_INTERNAL, "Error initializing cwa-dnie provider");
+
+#ifdef ENABLE_SM
+	/** Secure messaging initialization section **/
+	memset(&(card->sm_ctx), 0, sizeof(sm_context_t));
+	card->sm_ctx.ops.get_sm_apdu = NULL;
+	card->sm_ctx.ops.free_sm_apdu = NULL;
+#endif
+
+	init_flags(card);
+
+#ifdef ENABLE_SM
+	res=cwa_create_secure_channel(card,provider,CWA_SM_OFF);
+	LOG_TEST_RET(card->ctx, res, "Failure creating CWA secure channel.");
+#endif
+
+	/* initialize private data */
+	card->drv_data = calloc(1, sizeof(dnie_private_data_t));
+	if (card->drv_data == NULL)
+	    LOG_TEST_RET(card->ctx, SC_ERROR_OUT_OF_MEMORY, "Could not allocate DNIe private data.");
+
+#ifdef ENABLE_DNIE_UI
+	/* read environment from configuration file */
+	res = dnie_get_environment(card, &(GET_DNIE_UI_CTX(card)));
+	if (res != SC_SUCCESS) {
+		free(card->drv_data);
+		LOG_TEST_RET(card->ctx, res, "Failure reading DNIe environment.");
+	}
+#endif
+
+	GET_DNIE_PRIV_DATA(card)->cwa_provider = provider;
+
+	LOG_FUNC_RETURN(card->ctx, res);
+}
+
+/**
+ * De-initialization routine.
+ *
+ * Called when the card object is being freed.  finish() has to
+ * deallocate all possible private data. 
+ *
+ * @param card Pointer to card driver data structure
+ * @return SC_SUCCESS if ok; else error code
+ */
+static int dnie_finish(struct sc_card *card)
+{
+	int result = SC_SUCCESS;
+	LOG_FUNC_CALLED(card->ctx);
+	dnie_clear_cache(GET_DNIE_PRIV_DATA(card));
+#ifdef ENABLE_SM
+	/* disable sm channel if established */
+	result = cwa_create_secure_channel(card, GET_DNIE_PRIV_DATA(card)->cwa_provider, CWA_SM_OFF);
+#endif
+	if (card->drv_data != NULL)
+		free(card->drv_data);
+	LOG_FUNC_RETURN(card->ctx, result);
+}
+
+/* ISO 7816-4 functions */
+
+/**
+ * Convert little-endian data into unsigned long.
+ *
+ * @param pt pointer to little-endian data
+ * @return equivalent long
+ */
+static unsigned long le2ulong(u8 * pt)
+{
+	unsigned long res = 0L;
+	if (pt==NULL) return res;
+	res = (0xff & *(pt + 0)) +
+	    ((0xff & *(pt + 1)) << 8) +
+	    ((0xff & *(pt + 2)) << 16) + ((0xff & *(pt + 3)) << 24);
+	return res;
+}
+
+/**
+ * Uncompress data if in compressed format.
+ *
+ * @param card poiner to sc_card_t structure
+ * @param from buffer to get data from
+ * @param len pointer to buffer length
+ * @return uncompresed or original buffer; len points to new buffer length
+ *        on error return null
+ */
+static u8 *dnie_uncompress(sc_card_t * card, u8 * from, size_t *len)
+{
+	int res = SC_SUCCESS;
+	u8 *upt = from;
+	size_t uncompressed = 0L;
+	size_t compressed = 0L;
+
+#ifdef ENABLE_ZLIB
+	if (!card || !card->ctx || !from || !len)
+		return NULL;
+	LOG_FUNC_CALLED(card->ctx);
+
+	/* if data size not enought for compression header assume uncompressed */
+	if (*len < 8)
+		goto compress_exit;
+	/* evaluate compressed an uncompressed sizes (little endian format) */
+	uncompressed = le2ulong(from);
+	compressed = le2ulong(from + 4);
+	/* if compressed size doesn't match data length assume not compressed */
+	if (compressed != (*len) - 8)
+		goto compress_exit;
+	/* if compressed size greater than uncompressed, assume uncompressed data */
+	if (uncompressed < compressed)
+		goto compress_exit;
+
+	sc_log(card->ctx, "Data seems to be compressed. calling uncompress");
+	/* ok: data seems to be compressed */
+	upt = calloc(uncompressed, sizeof(u8));
+	if (!upt) {
+		sc_log(card->ctx, "alloc() for uncompressed buffer failed");
+		return NULL;
+	}
+	res = sc_decompress(upt,	/* try to uncompress by calling sc_xx routine */
+			    (size_t *) & uncompressed,
+			    from + 8, (size_t) compressed, COMPRESSION_ZLIB);
+	/* TODO: check that returned uncompressed size matches expected */
+	if (res != SC_SUCCESS) {
+		sc_log(card->ctx, "Uncompress() failed or data not compressed");
+		goto compress_exit;	/* assume not need uncompression */
+	}
+	/* Done; update buffer len and return pt to uncompressed data */
+	*len = uncompressed;
+	sc_log(card->ctx, "Compressed data:\n%s\n",
+	       sc_dump_hex(from + 8, compressed));
+	sc_log(card->ctx, "Uncompress() done. Before:'%lu' After: '%lu'",
+	       compressed, uncompressed);
+	sc_log(card->ctx, "Uncompressed data:\n%s\n",
+	       sc_dump_hex(upt, uncompressed));
+ compress_exit:
+
+#endif
+
+	sc_log(card->ctx, "uncompress: returning with%s de-compression ",
+	       (upt == from) ? "out" : "");
+	return upt;
+}
+
+/**
+ * Fill file cache for read_binary() operation.
+ *
+ * Fill a temporary buffer by mean of consecutive calls to read_binary()
+ * until card sends eof
+ *
+ * DNIe card stores user certificates in compressed format. so we need
+ * some way to detect and uncompress on-the-fly compressed files, to
+ * let read_binary() work transparently. 
+ * This is the main goal of this routine: create an in-memory buffer 
+ * for read_binary operation, filling this buffer on first read_binary() 
+ * call, and uncompress data if compression detected. Further 
+ * read_binary() calls then make use of cached data, instead
+ * of accessing the card
+ *
+ * @param card Pointer to card structure
+ * @return SC_SUCCESS if OK; else error code
+ */
+static int dnie_fill_cache(sc_card_t * card)
+{
+	u8 tmp[SC_MAX_APDU_BUFFER_SIZE];
+	sc_apdu_t apdu;
+	size_t count = 0;
+	size_t len = 0;
+	u8 *buffer = NULL;
+	u8 *pt = NULL;
+	sc_context_t *ctx = NULL;
+
+	if (!card || !card->ctx)
+		return SC_ERROR_INVALID_ARGUMENTS;
+	ctx = card->ctx;
+
+	LOG_FUNC_CALLED(ctx);
+
+	/* mark cache empty */
+	dnie_clear_cache(GET_DNIE_PRIV_DATA(card));
+
+	/* initialize apdu */
+	sc_format_apdu(card, &apdu, SC_APDU_CASE_2_SHORT, 0xB0, 0x00, 0x00);
+
+	/* try to read_binary while data available but never long than 32767 */
+	count = card->max_recv_size;
+	for (len = 0; len < 0x7fff;) {
+		int r = SC_SUCCESS;
+		/* fill apdu */
+		apdu.p1 = 0xff & (len >> 8);
+		apdu.p2 = 0xff & len;
+		apdu.le = count;
+		apdu.resplen = count;
+		apdu.resp = tmp;
+		/* transmit apdu */
+		r = dnie_transmit_apdu(card, &apdu);
+		if (r != SC_SUCCESS) {
+			if (buffer)
+				free(buffer);
+			sc_log(ctx, "read_binary() APDU transmit failed");
+			LOG_FUNC_RETURN(ctx, r);
+		}
+		if (apdu.resplen == 0) {
+			/* on no data received, check if requested len is longer than
+			   available data in card. If so, ask just for remaining data */
+			r = sc_check_sw(card, apdu.sw1, apdu.sw2);
+			if (r == SC_ERROR_WRONG_LENGTH) {
+				count = 0xff & apdu.sw2;
+				if (count != 0)
+					continue;	/* read again with correct size */
+				goto read_done;	/* no more data to read */
+			}
+			if (r == SC_ERROR_INCORRECT_PARAMETERS)
+				goto read_done;
+			LOG_FUNC_RETURN(ctx, r);	/* arriving here means response error */
+		}
+		/* copy received data into buffer. realloc() if not enought space */
+		count = apdu.resplen;
+		buffer = realloc(buffer, len + count);
+		if (!buffer)
+			LOG_FUNC_RETURN(ctx, SC_ERROR_OUT_OF_MEMORY);
+		memcpy(buffer + len, apdu.resp, count);
+		len += count;
+		if (count != card->max_recv_size)
+			goto read_done;
+	}
+
+ read_done:
+	/* no more data to read: check if data is compressed */
+	pt = dnie_uncompress(card, buffer, &len);
+	if (pt == NULL) {
+		sc_log(ctx, "Uncompress proccess failed");
+		if (buffer)
+			free(buffer);
+		LOG_FUNC_RETURN(ctx, SC_ERROR_INTERNAL);
+	}
+	if (pt != buffer)
+		if (buffer)
+			free(buffer);
+
+	/* ok: as final step, set correct cache data into dnie_priv structures */
+	GET_DNIE_PRIV_DATA(card)->cache = pt;
+	GET_DNIE_PRIV_DATA(card)->cachelen = len;
+	sc_log(ctx, "fill_cache() done. length '%d' bytes", len);
+	LOG_FUNC_RETURN(ctx,len);
+}
+
+/**
+ * OpenDNIe implementation of read_binary().
+ *
+ * Reads a binary stream from card by mean of READ BINARY iso command
+ * Creates and handle a cache to allow data uncompression
+ *
+ * @param card pointer to sc_card_t structure
+ * @param idx offset from card file to ask data for
+ * @param buf where to store readed data. must be non null
+ * @param count number of bytes to read
+ * @param flags. not used
+ * @return number of bytes readed, 0 on EOF, error code on error
+ */
+static int dnie_read_binary(struct sc_card *card,
+			    unsigned int idx,
+			    u8 * buf, size_t count, unsigned long flags)
+{
+	int res = 0;
+	sc_context_t *ctx = NULL;
+	/* preliminary checks */
+	if (!card || !card->ctx || !buf || (count <= 0))
+		return SC_ERROR_INVALID_ARGUMENTS;
+	ctx = card->ctx;
+
+	LOG_FUNC_CALLED(ctx);
+	if (idx == 0 || GET_DNIE_PRIV_DATA(card)->cache == NULL) {
+		/* on first block or no cache, try to fill */
+		res = dnie_fill_cache(card);
+		if (res < 0) {
+			sc_log(ctx,
+			       "Cannot fill cache. using iso_read_binary()");
+			return iso_ops->read_binary(card, idx, buf, count,
+						    flags);
+		}
+	}
+	if (idx >= GET_DNIE_PRIV_DATA(card)->cachelen)
+		return 0;	/* at eof */
+	res = MIN(count, GET_DNIE_PRIV_DATA(card)->cachelen - idx);	/* eval how many bytes to read */
+	memcpy(buf, GET_DNIE_PRIV_DATA(card)->cache + idx, res);	/* copy data from buffer */
+	sc_log(ctx, "dnie_read_binary() '%d' bytes", res);
+	LOG_FUNC_RETURN(ctx, res);
+}
+
+/**
+ * Invalidate pathfile cache.
+ *
+ * Marks cache path invalid, so next select_file() will traverse
+ * the entire card filesystem
+ *
+ * @param card pointer to card structure
+ */
+static inline void dnie_invalidate_path(sc_card_t *card) {
+	memset(&card->cache, 0, sizeof(card->cache));
+        card->cache.valid = 0;
+}
+
+/**
+ * Tracks current path to avoid extra filesystem operation.
+ *
+ * Tracks selected DF's to let card know their current working directory
+ *
+ * TODO: use common opensc file cache structure and functions
+ *
+ * @param card card pointer structure
+ * @param file current DF to be cached
+ */
+static int dnie_cache_path(sc_card_t *card, struct sc_file *file)
+{
+	u8 path[] = {0x00,0x00};
+	LOG_FUNC_CALLED(card->ctx);
+        path[0]=(u8) (0xff & (file->id >>8));
+        path[1]=(u8) (0xff & (file->id >>0));
+        if (path[0]==0x3F && path[1]==0x00) {
+        	/* if absolute path, just copy data */
+		dnie_invalidate_path(card);
+		card->cache.current_path.value[0]=path[0];
+		card->cache.current_path.value[1]=path[1];
+		card->cache.current_path.len=2;
+	} else {
+		/* if relative path add to current */
+		size_t curlen=card->cache.current_path.len;
+		card->cache.current_path.value[curlen+0] =path[0];
+		card->cache.current_path.value[curlen+1] =path[1];
+		card->cache.current_path.len += 2;
+	}
+	card->cache.current_path.type=SC_PATH_TYPE_PATH;
+        card->cache.valid=1;
+	LOG_FUNC_RETURN(card->ctx,SC_SUCCESS);
+}
+
+/**
+ * Check proposed path against current (cached) one.
+ *
+ * This code compares proposed path to stored one, evaluating required path
+ * ID to be selected if finally select_file() is required,
+ *
+ * @param card card pointer structure
+ * @param pathptr pointer to proposed path
+ * @param pathlen len of proposed path
+ * @param need_info set if process_fci is needed
+ * @return 1 on match; 0 on fail
+ */
+static int dnie_check_path(sc_card_t *card, u8 **pathptr, size_t *pathlen,
+                      int need_info)
+{
+        u8 *cacheptr = card->cache.current_path.value;
+        size_t cachelen = card->cache.current_path.len;
+        size_t len = *pathlen;
+        u8 *ptr = *pathptr;
+        int hit=1;
+        if (card->cache.valid==0) hit = 0; /* no valid cache */
+        if (cachelen < 2)         hit = 0; /* no data cached */
+        if (len < 2)              hit = 0; /* no proposed path */
+        if (len<cachelen)         hit = 0; /* length missmatch */
+        if (memcmp(ptr,cacheptr,cachelen)!=0 ) hit = 0; /* path missmatch */
+        if (!hit) return 0;
+	*pathptr = ptr + cachelen;
+        *pathlen = len - cachelen;
+	if (need_info) return 0;
+	return 1;
+}
+
+/**
+ * OpenDNIe implementation of Select_File().
+ *
+ * Select_file: Does the equivalent of SELECT FILE command specified
+ *   in ISO7816-4. Stores information about the selected file to
+ *   <file>, if not NULL.
+ *
+ * SELECT file in DNIe is a bit tricky: 
+ * - only handles some types: 
+ * -- <strong>SC_PATH_TYPE_FILE_ID</strong> 2-byte long file ID
+ * -- <strong>SC_PATH_TYPE_DF_NAME</strong> named DF's
+ * -- <strong>SC_PATH_TYPE_PARENT</strong>  jump to parent DF of current EF/DF - undocummented in DNIe manual
+ * -- other file types are marked as unssupported
+ *
+ * - Also MF must be addressed by their Name, not their ID
+ * So some magic is needed:
+ * - split <strong>SC_PATH_TYPE_PATH</strong> into several calls to each 2-byte data file ID
+ * - Translate initial file id 3F00 to be DF name 'Master.File'
+ *
+ * Also, Response always handle a proprietary FCI info, so
+ * need to handle it manually via dnie_process_fci()
+ *
+ * @param card Pointer to Card Structure
+ * @param in_path Path ID to be selected
+ * @param file_out where to store fci information
+ * @return SC_SUCCESS if ok; else error code
+ */
+static int dnie_select_file(struct sc_card *card,
+			    const struct sc_path *in_path,
+			    struct sc_file **file_out)
+{
+
+	u8 buf[SC_MAX_APDU_BUFFER_SIZE];
+	u8 pathbuf[SC_MAX_PATH_SIZE];
+	char pbuf[SC_MAX_PATH_STRING_SIZE];
+        u8 *path = pathbuf;
+	size_t pathlen;
+        int cached=0;
+
+	sc_file_t *file = NULL;
+	int res = SC_SUCCESS;
+	sc_apdu_t apdu;
+	sc_context_t *ctx = NULL;
+
+	if (!card || !card->ctx || !in_path)
+		return SC_ERROR_INVALID_ARGUMENTS;
+	ctx = card->ctx;
+
+	LOG_FUNC_CALLED(ctx);
+
+	memcpy(path, in_path->value, in_path->len);
+	pathlen = in_path->len;
+
+	sc_format_apdu(card, &apdu, SC_APDU_CASE_4_SHORT, 0xA4, 0, 0);
+
+	switch (in_path->type) {
+	case SC_PATH_TYPE_FILE_ID:
+		/* pathlen must be of len=2 */
+		/* 
+		 * gscriptor shows that DNIe also handles 
+		 * Select child DF (p1=1) and Select EF (p1=2),
+		 * but we'll use P1=0 as general solution for all cases
+		 *
+		 * According iso7816-4 sect 7.1.1  pathlen==0 implies
+		 * select MF, but this case is not supported by DNIe
+		 */
+		if (pathlen != 2)
+			LOG_FUNC_RETURN(ctx, SC_ERROR_INVALID_ARGUMENTS);
+		sc_log(ctx, "select_file(ID): %s", sc_dump_hex(path, pathlen));
+		apdu.p1 = 0;
+		break;
+	case SC_PATH_TYPE_DF_NAME:
+		sc_log(ctx, "select_file(NAME): %s",
+		       sc_dump_hex(path, pathlen));
+		apdu.p1 = 4;
+		break;
+	case SC_PATH_TYPE_PATH:
+		if ((pathlen & 1) != 0) /* not divisible by 2 */
+			LOG_FUNC_RETURN(ctx, SC_ERROR_INVALID_ARGUMENTS);
+
+                /* evaluate current patch from cache */
+		res = sc_path_print(pbuf, sizeof(pbuf), &card->cache.current_path);
+        	if (res != SC_SUCCESS) pbuf[0] = '\0';
+		sc_log(ctx, "select_file(PATH): requested:%s cached:%s",
+		       sc_dump_hex(path, pathlen),pbuf);
+
+                /* check pathfile cache 
+		* cached returns true if:
+		* - path matches cache
+		* - path starts with cache
+		* remember that only DF's are cached
+		*/
+		cached = dnie_check_path(card, &path, &pathlen, file_out != NULL);
+                if (pathlen == 0) {
+			/* request to select_file on current df */
+			sc_log(ctx,"Cache hit: already on cached DF");
+			LOG_FUNC_RETURN(ctx,SC_SUCCESS);
+		}
+
+		/* convert to SC_PATH_TYPE_FILE_ID */
+		res = sc_lock(card); /* lock to ensure path traversal */
+		LOG_TEST_RET(ctx, res, "sc_lock() failed");
+		while (pathlen > 0) {
+			sc_path_t tmpp;
+			if ( memcmp(path, "\x3F\x00", 2) == 0) {
+				/* if MF, use their name as path */
+				tmpp.type = SC_PATH_TYPE_DF_NAME;
+				strcpy((char *)tmpp.value, DNIE_MF_NAME);
+				tmpp.len = sizeof(DNIE_MF_NAME) - 1;
+			} else {
+				/* else use 2-byte file id */
+				tmpp.type = SC_PATH_TYPE_FILE_ID;
+				tmpp.value[0] = path[0];
+				tmpp.value[1] = path[1];
+				tmpp.len = 2;
+			}
+			/* recursively call to select_file */
+			res = card->ops->select_file(card, &tmpp, file_out);
+			if (res != SC_SUCCESS) {
+				sc_unlock(card);
+				sc_log(ctx,"select_file(PATH) failed");
+				LOG_FUNC_RETURN(ctx,res);
+			}
+			pathlen -= 2;
+			path += 2;
+		}
+		sc_unlock(card);
+		LOG_FUNC_RETURN(ctx, SC_SUCCESS);
+		break;
+	case SC_PATH_TYPE_FROM_CURRENT:
+		LOG_FUNC_RETURN(ctx, SC_ERROR_NO_CARD_SUPPORT);
+	case SC_PATH_TYPE_PARENT:
+		/* Hey!! Manual doesn't says anything on this, but
+		 * gscriptor shows that this type is supported
+		 */
+		sc_log(ctx, "select_file(PARENT)");
+		/* according iso7816-4 sect 7.1.1 shouldn't have any parameters */
+		if (pathlen != 0)
+			LOG_FUNC_RETURN(ctx, SC_ERROR_INVALID_ARGUMENTS);
+		apdu.cse= SC_APDU_CASE_1;
+		apdu.p1 = 3;
+		break;
+	default:
+		LOG_FUNC_RETURN(ctx, SC_ERROR_INVALID_ARGUMENTS);
+		break;
+	}
+	/* Arriving here means need to compose and send apdu */
+	apdu.p2 = 0;		/* first record, return FCI */
+	apdu.lc = pathlen;
+	apdu.data = path;
+	apdu.datalen = pathlen;
+
+	if (file_out != NULL) {
+		apdu.resp = buf;
+		apdu.resplen = sizeof(buf);
+		apdu.le = card->max_recv_size > 0 ? card->max_recv_size : 256;
+	} else {
+		apdu.cse =
+		    (apdu.lc == 0) ? SC_APDU_CASE_1 : SC_APDU_CASE_3_SHORT;
+	}
+	res = dnie_transmit_apdu(card, &apdu);
+	if (res!=SC_SUCCESS) 
+		dnie_invalidate_path(card); /* failed: invalidate cache */
+	LOG_TEST_RET(ctx, res, "SelectFile() APDU transmit failed");
+	if (file_out == NULL) {
+		if (apdu.sw1 == 0x61)
+			SC_FUNC_RETURN(ctx, SC_LOG_DEBUG_VERBOSE, 0);
+		SC_FUNC_RETURN(ctx, SC_LOG_DEBUG_VERBOSE,
+			       sc_check_sw(card, apdu.sw1, apdu.sw2));
+	}
+
+	/* analyze response. if FCI, try to parse */
+	res = sc_check_sw(card, apdu.sw1, apdu.sw2);
+	LOG_TEST_RET(ctx, res, "SelectFile() check_sw failed");
+	if (apdu.resplen < 2)
+		LOG_FUNC_RETURN(ctx, SC_ERROR_UNKNOWN_DATA_RECEIVED);
+	if (apdu.resp[0] == 0x00)	/* proprietary coding */
+		LOG_FUNC_RETURN(ctx, SC_ERROR_UNKNOWN_DATA_RECEIVED);
+
+	/* finally process FCI response */
+	file = sc_file_new();
+	if (file == NULL)
+		LOG_FUNC_RETURN(ctx, SC_ERROR_OUT_OF_MEMORY);
+	if (!card->ops->process_fci) {	/* hey! DNIe MUST have process_fci */
+		if (file)
+			sc_file_free(file);
+		LOG_FUNC_RETURN(ctx, SC_ERROR_INTERNAL);
+	}
+	res = card->ops->process_fci(card, file, apdu.resp + 2, apdu.resp[1]);
+	*file_out = file;
+        /* if file is a DF, store it into DF cache */
+	if (file->type==SC_FILE_TYPE_DF) dnie_cache_path(card,file);
+	/* as last step clear data cache and return */
+	dnie_clear_cache(GET_DNIE_PRIV_DATA(card));
+	LOG_FUNC_RETURN(ctx, res);
+}
+
+/**
+ * OpenDNIe implementation of Get_Challenge() command.
+ *
+ * Get challenge: retrieve 8 random bytes for any further use
+ * (eg perform an external authenticate command)
+ *
+ * NOTE:
+ * Official driver redundantly sets SM before execute this command
+ * No reason to do it, as is needed to do SM handshake...
+ * Also: official driver reads in blocks of 20 bytes. 
+ * Why? Manual and iso-7816-4 states that only 8 bytes 
+ * are required... so we will obbey Manual
+ *
+ * @param card Pointer to card Structure
+ * @param rnd Where to store challenge
+ * @param len requested challenge length
+ * @return SC_SUCCESS if OK; else error code
+ */
+static int dnie_get_challenge(struct sc_card *card, u8 * rnd, size_t len)
+{
+	sc_apdu_t apdu;
+	u8 buf[10];
+	int result = SC_SUCCESS;
+	if ((card == NULL) || (card->ctx == NULL))
+		return SC_ERROR_INVALID_ARGUMENTS;
+	LOG_FUNC_CALLED(card->ctx);
+	/* just a copy of iso7816::get_challenge() but call dnie_check_sw to
+	 * look for extra error codes */
+	if ( (rnd==NULL) || (len==0) ) {
+		/* no valid buffer provided */
+		result = SC_ERROR_INVALID_ARGUMENTS;
+		goto dnie_get_challenge_error;
+	}
+	sc_format_apdu(card, &apdu, SC_APDU_CASE_2_SHORT, 0x84, 0x00, 0x00);
+	apdu.le = 8;
+	apdu.resp = buf;
+	apdu.resplen = 8;	/* include SW's */
+
+	/* 
+	* As DNIe cannot handle other data length than 0x08 and 0x14, 
+	* perform consecutive reads of 8 bytes until retrieve requested length
+	*/
+	while (len > 0) {
+		size_t n = len > 8 ? 8 : len;
+		result = dnie_transmit_apdu(card, &apdu);
+		LOG_TEST_RET(card->ctx, result, "APDU transmit failed");
+		if (apdu.resplen != 8) {
+			result = sc_check_sw(card, apdu.sw1, apdu.sw2);
+			goto dnie_get_challenge_error;
+		}
+		memcpy(rnd, apdu.resp, n);
+		len -= n;
+		rnd += n;
+	}
+	result = SC_SUCCESS;
+ dnie_get_challenge_error:
+	LOG_FUNC_RETURN(card->ctx, result);
+}
+
+/*
+ * ISO 7816-8 functions
+ */
+
+/**
+ * OpenDNIe implementation of Logout() card_driver function.
+ *
+ *  Resets all access rights that were gained. Disable SM
+ *
+ * @param card Pointer to Card Structure
+ * @return SC_SUCCESS if OK; else error code
+ */
+static int dnie_logout(struct sc_card *card)
+{
+	int result = SC_SUCCESS;
+
+	if ((card == NULL) || (card->ctx == NULL))
+		return SC_ERROR_INVALID_ARGUMENTS;
+	LOG_FUNC_CALLED(card->ctx);
+#ifdef ENABLE_SM
+	/* disable and free any sm channel related data */
+	result =
+	    cwa_create_secure_channel(card, GET_DNIE_PRIV_DATA(card)->cwa_provider, CWA_SM_OFF);
+#endif
+	/* TODO: _logout() see comments.txt on what to do here */
+	LOG_FUNC_RETURN(card->ctx, result);
+}
+
+/**
+ * Implementation of Set_Security_Environment card driver command.
+ *
+ * Initializes the security environment on card
+ *   according to <env>, and stores the environment as <se_num> on the
+ *   card. If se_num <= 0, the environment will not be stored. 
+ *   Notice that OpenDNIe SM handling requires a buffer longer than 
+ *   provided for this command; so special apdu is used in cwa code
+ *
+ * @param card Pointer to card driver Structure
+ * @param env Pointer to security environment data
+ * @param num: which Card Security environment to use (ignored in OpenDNIe)
+ * @return SC_SUCCESS if OK; else error code
+ *
+ * TODO: mix these code with SM set_security_env operations
+ *
+ */
+static int dnie_set_security_env(struct sc_card *card,
+				 const struct sc_security_env *env, int se_num)
+{
+	sc_apdu_t apdu;
+	u8 sbuf[SC_MAX_APDU_BUFFER_SIZE];	/* buffer to compose apdu data */
+	u8 *p = sbuf;
+	int result = SC_SUCCESS;
+	if ((card == NULL) || (card->ctx == NULL) || (env == NULL))
+		return SC_ERROR_INVALID_ARGUMENTS;
+	LOG_FUNC_CALLED(card->ctx);
+	if (se_num!=0) {
+		sc_log(card->ctx,"DNIe cannot handle several security envs");
+		LOG_FUNC_RETURN(card->ctx,SC_ERROR_INVALID_ARGUMENTS);
+	}
+
+	/* Secure Channel should be on here, if not means an error */
+	/*
+	result =
+	    cwa_create_secure_channel(card, dnie_priv.provider, CWA_SM_WARM);
+	LOG_TEST_RET(card->ctx, result,
+		     "set_security_env(); Cannot establish SM");
+	*/
+
+	/* check for algorithms */
+	if (env->flags & SC_SEC_ENV_ALG_REF_PRESENT) {
+		sc_log(card->ctx, "checking algorithms");
+		switch (env->algorithm) {
+		case SC_ALGORITHM_RSA:
+			result = SC_SUCCESS;
+			break;
+		case SC_ALGORITHM_DSA:
+		case SC_ALGORITHM_EC:
+		case SC_ALGORITHM_GOSTR3410:
+		default:
+			result = SC_ERROR_NOT_SUPPORTED;
+			break;
+		}
+		LOG_TEST_RET(card->ctx, result, "Unsupported algorithm");
+		if ((env->algorithm_flags & SC_ALGORITHM_RSA_HASH_SHA1) == 0) {
+			result = SC_ERROR_NOT_SUPPORTED;
+			/* TODO: 
+			 * Manual says that only RSA with SHA1 is supported, but found
+			 * some docs where states that SHA256 is also handled
+			 */
+		}
+		LOG_TEST_RET(card->ctx, result,
+			     "Only RSA with SHA1 is supported");
+		/* ok: insert algorithm reference into buffer */
+		*p++ = 0x80;	/* algorithm reference tag */
+		*p++ = 0x01;	/* len */
+		*p++ = env->algorithm_ref & 0xff;	/* val */
+	}
+
+	/* check for key references */
+	if (env->flags & SC_SEC_ENV_KEY_REF_PRESENT) {
+		sc_log(card->ctx, "checking key references");
+		if (env->key_ref_len != 1) {
+			sc_log(card->ctx, "Null or invalid key ID reference");
+			result = SC_ERROR_INVALID_ARGUMENTS;
+		}
+		sc_log(card->ctx, "Using key reference '%s'",
+		       sc_dump_hex(env->key_ref, env->key_ref_len));
+		/* ok: insert key reference into buffer */
+		/* notice that DNIe uses same key reference for pubk and privk */
+
+		/* see cwa14890-2 sect B.1 about Control Reference Template Tags */
+		*p++ = 0x84;	/* TODO: make proper detection of 0x83 /0x84 tag usage */
+		*p++ = 0x02;	/* len  */
+		*p++ = 0x01;	/* key ID prefix (MSB byte of keyFile ID) */
+		memcpy(p, env->key_ref, env->key_ref_len);	/* in DNIe key_ref_len=1 */
+		p += env->key_ref_len;
+		/* store key reference into private data */
+		GET_DNIE_PRIV_DATA(card)->rsa_key_ref = 0xff & env->key_ref[0];
+	}
+
+	/* create and format apdu */
+	sc_format_apdu(card, &apdu, SC_APDU_CASE_3_SHORT, 0x22, 0x00, 0x00);
+
+	/* check and perform operation */
+	switch (env->operation) {
+	case SC_SEC_OPERATION_DECIPHER:
+		/* TODO: Manual is unsure about if (de)cipher() is supported */
+		apdu.p1 = 0xC1;
+		apdu.p2 = 0xB8;
+		break;
+	case SC_SEC_OPERATION_SIGN:
+		apdu.p1 = 0x41;	/* SET; internal operation */
+		apdu.p2 = 0xB6;	/* Template for Digital Signature */
+		break;
+	case SC_SEC_OPERATION_AUTHENTICATE:
+		/* TODO: _set_security_env() study diffs on internal/external auth */
+		apdu.p1 = 0x41;	/* SET; internal operation */
+		apdu.p2 = 0xA4;	/* Template for Authenticate */
+		break;
+	default:
+		LOG_FUNC_RETURN(card->ctx, SC_ERROR_INVALID_ARGUMENTS);
+	}
+
+	/* complete apdu contents with buffer data */
+	apdu.data = sbuf;
+	apdu.datalen = p - sbuf;
+	apdu.lc = p - sbuf;
+	apdu.resplen = 0;
+
+	/* Notice that Manual states that DNIE only allows handle of 
+	 * current security environment, so se_num is ignored, and
+	 * store sec env apdu (00 22 F2 se_num) command will not be issued */
+
+	/* send composed apdu and parse result */
+	result = dnie_transmit_apdu(card, &apdu);
+	LOG_TEST_RET(card->ctx, result, "Set Security Environment failed");
+	result = sc_check_sw(card, apdu.sw1, apdu.sw2);
+
+	LOG_FUNC_RETURN(card->ctx, result);
+}
+
+/**
+ * OpenDNIe implementation of Decipher() card driver operation.
+ *
+ * Engages the deciphering operation.  Card will use the
+ * security environment set in a call to set_security_env or
+ * restore_security_env.
+ *
+ * Notice that DNIe manual doesn't say anything about crypt/decrypt
+ * operations. So this code is based on ISO standards and still needs
+ * to be checked
+ *
+ * ADD: seems that DNIe supports a minimal cipher/decipher operation
+ * but restricted to 1024 data chunks . Need more info and tests
+ *
+ * @param card Pointer to Card Driver Structure 
+ * @param crgram cryptogram to be (de)ciphered
+ * @param crgram_len cryptogram length
+ * @param out where to store result
+ * @param outlen length of result buffer
+ * @return SC_SUCCESS if OK; else error code
+ */
+static int dnie_decipher(struct sc_card *card,
+			 const u8 * crgram, size_t crgram_len,
+			 u8 * out, size_t outlen)
+{
+	struct sc_apdu apdu;
+	u8 rbuf[SC_MAX_APDU_BUFFER_SIZE];
+	u8 sbuf[SC_MAX_APDU_BUFFER_SIZE];
+	size_t len;
+	int result = SC_SUCCESS;
+	if ((card == NULL) || (card->ctx == NULL))
+		return SC_ERROR_INVALID_ARGUMENTS;
+	LOG_FUNC_CALLED(card->ctx);
+	if ((crgram == NULL) || (out == NULL) || (crgram_len > 255)) {
+		LOG_FUNC_RETURN(card->ctx, SC_ERROR_INVALID_ARGUMENTS);
+	}
+	/* Secure Channel should be on. Elsewhere an error will be thrown */
+	/*
+	result =
+	    cwa_create_secure_channel(card, dnie_priv.provider, CWA_SM_WARM);
+	LOG_TEST_RET(card->ctx, result, "decipher(); Cannot establish SM");
+	*/
+
+	/* Official driver uses an undocumented proprietary APDU
+	 * (90 74 40 keyID). This code uses standard 00 2A 80 8x one)
+	 * as shown in card-atrust-acos.c and card-jcop.c
+	 */
+	sc_format_apdu(card, &apdu, SC_APDU_CASE_4_SHORT, 0x2A,	/* INS: 0x2A  perform security operation */
+		       0x80,	/* P1: Response is plain value */
+		       0x86	/* P2: 8x: Padding indicator byte followed by cryptogram */
+	    );
+	apdu.resp = rbuf;
+	apdu.resplen = sizeof(rbuf);
+
+	sbuf[0] = 0;		/* padding indicator byte, 0x00 = No further indication */
+	memcpy(sbuf + 1, crgram, crgram_len);
+	apdu.data = sbuf;
+	apdu.lc = crgram_len + 1;
+	apdu.datalen = crgram_len + 1;
+	apdu.le = 256;
+	/* send apdu */
+	result = dnie_transmit_apdu(card, &apdu);
+	LOG_TEST_RET(card->ctx, result, "APDU transmit failed");
+	/* check response */
+	result = sc_check_sw(card, apdu.sw1, apdu.sw2);
+	LOG_TEST_RET(card->ctx, result, "decipher returned error");
+	/* responde ok: fill result data and return */
+	len = apdu.resplen > outlen ? outlen : apdu.resplen;
+	memcpy(out, apdu.resp, len);
+	LOG_FUNC_RETURN(card->ctx, result);
+}
+
+/**
+ * OpenDNIe implementation of Compute_Signature() card driver operation.
+ *
+ * Generates a digital signature on the card.  
+ * This function handles the process of hash + sign 
+ * with previously selected keys (by mean of set_security environment
+ *
+ * AS iso7816 and DNIe Manual states there are 3 ways to perform 
+ * this operation:
+ *
+ * - (plaintext) Hash on plaintext + sign
+ * - (partial hash) Send a externally evaluated pkcs1 hash + sign
+ * - (hash) directly sign a given sha1 hash
+ *
+ * So the code analyze incoming data, decide which method to be used
+ * and applies
+ *
+ * @param card pointer to sc_card_t structure
+ * @param data data to be hased/signed
+ * @param datalen length of provided data
+ * @param out buffer to store results into
+ * @param outlen available space in result buffer
+ * @return
+ *  - Positive value: Size of data stored in out buffer when no error
+ *  - Negative value: error code
+ */
+static int dnie_compute_signature(struct sc_card *card,
+				  const u8 * data, size_t datalen,
+				  u8 * out, size_t outlen)
+{
+	int result = SC_SUCCESS;
+	struct sc_apdu apdu;
+	u8 sbuf[SC_MAX_APDU_BUFFER_SIZE];	/* to compose digest+hash data */
+	size_t sbuflen = 0;
+	u8 rbuf[SC_MAX_APDU_BUFFER_SIZE];	/* to receive sign response */
+
+	/* some preliminar checks */
+	if ((card == NULL) || (card->ctx == NULL))
+		return SC_ERROR_INVALID_ARGUMENTS;
+	/* OK: start working */
+	LOG_FUNC_CALLED(card->ctx);
+	/* more checks */
+	if ((data == NULL) || (out == NULL))
+		LOG_FUNC_RETURN(card->ctx, SC_ERROR_INVALID_ARGUMENTS);
+	if (datalen > SC_MAX_APDU_BUFFER_SIZE)	/* should be 256 */
+		LOG_FUNC_RETURN(card->ctx, SC_ERROR_INVALID_ARGUMENTS);
+	if (outlen<256) /* enought space to store 2048 bit response */
+		LOG_FUNC_RETURN(card->ctx, SC_ERROR_INVALID_ARGUMENTS);
+
+#ifdef ENABLE_DNIE_UI
+	/* (Requested by DGP): on signature operation, ask user consent */
+	if (GET_DNIE_PRIV_DATA(card)->rsa_key_ref == 0x02) {	/* TODO: revise key ID handling */
+		result = sc_ask_user_consent(card,user_consent_title,user_consent_message);
+		LOG_TEST_RET(card->ctx, result, "User consent denied");
+	}
+#endif    
+
+	/*
+	   Seems that OpenSC already provides pkcs#1 v1.5 DigestInfo structure 
+	   with pre-calculated hash. So no need to to any Hash calculation, 
+
+	   So just extract 15+20 DigestInfo+Hash info from ASN.1 provided
+	   data and feed them into sign() command
+	 */
+	sc_log(card->ctx,
+	       "Compute signature len: '%d' bytes:\n%s\n============================================================",
+	       datalen, sc_dump_hex(data, datalen));
+	if (datalen != 256) {
+		sc_log(card->ctx, "Expected pkcs#1 v1.5 DigestInfo data");
+		LOG_FUNC_RETURN(card->ctx, SC_ERROR_WRONG_LENGTH);
+	}
+
+	/* try to strip pkcs1 padding */
+	sbuflen = sizeof(sbuf);
+	memset(sbuf, 0, sbuflen);
+	result = sc_pkcs1_strip_01_padding(card->ctx, data, datalen, sbuf, &sbuflen);
+	if (result != SC_SUCCESS) {
+		sc_log(card->ctx, "Provided data is not pkcs#1 padded");
+		/* TODO: study what to do on plain data */
+		LOG_FUNC_RETURN(card->ctx, SC_ERROR_WRONG_PADDING);
+	}
+
+	/*INS: 0x2A  PERFORM SECURITY OPERATION
+	 * P1:  0x9E  Resp: Digital Signature
+	 * P2:  0x9A  Cmd: Input for Digital Signature */
+	sc_format_apdu(card, &apdu, SC_APDU_CASE_4_SHORT, 0x2A, 0x9E, 0x9A);
+	apdu.resp = rbuf;
+	apdu.resplen = sizeof(rbuf);
+	apdu.le = 256;		/* signature response size */
+	apdu.data = sbuf;
+	apdu.lc = sbuflen;	/* 15 SHA1 DigestInfo + 20 SHA1 computed Hash */
+	apdu.datalen = sizeof(sbuf);
+	/* tell card to compute signature */
+	result = dnie_transmit_apdu(card, &apdu);
+	LOG_TEST_RET(card->ctx, result, "compute_signature() failed");
+	/* check response */
+	result = sc_check_sw(card, apdu.sw1, apdu.sw2);
+	LOG_TEST_RET(card->ctx, result, "compute_signature() response error");
+
+	/* ok: copy result from buffer */
+	memcpy(out, apdu.resp, apdu.resplen);
+	/* and return response length */
+	LOG_FUNC_RETURN(card->ctx, apdu.resplen);
+}
+
+/*
+ * ISO 7816-9 functions
+ */
+
+/**
+ * OpenDNIe implementation of List_Files() card driver operation.
+ *
+ * List available files in current DF
+ * This is a dirty and trick implementation:
+ * Just try every ID in current dir
+ *
+ * @param card Pointer to Card Driver structure
+ * @param buff buffer to store result into
+ * @param bufflen size of provided buffer
+ * @return SC_SUCCESS if OK; else error code
+ *
+ * TODO: check for presence of every file ids on a DF is not
+ * practical. Locate a better way to handle, or remove code
+ */
+static int dnie_list_files(sc_card_t * card, u8 * buf, size_t buflen)
+{
+	int res = SC_SUCCESS;
+	int id1 = 0;
+	int id2 = 0;
+	size_t count = 0;
+	u8 data[2];
+	sc_apdu_t apdu;
+	sc_apdu_t back;
+	if (!card || !card->ctx)
+		return SC_ERROR_INVALID_ARGUMENTS;
+
+	LOG_FUNC_CALLED(card->ctx);
+	if (!buf || (buflen < 2))
+		LOG_FUNC_RETURN(card->ctx, SC_ERROR_INVALID_ARGUMENTS);
+
+	/* compose select_file(ID) command */
+	sc_format_apdu(card, &apdu, SC_APDU_CASE_3_SHORT, 0xA4, 0x00, 0x00);
+	apdu.le = 0;
+	apdu.lc = 2;
+	apdu.data = data;
+	apdu.resp = NULL;
+	apdu.datalen = 2;
+	apdu.resplen = 0;
+	/* compose select_file(PARENT) command */
+	sc_format_apdu(card, &back, SC_APDU_CASE_1, 0xA4, 0x03, 0x00);
+	back.le = 0;
+	back.lc = 0;
+	back.data = NULL;
+	back.resp = NULL;
+	back.datalen = 0;
+	back.resplen = 0;
+	/* iterate on every possible ids */
+	for (id1 = 0; id1 < 256; id1++) {
+		for (id2 = 0; id2 < 256; id2++) {
+			if (count >= (buflen - 2)) {
+				sc_log(card->ctx,
+				       "list_files: end of buffer. Listing stopped");
+				LOG_FUNC_RETURN(card->ctx, SC_SUCCESS);
+			}
+			/* according iso several ids are not allowed, so check for it */
+			if ((id1 == 0x3F) && (id2 == 0xFF))
+				continue;	/* generic parent "." DF */
+			if ((id1 == 0x2F) && (id2 == 0x00))
+				continue;	/* RFU see iso 8.2.1.1 */
+			if ((id1 == 0x2F) && (id2 == 0x01))
+				continue;	/* RFU */
+			/* compose and transmit select_file() cmd */
+			data[0] = (u8) (0xff & id1);
+			data[1] = (u8) (0xff & id2);
+			res = dnie_transmit_apdu(card, &apdu);
+			if (res != SC_SUCCESS) {
+				sc_log(card->ctx, "List file '%02X%02X' failed",
+				       id1, id2);
+				/* if file not found, continue; else abort */
+				if (res != SC_ERROR_FILE_NOT_FOUND) 
+					LOG_FUNC_RETURN(card->ctx, res);
+				continue;
+			}
+			/* if file found, process fci to get file type */
+			sc_log(card->ctx, "Found File ID '%02X%02X'", id1, id2);
+			/* store id into buffer */
+			*(buf + count++) = data[0];
+			*(buf + count++) = data[1];
+			/* TODO: 
+			* if found file is a DF go back to parent DF 
+			* to continue search */
+		}
+	}
+	/* arriving here means all done */
+	LOG_FUNC_RETURN(card->ctx, SC_SUCCESS);
+}
+
+/**
+ * Parse APDU results to generate proper error code.
+ *
+ * Traps standard check_sw function to take care on special error codes
+ * for OpenDNIe (mostly related to SM status and operations)
+ *
+ * @param card Pointer to Card driver Structure
+ * @param sw1 SW1 APDU response byte
+ * @param sw2 SW2 APDU response byte
+ * @return SC_SUCCESS if no error; else proper error code
+ */
+static int dnie_check_sw(struct sc_card *card,
+			 unsigned int sw1, unsigned int sw2)
+{
+	int res = SC_SUCCESS;
+	int n = 0;
+	if (!card || !card->ctx)
+		return SC_ERROR_INVALID_ARGUMENTS;
+	LOG_FUNC_CALLED(card->ctx);
+
+	/* check specific dnie errors */
+	for (n = 0; dnie_errors[n].SWs != 0; n++) {
+		if (dnie_errors[n].SWs == ((sw1 << 8) | sw2)) {
+			sc_log(card->ctx, "%s", dnie_errors[n].errorstr);
+			return dnie_errors[n].errorno;
+		}
+	}
+
+	/* arriving here means check for supported iso error codes */
+	res = iso_ops->check_sw(card, sw1, sw2);
+	LOG_FUNC_RETURN(card->ctx, res);
+}
+
+/**
+ * OpenDNIe implementation for Card_Ctl() card driver operation.
+ *
+ * This command provides access to non standard functions provided by
+ * this card driver, as defined in cardctl.h
+ *
+ * @param card Pointer to card driver structure
+ * @param request Operation requested
+ * @param data where to get data/store response
+ * @return SC_SUCCESS if ok; else error code
+ * @see cardctl.h
+ *
+ * TODO: wait for GET_CARD_INFO generic cardctl to be implemented
+ * in opensc and rewrite code according it
+ */
+static int dnie_card_ctl(struct sc_card *card,
+			 unsigned long request, void *data)
+{
+	int result = SC_SUCCESS;
+	if ((card == NULL) || (card->ctx == NULL))
+		return SC_ERROR_INVALID_ARGUMENTS;
+	LOG_FUNC_CALLED(card->ctx);
+	if (data == NULL) {
+		LOG_FUNC_RETURN(card->ctx, SC_ERROR_INVALID_ARGUMENTS);
+	}
+	switch (request) {
+		/* obtain lifecycle status by reading card->type */
+	case SC_CARDCTL_LIFECYCLE_GET:
+		switch (card->type) {
+		case SC_CARD_TYPE_DNIE_ADMIN:
+			result = SC_CARDCTRL_LIFECYCLE_ADMIN;
+			break;
+		case SC_CARD_TYPE_DNIE_USER:
+			result = SC_CARDCTRL_LIFECYCLE_USER;
+			break;
+		case SC_CARD_TYPE_DNIE_BLANK:
+		case SC_CARD_TYPE_DNIE_TERMINATED:
+			result = SC_CARDCTRL_LIFECYCLE_OTHER;
+			break;
+		}
+		*(int *)data = result;
+		LOG_FUNC_RETURN(card->ctx, SC_SUCCESS);
+		/* call card to obtain serial number */
+	case SC_CARDCTL_GET_SERIALNR:
+		result = dnie_get_serialnr(card, (sc_serial_number_t *) data);
+		LOG_FUNC_RETURN(card->ctx, result);
+	case SC_CARDCTL_DNIE_GENERATE_KEY:
+		/* some reports says that this card supports genkey */
+		result = dnie_generate_key(card, data);
+		LOG_FUNC_RETURN(card->ctx, result);
+	case SC_CARDCTL_DNIE_GET_INFO:
+		/* retrieve name, surname and eid number */
+		result = dnie_get_info(card, data);
+		LOG_FUNC_RETURN(card->ctx, result);
+	default:
+		/* default: unsupported function */
+		LOG_FUNC_RETURN(card->ctx, SC_ERROR_NOT_SUPPORTED);
+	}
+}
+
+/**
+ * Read first bytes of an EF to check for compression data.
+ *
+ * FCI info on compressed files provides the length of the compressed
+ * data. When fci returns filetype = 0x24, needs to check if the
+ * file is compressed, and set up properly correct file length, to let
+ * the read_binary() file cache work
+ *
+ * Extract real file length from compressed file is done by mean of
+ * reading 8 first bytes for uncompressed/compressed lenght. 
+ * Lengths are provided as two 4-byte little endian numbers
+ *
+ * Implemented just like a direct read binary apdu bypassing dnie file cache
+ *
+ * @param card sc_card_t structure pointer
+ * @return <0: error code - ==0 not compressed - >0 file size
+ */
+static int dnie_read_header(struct sc_card *card)
+{
+	sc_apdu_t apdu;
+	int r;
+	u8 buf[SC_MAX_APDU_BUFFER_SIZE];
+	unsigned long uncompressed = 0L;
+	unsigned long compressed = 0L;
+	sc_context_t *ctx = NULL;
+
+	if (!card || !card->ctx)
+		return SC_ERROR_INVALID_ARGUMENTS;
+	ctx = card->ctx;
+	LOG_FUNC_CALLED(ctx);
+
+	/* initialize apdu */
+	sc_format_apdu(card, &apdu, SC_APDU_CASE_2_SHORT, 0xB0, 0x00, 0x00);
+	apdu.p1 = 0x00;
+	apdu.p2 = 0x00;
+	apdu.le = 8;		/* read 8 bytes at begining of file */
+	apdu.resplen = SC_MAX_APDU_BUFFER_SIZE;
+	apdu.resp = buf;
+	/* transmit apdu */
+	r = dnie_transmit_apdu(card, &apdu);
+	if (r != SC_SUCCESS) {
+		sc_log(ctx, "read_header() APDU transmit failed");
+		LOG_FUNC_RETURN(ctx, r);
+	}
+	/* check response */
+	if (apdu.resplen != 8)
+		goto header_notcompressed;
+	uncompressed = le2ulong(apdu.resp);
+	compressed = le2ulong(apdu.resp + 4);
+	if (uncompressed < compressed)
+		goto header_notcompressed;
+	if (uncompressed > 32767)
+		goto header_notcompressed;
+	/* ok: assume data is correct */
+	sc_log(ctx, "read_header: uncompressed file size is %lu", uncompressed);
+	return (int)(0x7FFF & uncompressed);
+
+ header_notcompressed:
+	sc_log(ctx, "response doesn't match compressed file header");
+	return 0;
+}
+
+/** 
+ *  Access control list bytes for propietary DNIe FCI response for DF's.
+ *  based in information from official DNIe Driver
+ *  Parsing code based on itacns card driver
+ */
+static int df_acl[] = {		/* to handle DF's */
+	SC_AC_OP_CREATE, SC_AC_OP_DELETE,
+	SC_AC_OP_REHABILITATE, SC_AC_OP_INVALIDATE,
+	-1			/* !hey!, what about 5th byte of FCI info? */
+};
+
+/** 
+ *  Access control list bytes for propietary DNIe FCI response for EF's.
+ *  based in information from official DNIe Driver
+ *  Parsing code based on itacns card driver
+ */
+static int ef_acl[] = {		/* to handle EF's */
+	SC_AC_OP_READ, SC_AC_OP_UPDATE,
+	SC_AC_OP_REHABILITATE, SC_AC_OP_INVALIDATE,
+	-1			/* !hey!, what about 5th byte of FCI info? */
+};
+
+/**
+ * OpenDNIe implementation of Process_FCI() card driver command.
+ *
+ * Parse SelectFile's File Control information.
+ * - First, std iso_parse_fci is called to parse std fci tags
+ * - Then analyze propietary tag according DNIe Manual
+ *
+ * @param card OpenSC card structure pointer
+ * @param file currently selected EF or DF
+ * @param buf received FCI data
+ * @param buflen FCI length
+ * @return SC_SUCCESS if OK; else error code 
+ */
+static int dnie_process_fci(struct sc_card *card,
+			    struct sc_file *file, const u8 * buf, size_t buflen)
+{
+	int res = SC_SUCCESS;
+	int *op = df_acl;
+	int n = 0;
+	sc_context_t *ctx = NULL;
+	if ((card == NULL) || (card->ctx == NULL) || (file == NULL))
+		return SC_ERROR_INVALID_ARGUMENTS;
+	ctx = card->ctx;
+	LOG_FUNC_CALLED(ctx);
+	/* first of all, let iso do the hard work */
+	res = iso_ops->process_fci(card, file, buf, buflen);
+	LOG_TEST_RET(ctx, res, "iso7816_process_fci() failed");
+	/* if tag 0x85 is received, then file->prop_attr_len should be filled
+	 * by sc_file_set_prop_attr() code. So check and set data according manual 
+	 * Note errata at pg 35 of Manual  about DF identifier (should be 0x38) */
+	if (file->prop_attr_len == 0) {	/* no proprietary tag (0x85) received */
+		res = SC_SUCCESS;
+		goto dnie_process_fci_end;
+	}
+	/* at least 10 bytes should be received */
+	if (file->prop_attr_len < 10) {
+		res = SC_ERROR_WRONG_LENGTH;
+		goto dnie_process_fci_end;
+	}
+	/* byte 0 denotes file type */
+	switch (file->prop_attr[0]) {
+	case 0x01:		/* EF for plain files */
+		file->type = SC_FILE_TYPE_WORKING_EF;
+		file->ef_structure = SC_FILE_EF_TRANSPARENT;
+		break;
+	case 0x15:		/* EF for keys: linear variable simple TLV */
+		file->type = SC_FILE_TYPE_WORKING_EF;
+		/* pin file 3F000000 has also this EF type */
+		if ( ( file->prop_attr[3] == 0x00 ) && (file->prop_attr[3] == 0x00 ) ) {
+			sc_log(ctx,"Processing pin EF");
+			break;
+		}
+		/* FCI response for Keys EF returns 3 additional bytes */
+		if (file->prop_attr_len < 13) {
+			sc_log(ctx,
+			       "FCI response len for Keys EF should be 13 bytes");
+			res = SC_ERROR_WRONG_LENGTH;
+			goto dnie_process_fci_end;
+		}
+		break;
+	case 0x24:		/* EF for compressed certificates */
+		file->type = SC_FILE_TYPE_WORKING_EF;
+		file->ef_structure = SC_FILE_EF_TRANSPARENT;
+		/* evaluate real length by reading first 8 bytes from file */
+		res = dnie_read_header(card);
+		/* Hey!, we need pin to read certificates... */
+		if (res == SC_ERROR_SECURITY_STATUS_NOT_SATISFIED)
+			goto dnie_process_fci_end;
+		if (res <= 0) {
+			sc_log(ctx,
+			       "Cannot evaluate uncompressed size. use fci length");
+		} else {
+			sc_log(ctx, "Storing uncompressed size '%d' into fci",
+			       res);
+			file->prop_attr[3] = (u8) ((res >> 8) & 0xff);
+			file->prop_attr[4] = (u8) (res & 0xff);
+		}
+		break;
+	case 0x38:		/* Errata: manual page 35 says wrong 0x34 */
+		file->type = SC_FILE_TYPE_DF;
+		break;
+	default:
+		res = SC_ERROR_UNKNOWN_DATA_RECEIVED;
+		goto dnie_process_fci_end;
+	}
+
+	/* bytes 1 and 2 stores file ID */
+	file->id = ( ( 0xff & (int)file->prop_attr[1] ) << 8 ) | 
+			( 0xff & (int)file->prop_attr[2] ) ;
+
+	/* bytes 3 and 4 states file length */
+	file->size = ( ( 0xff & (int)file->prop_attr[3] ) << 8 ) | 
+			( 0xff & (int)file->prop_attr[4] ) ;
+
+	/* bytes 5 to 9 states security attributes */
+	/* NOTE: 
+	 * seems that these 5 bytes are handled according iso7816-9 sect 8.
+	 * but sadly that each card uses their own bits :-(
+	 * Moreover: Manual talks on 5 bytes, but official driver only uses 4
+	 * No info available (yet), so copy code from card-jcos.c / card-flex.c
+	 * card drivers and pray... */
+	op = (file->type == SC_FILE_TYPE_DF) ? df_acl : ef_acl;
+	for (n = 0; n < 5; n++) {
+		int key_ref = 0;
+		if (*(op + n) == -1)
+			continue;	/* unused entry: skip */
+		key_ref = file->prop_attr[5 + n] & 0x0F;
+		switch (0xF0 & file->prop_attr[5 + n]) {
+		case 0x00:
+			sc_file_add_acl_entry(file, *(op + n), SC_AC_NONE,
+					      SC_AC_KEY_REF_NONE);
+			break;
+		case 0x10:
+			/* this tag is omitted in official code 
+			   case 0x20: 
+			 */
+		case 0x30:
+			sc_file_add_acl_entry(file, *(op + n), SC_AC_CHV,
+					      key_ref);
+			break;
+		case 0x40:
+			sc_file_add_acl_entry(file, *(op + n), SC_AC_TERM,
+					      key_ref);
+			break;
+		case 0xF0:
+			sc_file_add_acl_entry(file, *(op + n), SC_AC_NEVER,
+					      SC_AC_KEY_REF_NONE);
+			break;
+		default:
+			sc_file_add_acl_entry(file, *(op + n), SC_AC_UNKNOWN,
+					      SC_AC_KEY_REF_NONE);
+			break;
+		}
+	}
+	/* NOTE: Following bytes are described at DNIe manual pg 36, but No 
+	   documentation about what to do with following data is provided... 
+	   logs suggest that they are neither generated nor handled.
+
+	   UPDATE: these additional bytes are received when FileDescriptor tag
+	   is 0x15 (EF for keys)
+	 */
+	if (file->prop_attr[0] == 0x15) {
+		sc_log(card->ctx,
+		       "Processing flags for Cryptographic key files");
+		/* byte 10 (if present) shows Control Flags for security files */
+		/* bytes 11 and 12 (if present) states Control bytes for 
+		   RSA crypto files */
+		/* TODO: write when know what to do */
+	}
+	res = SC_SUCCESS;	/* arriving here means success */
+ dnie_process_fci_end:
+	LOG_FUNC_RETURN(card->ctx, res);
+}
+
+/*
+ * PIN related functions
+ * NOTE:
+ * DNIe manual says only about CHV1 PIN verify, but several sources talks
+ * about the ability to also handle CHV1 PIN change
+ * So prepare code to eventually support
+ *
+ * Anyway pin unlock is not available: no way to get PUK as these code is
+ * obtained by mean of user fingerprint, only available at police station
+ */
+
+/**
+ * Change PIN.
+ *
+ * Not implemented yet, as current availability for DNIe user driver 
+ * is unknown
+ *
+ * @param card Pointer to Card Driver data structrure
+ * @param data Pointer to Pin data structure
+ * @return SC_SUCCESS if ok; else error code
+ */
+static int dnie_pin_change(struct sc_card *card, struct sc_pin_cmd_data * data)
+{
+	int res=SC_SUCCESS;
+	LOG_FUNC_CALLED(card->ctx);
+#ifdef ENABLE_SM
+    /* Ensure that secure channel is established from reset */
+    res = cwa_create_secure_channel(card, GET_DNIE_PRIV_DATA(card)->cwa_provider, CWA_SM_COLD);
+    LOG_TEST_RET(card->ctx, res, "Establish SM failed");
+#endif
+	LOG_FUNC_RETURN(card->ctx,SC_ERROR_NOT_SUPPORTED);
+}
+
+/** 
+ * Verify PIN.
+ *
+ * Initialize SM and send pin verify CHV1 command to DNIe
+ *
+ * @param card Pointer to Card Driver data structure
+ * @param data Pointer to Pin data structure
+ * @param tries_left; on fail stores the number of tries left before car lock
+ * @return SC_SUCCESS if ok, else error code; on pin incorrect also sets tries_left
+ */
+static int dnie_pin_verify(struct sc_card *card,
+                        struct sc_pin_cmd_data *data, int *tries_left)
+{
+#ifdef ENABLE_SM
+	int res=SC_SUCCESS;
+	sc_apdu_t apdu;
+
+	u8 pinbuffer[SC_MAX_APDU_BUFFER_SIZE];
+	int pinlen = 0;
+	int padding = 0;
+
+	LOG_FUNC_CALLED(card->ctx);
+	/* ensure that secure channel is established from reset */
+	res = cwa_create_secure_channel(card, GET_DNIE_PRIV_DATA(card)->cwa_provider, CWA_SM_COLD);
+	LOG_TEST_RET(card->ctx, res, "Establish SM failed");
+
+	data->apdu = &apdu;	/* prepare apdu struct */
+	/* compose pin data to be inserted in apdu */
+	if (data->flags & SC_PIN_CMD_NEED_PADDING)
+		padding = 1;
+	data->pin1.offset = 0;
+	res = sc_build_pin(pinbuffer, sizeof(pinbuffer), &data->pin1, padding);
+	if (res < 0)
+		LOG_FUNC_RETURN(card->ctx, res);
+	pinlen = res;
+
+	/* compose apdu */
+	memset(&apdu, 0, sizeof(apdu));	/* clear buffer */
+	apdu.cla = 0x00;
+	apdu.cse = SC_APDU_CASE_3_SHORT;
+	apdu.ins = (u8) 0x20;	/* Verify cmd */
+	apdu.p1 = (u8) 0x00;
+	apdu.p2 = (u8) 0x00;
+	apdu.lc = pinlen;
+	apdu.datalen = pinlen;
+	apdu.data = pinbuffer;
+	apdu.resplen = 0;
+	apdu.le = 0;
+
+	/* and send to card throught virtual channel */
+	res = dnie_transmit_apdu(card, &apdu);
+	LOG_TEST_RET(card->ctx, res, "VERIFY APDU Transmit fail");
+
+	/* check response and if requested setup tries_left */
+	if (tries_left != NULL) {	/* returning tries_left count is requested */
+		if ((apdu.sw1 == 0x63) && ((apdu.sw2 & 0xF0) == 0xC0)) {
+			*tries_left = apdu.sw2 & 0x0F;
+			LOG_FUNC_RETURN(card->ctx, SC_ERROR_PIN_CODE_INCORRECT);
+		}
+	}
+	res = dnie_check_sw(card, apdu.sw1, apdu.sw2);	/* not a pinerr: parse result */
+
+	/* the end: a bit of Mister Proper and return */
+	memset(&apdu, 0, sizeof(apdu));	/* clear buffer */
+	data->apdu = NULL;
+	LOG_FUNC_RETURN(card->ctx, res);
+#else
+    LOG_TEST_RET(card->ctx, SC_ERROR_NOT_SUPPORTED, "built without support of SM and External Authentication");
+    return SC_ERROR_NOT_SUPPORTED;
+#endif
+}
+
+/* pin_cmd: verify/change/unblock command; optionally using the
+ * card's pin pad if supported.
+ */
+
+/**
+ * OpenDNIe implementation for Pin_Cmd() card driver command.
+ *
+ * @param card Pointer to Card Driver data structure
+ * @param data Pointer to Pin data structure
+ * @param tries_left; if pin_verify() operation, on incorrect pin stores the number of tries left before car lock
+ * @return SC_SUCCESS if ok, else error code; on pin incorrect also sets tries_left
+ */
+static int dnie_pin_cmd(struct sc_card *card,
+			struct sc_pin_cmd_data *data, int *tries_left)
+{
+	int res = SC_SUCCESS;
+	int lc = SC_CARDCTRL_LIFECYCLE_USER;
+
+	if ((card == NULL) || (card->ctx == NULL) || (data == NULL))
+		return SC_ERROR_INVALID_ARGUMENTS;
+	LOG_FUNC_CALLED(card->ctx);
+
+	/* 
+	* some flags and settings from documentation 
+	* No (easy) way to handle pinpad throught SM, so disable it
+	*/
+	data->flags &= ~SC_PIN_CMD_NEED_PADDING; /* no pin padding */
+	data->flags &= ~SC_PIN_CMD_USE_PINPAD;	 /* cannot handle pinpad */
+
+	/* ensure that card is in USER Lifecycle */
+	res = dnie_card_ctl(card, SC_CARDCTL_LIFECYCLE_GET, &lc);
+	LOG_TEST_RET(card->ctx, res, "Cannot get card LC status");
+	if (lc != SC_CARDCTRL_LIFECYCLE_USER) {
+		LOG_FUNC_RETURN(card->ctx, SC_ERROR_INVALID_CARD);
+	}
+
+	/* only allow changes on CHV pin ) */
+	switch (data->pin_type) {
+	case SC_AC_CHV:	/* Card Holder Verifier */
+		break;
+	case SC_AC_TERM:	/* Terminal auth */
+	case SC_AC_PRO:	/* SM auth */
+	case SC_AC_AUT:	/* Key auth */
+		LOG_FUNC_RETURN(card->ctx, SC_ERROR_NOT_SUPPORTED);
+	default:
+		LOG_FUNC_RETURN(card->ctx, SC_ERROR_INVALID_ARGUMENTS);
+	}
+	/* This DNIe driver only supports VERIFY operation */
+	switch (data->cmd) {
+	case SC_PIN_CMD_VERIFY:
+		res =  dnie_pin_verify(card,data,tries_left);
+		break;
+	case SC_PIN_CMD_CHANGE:
+		res =  dnie_pin_change(card,data);
+		break;
+	case SC_PIN_CMD_UNBLOCK:
+	case SC_PIN_CMD_GET_INFO:
+		res= SC_ERROR_NOT_SUPPORTED;
+		break;
+	default:
+		res= SC_ERROR_INVALID_ARGUMENTS;
+		break;
+	}
+	/* return result */
+	LOG_FUNC_RETURN(card->ctx, res);
+}
+
+/**********************************************************************/
+
+/**
+ * Internal function to initialize card driver function pointers.
+ *
+ * This is done by getting a copy for iso7816 card operations, 
+ * and replace every DNIe specific functions
+ *
+ * @return DNIe card driver data, or null on failure
+ */
+static sc_card_driver_t *get_dnie_driver(void)
+{
+	sc_card_driver_t *iso_drv = sc_get_iso7816_driver();
+
+	/* memcpy() from standard iso7816 declared operations */
+	if (iso_ops == NULL)
+		iso_ops = iso_drv->ops;
+	dnie_ops = *iso_drv->ops;
+
+	/* fill card specific function pointers */
+	/* NULL means that function is not supported neither by DNIe nor iso7816.c */
+	/* if pointer is omitted, default ISO7816 function will be used */
+
+	/* initialization */
+	dnie_ops.match_card	= dnie_match_card;
+	dnie_ops.init		= dnie_init;
+	dnie_ops.finish		= dnie_finish;
+
+	/* iso7816-4 functions */
+	dnie_ops.read_binary	= dnie_read_binary;
+	dnie_ops.write_binary	= NULL;
+	dnie_ops.update_binary	= NULL;
+	dnie_ops.erase_binary	= NULL;
+	dnie_ops.read_record	= NULL;
+	dnie_ops.write_record	= NULL;
+	dnie_ops.append_record	= NULL;
+	dnie_ops.update_record	= NULL;
+	dnie_ops.select_file	= dnie_select_file;
+	dnie_ops.get_challenge	= dnie_get_challenge;
+
+	/* iso7816-8 functions */
+	dnie_ops.verify		= NULL;
+	dnie_ops.logout		= dnie_logout;
+	/* dnie_ops.restore_security_env */
+	dnie_ops.set_security_env = dnie_set_security_env;
+	dnie_ops.decipher	= dnie_decipher;
+	dnie_ops.compute_signature = dnie_compute_signature;
+	dnie_ops.change_reference_data = NULL;
+	dnie_ops.reset_retry_counter = NULL;
+
+	/* iso7816-9 functions */
+	dnie_ops.create_file	= NULL;
+	dnie_ops.delete_file	= NULL;
+	dnie_ops.list_files	= dnie_list_files;
+	dnie_ops.check_sw	= dnie_check_sw;
+	dnie_ops.card_ctl	= dnie_card_ctl;
+	dnie_ops.process_fci	= dnie_process_fci;
+	/* dnie_ops.construct_fci */
+	dnie_ops.pin_cmd	= dnie_pin_cmd;
+	dnie_ops.get_data	= NULL;
+	dnie_ops.put_data	= NULL;
+	dnie_ops.delete_record	= NULL;
+
+	return &dnie_driver;
+}
+
+/**
+ * Entry point for (static) OpenDNIe card driver.
+ *
+ * This is the only public function on this module
+ *
+ * @return properly initialized array pointer to card driver operations
+ */
+sc_card_driver_t *sc_get_dnie_driver(void)
+{
+	return get_dnie_driver();
+}
+
+#undef __CARD_DNIE_C__
+
+#endif				/* ENABLE_OPENSSL */
diff --git a/src/libopensc/card-entersafe.c b/src/libopensc/card-entersafe.c
index ff169f7..ca16a2d 100644
--- a/src/libopensc/card-entersafe.c
+++ b/src/libopensc/card-entersafe.c
@@ -1185,7 +1185,7 @@ static int entersafe_write_large_rsa_key(sc_card_t *card,u8 key_id,struct sc_pkc
 		  sbuff[0]=0x83;
 		  sbuff[1]=0x02;
 		  sbuff[2]=key_id;
-		  sbuff[3]=0xA2;
+		  sbuff[3]=0x2A;
 		  sbuff[4]=0x89;
 		  sbuff[5]=0x40;
 		  memcpy(sbuff+6,rsa->modulus.data,0x40);
diff --git a/src/libopensc/card-epass2003.c b/src/libopensc/card-epass2003.c
index 3578d17..a07f747 100644
--- a/src/libopensc/card-epass2003.c
+++ b/src/libopensc/card-epass2003.c
@@ -117,8 +117,8 @@ openssl_enc(const EVP_CIPHER * cipher, const unsigned char *key, const unsigned
 
 	memcpy(iv_tmp, iv, EVP_MAX_IV_LENGTH);
 	EVP_CIPHER_CTX_init(&ctx);
-	EVP_CIPHER_CTX_set_padding(&ctx, 0);
 	EVP_EncryptInit_ex(&ctx, cipher, NULL, key, iv_tmp);
+	EVP_CIPHER_CTX_set_padding(&ctx, 0);
 
 	if (!EVP_EncryptUpdate(&ctx, output, &outl, input, length))
 		goto out;
@@ -146,8 +146,8 @@ openssl_dec(const EVP_CIPHER * cipher, const unsigned char *key, const unsigned
 
 	memcpy(iv_tmp, iv, EVP_MAX_IV_LENGTH);
 	EVP_CIPHER_CTX_init(&ctx);
-	EVP_CIPHER_CTX_set_padding(&ctx, 0);
 	EVP_DecryptInit_ex(&ctx, cipher, NULL, key, iv_tmp);
+	EVP_CIPHER_CTX_set_padding(&ctx, 0);
 
 	if (!EVP_DecryptUpdate(&ctx, output, &outl, input, length))
 		goto out;
@@ -852,13 +852,13 @@ epass2003_sm_free_wrapped_apdu(struct sc_card *card,
 		rv = epass2003_sm_unwrap_apdu(card, *sm_apdu, plain);
 
 	if ((*sm_apdu)->data)
-		free((*sm_apdu)->data);
+		free((unsigned char *) (*sm_apdu)->data);
 	if ((*sm_apdu)->resp)
 		free((*sm_apdu)->resp);
 	free(*sm_apdu);
 	*sm_apdu = NULL;
 
-	LOG_FUNC_RETURN(ctx, SC_SUCCESS);
+	LOG_FUNC_RETURN(ctx, rv);
 }
 
 
@@ -1003,10 +1003,10 @@ epass2003_init(struct sc_card *card)
 
 	flags = SC_ALGORITHM_ONBOARD_KEY_GEN | SC_ALGORITHM_RSA_RAW | SC_ALGORITHM_RSA_HASH_NONE;
 
-	_sc_card_add_rsa_alg(card, 512, flags, 0x10001);
-	_sc_card_add_rsa_alg(card, 768, flags, 0x10001);
-	_sc_card_add_rsa_alg(card, 1024, flags, 0x10001);
-	_sc_card_add_rsa_alg(card, 2048, flags, 0x10001);
+	_sc_card_add_rsa_alg(card, 512, flags, 0);
+	_sc_card_add_rsa_alg(card, 768, flags, 0);
+	_sc_card_add_rsa_alg(card, 1024, flags, 0);
+	_sc_card_add_rsa_alg(card, 2048, flags, 0);
 
 	card->caps = SC_CARD_CAP_RNG | SC_CARD_CAP_APDU_EXT;
 
@@ -1059,14 +1059,12 @@ epass2003_hook_file(struct sc_file *file, int inc)
 static int
 epass2003_select_fid_(struct sc_card *card, sc_path_t * in_path, sc_file_t ** file_out)
 {
-	sc_context_t *ctx;
 	struct sc_apdu apdu;
 	u8 buf[SC_MAX_APDU_BUFFER_SIZE] = { 0 };
 	u8 pathbuf[SC_MAX_PATH_SIZE], *path = pathbuf;
 	int r, pathlen;
 	sc_file_t *file = NULL;
 
-	ctx = card->ctx;
 	epass2003_hook_path(in_path, 1);
 	memcpy(path, in_path->value, in_path->len);
 	pathlen = in_path->len;
@@ -1858,7 +1856,6 @@ epass2003_delete_file(struct sc_card *card, const sc_path_t * path)
 	LOG_FUNC_RETURN(card->ctx, r);
 }
 
-#if 0
 static int
 epass2003_list_files(struct sc_card *card, unsigned char *buf, size_t buflen)
 {
@@ -1867,9 +1864,9 @@ epass2003_list_files(struct sc_card *card, unsigned char *buf, size_t buflen)
 	int r;
 
 	SC_FUNC_CALLED(card->ctx, SC_LOG_DEBUG_VERBOSE);
-	sc_format_apdu(card, &apdu, SC_APDU_CASE_2_SHORT, 0x34, 0x00, 0x00);
+	sc_format_apdu(card, &apdu, SC_APDU_CASE_1, 0x34, 0x00, 0x00);
 	apdu.cla = 0x80;
-	apdu.le = 0x40;
+	apdu.le = 0;
 	apdu.resplen = sizeof(rbuf);
 	apdu.resp = rbuf;
 
@@ -1887,7 +1884,6 @@ epass2003_list_files(struct sc_card *card, unsigned char *buf, size_t buflen)
 
 	LOG_FUNC_RETURN(card->ctx, buflen);
 }
-#endif
 
 
 static int
@@ -2376,7 +2372,7 @@ static struct sc_card_driver *sc_get_driver(void)
 	epass2003_ops.compute_signature = epass2003_decipher;
 	epass2003_ops.create_file = epass2003_create_file;
 	epass2003_ops.delete_file = epass2003_delete_file;
-	/* epass2003_ops.list_files = epass2003_list_files; */
+	epass2003_ops.list_files = epass2003_list_files;
 	epass2003_ops.card_ctl = epass2003_card_ctl;
 	epass2003_ops.process_fci = epass2003_process_fci;
 	epass2003_ops.construct_fci = epass2003_construct_fci;
diff --git a/src/libopensc/card-flex.c b/src/libopensc/card-flex.c
index abdad98..64d9381 100644
--- a/src/libopensc/card-flex.c
+++ b/src/libopensc/card-flex.c
@@ -539,10 +539,8 @@ static int select_file_id(sc_card_t *card, const u8 *buf, size_t buflen,
 	sc_apdu_t apdu;
         u8 rbuf[SC_MAX_APDU_BUFFER_SIZE];
         sc_file_t *file;
-	char	debug_buf[32];
 
-	sc_bin_to_hex(buf, buflen, debug_buf, sizeof(debug_buf), 0);
-	sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL, "called, p1=%u, path=%s\n", p1, debug_buf);
+	sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL, "called, p1=%u, path=%s\n", p1, sc_dump_hex(buf, buflen));
 
 	sc_format_apdu(card, &apdu, SC_APDU_CASE_4_SHORT, 0xA4, p1, 0);
 	apdu.resp = rbuf;
@@ -858,9 +856,7 @@ cyberflex_construct_file_attrs(sc_card_t *card, const sc_file_t *file,
 				 u8 *buf, size_t *buflen)
 {
 	u8 *p = buf;
-	int i;
 	size_t size = file->size;
-	int ops[6];
 
 	/* cyberflex wants input parameters length added */
 	switch (file->type) {
@@ -905,20 +901,6 @@ cyberflex_construct_file_attrs(sc_card_t *card, const sc_file_t *file,
 			return -1;
 		}
 	p[5] = 0x01;	/* status?? */
-	for (i = 0; i < 6; i++)
-		ops[i] = -1;
-	if (file->type == SC_FILE_TYPE_DF) {
-		ops[0] = SC_AC_OP_LIST_FILES;
-		ops[2] = SC_AC_OP_DELETE;
-		ops[3] = SC_AC_OP_CREATE;
-	} else {
-		ops[0] = SC_AC_OP_READ;
-		ops[1] = SC_AC_OP_UPDATE;
-		ops[2] = SC_AC_OP_READ;
-		ops[3] = SC_AC_OP_UPDATE;
-		ops[4] = SC_AC_OP_REHABILITATE;
-		ops[5] = SC_AC_OP_INVALIDATE;
-	}
 	p[6] = p[7] = 0;
 	
 	*buflen = 16;
diff --git a/src/libopensc/card-gemsafeV1.c b/src/libopensc/card-gemsafeV1.c
index fb312d2..7b6b87b 100644
--- a/src/libopensc/card-gemsafeV1.c
+++ b/src/libopensc/card-gemsafeV1.c
@@ -54,6 +54,8 @@ static struct sc_atr_table gemsafe_atrs[] = {
     {"3B:7D:95:00:00:80:31:80:65:B0:83:11:C0:A9:83:00:90:00", NULL, NULL, SC_CARD_TYPE_GEMSAFEV1_PTEID, 0, NULL},
     {"3B:7D:95:00:00:80:31:80:65:B0:83:11:00:C8:83:00", NULL, NULL, SC_CARD_TYPE_GEMSAFEV1_PTEID, 0, NULL},
     {"3B:7D:95:00:00:80:31:80:65:B0:83:11:00:C8:83:00:90:00", NULL, NULL, SC_CARD_TYPE_GEMSAFEV1_PTEID, 0, NULL},
+    /* Swedish eID card */
+    {"3B:7D:96:00:00:80:31:80:65:B0:83:11:00:C8:83:00:90:00", NULL, NULL, SC_CARD_TYPE_GEMSAFEV1_SEEID, 0, NULL},
     {NULL, NULL, NULL, 0, 0, NULL}
 };
 
@@ -62,6 +64,9 @@ static const u8 gemsafe_def_aid[] = {0xA0, 0x00, 0x00, 0x00, 0x18, 0x0A,
 
 static const u8 gemsafe_pteid_aid[] = {0x60, 0x46, 0x32, 0xFF, 0x00, 0x00, 0x02};
 
+static const u8 gemsafe_seeid_aid[] = {0xA0, 0x00, 0x00, 0x00, 0x18, 0x0C,
+                                       0x00, 0x00, 0x01, 0x63, 0x42, 0x00};
+
 /*
 static const u8 gemsafe_def_aid[] = {0xA0, 0x00, 0x00, 0x00, 0x63, 0x50,
 	0x4B, 0x43, 0x53, 0x2D, 0x31, 0x35};
@@ -165,7 +170,10 @@ static int gemsafe_init(struct sc_card *card)
 	} else if (card->type == SC_CARD_TYPE_GEMSAFEV1_PTEID) {
 		memcpy(exdata->aid, gemsafe_pteid_aid, sizeof(gemsafe_pteid_aid));
 		exdata->aid_len = sizeof(gemsafe_pteid_aid);
-	}
+	} else if (card->type == SC_CARD_TYPE_GEMSAFEV1_SEEID) {
+                memcpy(exdata->aid, gemsafe_seeid_aid, sizeof(gemsafe_seeid_aid));
+                exdata->aid_len = sizeof(gemsafe_seeid_aid);
+        }
 
 	/* increase lock_count here to prevent sc_unlock to select
 	 * applet twice in gp_select_applet */
@@ -354,12 +362,14 @@ static u8 gemsafe_flags2algref(struct sc_card *card, const struct sc_security_en
 
 	if (env->operation == SC_SEC_OPERATION_SIGN) {
 		if (env->algorithm_flags & SC_ALGORITHM_RSA_PAD_PKCS1)
-			ret = card->type == SC_CARD_TYPE_GEMSAFEV1_PTEID ? 0x02 : 0x12;
+			ret = (card->type == SC_CARD_TYPE_GEMSAFEV1_PTEID ||
+			       card->type == SC_CARD_TYPE_GEMSAFEV1_SEEID) ? 0x02 : 0x12;
 		else if (env->algorithm_flags & SC_ALGORITHM_RSA_PAD_ISO9796)
 			ret = 0x11;
 	} else if (env->operation == SC_SEC_OPERATION_DECIPHER) {
 		if (env->algorithm_flags & SC_ALGORITHM_RSA_PAD_PKCS1)
-			ret = card->type == SC_CARD_TYPE_GEMSAFEV1_PTEID ? 0x02 : 0x12;
+			ret = (card->type == SC_CARD_TYPE_GEMSAFEV1_PTEID ||
+			       card->type == SC_CARD_TYPE_GEMSAFEV1_PTEID) ? 0x02 : 0x12;
 	}
 
 	return ret;
@@ -423,7 +433,9 @@ static int gemsafe_compute_signature(struct sc_card *card, const u8 * data,
 	}
 
 	/* the Portuguese eID card requires a two-phase exchange */
-	if(card->type == SC_CARD_TYPE_GEMSAFEV1_PTEID) {
+	/* and so does the Swedish one */
+	if(card->type == SC_CARD_TYPE_GEMSAFEV1_PTEID ||
+	   card->type == SC_CARD_TYPE_GEMSAFEV1_SEEID) {
 		sc_format_apdu(card, &apdu, SC_APDU_CASE_3_SHORT, 0x2A, 0x90, 0xA0);
 	} else {
 		sc_format_apdu(card, &apdu, SC_APDU_CASE_4_SHORT, 0x2A, 0x9E, 0xAC);
@@ -443,12 +455,17 @@ static int gemsafe_compute_signature(struct sc_card *card, const u8 * data,
 	r = sc_transmit_apdu(card, &apdu);
 	SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, r, "APDU transmit failed");
 	if (apdu.sw1 == 0x90 && apdu.sw2 == 0x00) {
-		if(card->type == SC_CARD_TYPE_GEMSAFEV1_PTEID) {
+		if(card->type == SC_CARD_TYPE_GEMSAFEV1_PTEID ||
+		   card->type == SC_CARD_TYPE_GEMSAFEV1_SEEID) {
 			/* finalize the exchange */
 			sc_format_apdu(card, &apdu, SC_APDU_CASE_2_SHORT, 0x2A, 0x9E, 0x9A);
 			apdu.le = 128; /* 1024 bit keys */
 			apdu.resp = rbuf;
 			apdu.resplen = sizeof(rbuf);
+			if(card->type == SC_CARD_TYPE_GEMSAFEV1_SEEID) {
+			  /* cla 0x80 not supported */
+			  apdu.cla = 0x00;
+			}
 			r = sc_transmit_apdu(card, &apdu);
 			SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, r, "APDU transmit failed");
 			if(apdu.sw1 != 0x90 || apdu.sw2 != 0x00)
diff --git a/src/libopensc/card-ias.c b/src/libopensc/card-ias.c
index c56b63b..9c48a5f 100644
--- a/src/libopensc/card-ias.c
+++ b/src/libopensc/card-ias.c
@@ -31,9 +31,6 @@
 #include "asn1.h"
 #include "cardctl.h"
 
-/* Portugal eID uses 1024 bit keys */
-#define PTEID_RSA_KEYSIZE 128
-
 #define DRVDATA(card)	((struct ias_priv_data *) ((card)->drv_data))
 
 static struct sc_card_operations ias_ops;
@@ -309,14 +306,17 @@ static int ias_set_security_env(sc_card_t *card,
 	return r;
 }
  
-static int ias_compute_signature(sc_card_t *card, const u8 * data,
-		size_t data_len, u8 * out, size_t outlen)
+static int ias_compute_signature(sc_card_t *card, const u8 *data,
+		size_t data_len, u8 *out, size_t outlen)
 {
-	int 			r;
-	size_t 			len = 0;
-	sc_apdu_t 		apdu;
-	u8 				sbuf[SC_MAX_APDU_BUFFER_SIZE];
-	sc_context_t 	*ctx = card->ctx;
+	sc_apdu_t	apdu;
+	size_t		len;
+	/*
+	** XXX: Ensure sufficient space exists for the card's response
+	** as the caller's buffer size may not be sufficient
+	*/
+	u8		rbuf[SC_MAX_APDU_BUFFER_SIZE];
+	sc_context_t	*ctx = card->ctx;
 
 	SC_FUNC_CALLED(ctx, SC_LOG_DEBUG_VERBOSE);
 
@@ -324,28 +324,22 @@ static int ias_compute_signature(sc_card_t *card, const u8 * data,
 		sc_debug(ctx, SC_LOG_DEBUG_NORMAL, "error: input data too long: %lu bytes\n", data_len);
 		return SC_ERROR_INVALID_ARGUMENTS;
 	}
-
-	/* Send the data */
-	sc_format_apdu(card, &apdu, SC_APDU_CASE_3_SHORT, 0x88, 0x02, 0x00);
-	memcpy(sbuf, data, data_len);
-	apdu.data = sbuf;
+	
+	sc_format_apdu(card, &apdu, SC_APDU_CASE_4_SHORT, 0x88, 0x02, 0x00);
+	apdu.data = (u8 *) data;
 	apdu.lc = data_len;
 	apdu.datalen = data_len;
+	apdu.resp = rbuf;
+	apdu.resplen = sizeof(rbuf);
+	apdu.le = 256;
 
-	r = sc_transmit_apdu(card, &apdu);
-	SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, r, "APDU transmit failed");
-
-	/* Get the result */
-	if (apdu.sw1 == 0x90 && apdu.sw2 == 0x00) {
-		len = card->type == SC_CARD_TYPE_IAS_PTEID ? PTEID_RSA_KEYSIZE : outlen;
-		r = iso_ops->get_response(card, &len, out);
-		if (r == 0)
-			SC_FUNC_RETURN(card->ctx, SC_LOG_DEBUG_VERBOSE, len);
-		else
-			SC_FUNC_RETURN(card->ctx, SC_LOG_DEBUG_VERBOSE, r);
-	}
+	LOG_TEST_RET(card->ctx, sc_transmit_apdu(card, &apdu), "APDU transmit failed");
+	LOG_TEST_RET(card->ctx, sc_check_sw(card, apdu.sw1, apdu.sw2), "INTERNAL AUTHENTICATE failed");
 
-	SC_FUNC_RETURN(card->ctx, SC_LOG_DEBUG_VERBOSE, sc_check_sw(card, apdu.sw1, apdu.sw2));
+	len = apdu.resplen > outlen ? outlen : apdu.resplen;
+	memcpy(out, apdu.resp, len);
+	
+	LOG_FUNC_RETURN(card->ctx, apdu.resplen);
 }
 
 static int ias_select_file(sc_card_t *card, const sc_path_t *in_path,
diff --git a/src/libopensc/card-iasecc.c b/src/libopensc/card-iasecc.c
index d20eb61..905c0b2 100644
--- a/src/libopensc/card-iasecc.c
+++ b/src/libopensc/card-iasecc.c
@@ -117,8 +117,10 @@ static int iasecc_pin_is_verified(struct sc_card *card, struct sc_pin_cmd_data *
 static int iasecc_get_free_reference(struct sc_card *card, struct iasecc_ctl_get_free_reference *ctl_data);
 static int iasecc_sdo_put_data(struct sc_card *card, struct iasecc_sdo_update *update);
 
+#ifdef ENABLE_SM
 static int _iasecc_sm_read_binary(struct sc_card *card, unsigned int offs, unsigned char *buf, size_t count);
 static int _iasecc_sm_update_binary(struct sc_card *card, unsigned int offs, const unsigned char *buff, size_t count);
+#endif
 
 static int
 iasecc_chv_cache_verified(struct sc_card *card, struct sc_pin_cmd_data *pin_cmd)
@@ -680,6 +682,7 @@ iasecc_erase_binary(struct sc_card *card, unsigned int offs, size_t count, unsig
 }
 
 
+#if ENABLE_SM
 static int
 _iasecc_sm_read_binary(struct sc_card *card, unsigned int offs,
 		unsigned char *buff, size_t count)
@@ -747,6 +750,7 @@ _iasecc_sm_update_binary(struct sc_card *card, unsigned int offs,
 
 	LOG_FUNC_RETURN(ctx, 0);
 }
+#endif
 
 
 static int
diff --git a/src/libopensc/card-incrypto34.c b/src/libopensc/card-incrypto34.c
index 542a360..317afe3 100644
--- a/src/libopensc/card-incrypto34.c
+++ b/src/libopensc/card-incrypto34.c
@@ -551,7 +551,7 @@ incrypto34_compute_signature(sc_card_t *card, const u8 *data, size_t datalen,
 	sc_debug(ctx, SC_LOG_DEBUG_NORMAL,
 		"trying RSA_SIG (just the DigestInfo)\n");
 	/* remove padding: first try pkcs1 bt01 padding */
-	r = sc_pkcs1_strip_01_padding(data, datalen, buf, &tmp_len);
+	r = sc_pkcs1_strip_01_padding(ctx, data, datalen, buf, &tmp_len);
 	if (r != SC_SUCCESS) {
 		const u8 *p = data;
 		/* no pkcs1 bt01 padding => let's try zero padding.
diff --git a/src/libopensc/card-javacard.c b/src/libopensc/card-javacard.c
deleted file mode 100644
index 2b91aef..0000000
--- a/src/libopensc/card-javacard.c
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * card-javacard.c: Recognize known blank JavaCards
- *
- * Copyright (C) 2010 Martin Paljak <martin at paljak.pri.ee>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-#include "internal.h"
-
-static struct sc_atr_table javacard_atrs[] = {
-	{"3b:db:18:00:80:b1:fe:45:1f:83:00:31:c0:64:c7:fc:10:00:01:90:00:fa", NULL, "Cosmo v7 64K dual/128K", SC_CARD_TYPE_JAVACARD, 0, NULL},
-	{"3b:75:94:00:00:62:02:02:02:01", NULL, "Cyberflex 32K", SC_CARD_TYPE_JAVACARD, 0, NULL},
-	{"3b:95:95:40:ff:ae:01:03:00:00", NULL, "Cyberflex v2 64K", SC_CARD_TYPE_JAVACARD, 0, NULL},
-	{NULL, NULL, NULL, 0, 0, NULL}
-};
-
-static struct sc_card_operations javacard_ops;
-static struct sc_card_driver javacard_drv = {
-	"JavaCard (without supported applet)",
-	"javacard",
-	&javacard_ops,
-	NULL, 0, NULL
-};
-
-static int javacard_finish(sc_card_t * card)
-{
-	return SC_SUCCESS;
-}
-
-static int javacard_match_card(sc_card_t * card)
-{
-	if (_sc_match_atr(card, javacard_atrs, &card->type) < 0)
-        	return 0;
-	return 1;
-}
-
-static int javacard_init(sc_card_t * card)
-{
-	card->drv_data = NULL;
-
-	return SC_SUCCESS;
-}
-
-
-static struct sc_card_driver *sc_get_driver(void)
-{
-	struct sc_card_driver *iso_drv = sc_get_iso7816_driver();
-
-	javacard_ops = *iso_drv->ops;
-	javacard_ops.match_card = javacard_match_card;
-	javacard_ops.select_file = NULL;
-	javacard_ops.init = javacard_init;
-	javacard_ops.finish = javacard_finish;
-
-	return &javacard_drv;
-}
-
-struct sc_card_driver *sc_get_javacard_driver(void)
-{
-	return sc_get_driver();
-}
diff --git a/src/libopensc/card-jcop.c b/src/libopensc/card-jcop.c
index 7dbc29b..d01324c 100644
--- a/src/libopensc/card-jcop.c
+++ b/src/libopensc/card-jcop.c
@@ -642,7 +642,7 @@ static int jcop_set_security_env(sc_card_t *card,
                 if (tmp.algorithm_flags & SC_ALGORITHM_RSA_HASH_MD5)
                         tmp.algorithm_ref |= 0x20;
 
-		memcpy(env, &tmp, sizeof(struct sc_security_env));
+		memcpy((sc_security_env_t *) env, &tmp, sizeof(struct sc_security_env));
 	}
 	
         sc_format_apdu(card, &apdu, SC_APDU_CASE_3_SHORT, 0x22, 0xC1, 0);
@@ -659,7 +659,7 @@ static int jcop_set_security_env(sc_card_t *card,
         apdu.le = 0;
         if (!env->flags & SC_SEC_ENV_ALG_REF_PRESENT)
 	     return SC_ERROR_INVALID_ARGUMENTS;
-        if (!env->flags & SC_SEC_ENV_FILE_REF_PRESENT)
+        if (!(env->flags & SC_SEC_ENV_FILE_REF_PRESENT))
 	     return SC_ERROR_INVALID_ARGUMENTS;
         if (env->flags & SC_SEC_ENV_KEY_REF_PRESENT) {
 	     if (env->key_ref_len > 1 || env->key_ref[0] != 0)
@@ -797,7 +797,6 @@ static int jcop_decipher(sc_card_t *card,
 }
  
 static int jcop_generate_key(sc_card_t *card, struct sc_cardctl_jcop_genkey *a) {
-     int modlen;
      int r;
      sc_apdu_t apdu;
      u8 rbuf[SC_MAX_APDU_BUFFER_SIZE];
@@ -877,7 +876,6 @@ static int jcop_generate_key(sc_card_t *card, struct sc_cardctl_jcop_genkey *a)
      if (rbuf[0] != 0x4) {
 	  return SC_ERROR_INVALID_DATA;
      }
-     modlen=rbuf[1] * 32;
      if (a->pubkey_len < rbuf[1])
 	  return SC_ERROR_BUFFER_TOO_SMALL;
      a->pubkey_len=rbuf[1] * 4;
diff --git a/src/libopensc/card-mcrd.c b/src/libopensc/card-mcrd.c
index bb07f89..d0bedbe 100644
--- a/src/libopensc/card-mcrd.c
+++ b/src/libopensc/card-mcrd.c
@@ -1,9 +1,9 @@
 /*
  * card-mcrd.c: Support for MICARDO cards
  *
- * Copyright (C) 2004  Martin Paljak <martin at paljak.pri.ee>
+ * Copyright (C) 2004  Martin Paljak <martin at martinpaljak.net>
  * Copyright (C) 2004  Priit Randla <priit.randla at eyp.ee>
- * Copyright (C) 2003  Marie Fischer <marie at vtl.ee> 
+ * Copyright (C) 2003  Marie Fischer <marie at vtl.ee>
  * Copyright (C) 2001  Juha Yrjölä <juha.yrjola at iki.fi>
  * Copyright (C) 2002  g10 Code GmbH
  *
@@ -52,10 +52,12 @@ static struct sc_atr_table mcrd_atrs[] = {
 	{"3B:FE:18:00:00:80:31:FE:45:80:31:80:66:40:90:A4:56:1B:16:83:01:90:00:86", NULL, "EstEID 3.0 (dev1) warm", SC_CARD_TYPE_MCRD_ESTEID_V30, 0, NULL},
 	{"3b:fe:18:00:00:80:31:fe:45:80:31:80:66:40:90:a4:16:2a:00:83:01:90:00:e1", NULL, "EstEID 3.0 (dev2) warm", SC_CARD_TYPE_MCRD_ESTEID_V30, 0, NULL},
 	{"3b:fe:18:00:00:80:31:fe:45:80:31:80:66:40:90:a4:16:2a:00:83:0f:90:00:ef", NULL, "EstEID 3.0 (18.01.2011) warm", SC_CARD_TYPE_MCRD_ESTEID_V30, 0, NULL},
+	{"3b:fa:18:00:00:80:31:fe:45:fe:65:49:44:20:2f:20:50:4b:49:03", NULL, "EstEID 3.5 cold", SC_CARD_TYPE_MCRD_ESTEID_V30, 0, NULL },
 	{NULL, NULL, NULL, 0, 0, NULL}
 };
 
 static unsigned char EstEID_v3_AID[] = {0xF0, 0x45, 0x73, 0x74, 0x45, 0x49, 0x44, 0x20, 0x76, 0x65, 0x72, 0x20, 0x31, 0x2E, 0x30};
+static unsigned char EstEID_v35_AID[] = {0xD2, 0x33, 0x00, 0x00, 0x00, 0x45, 0x73, 0x74, 0x45, 0x49, 0x44, 0x20, 0x76, 0x33, 0x35};
 
 static struct sc_card_operations mcrd_ops;
 static struct sc_card_driver mcrd_drv = {
@@ -270,12 +272,29 @@ int is_esteid_card(sc_card_t *card) {
 }
 static int mcrd_match_card(sc_card_t * card)
 {
-	int i = 0;
+	int i = 0, r = 0;
+	sc_apdu_t apdu;
+
 	i = _sc_match_atr(card, mcrd_atrs, &card->type);
 	if (i >= 0) {
 		card->name = mcrd_atrs[i].name;
 		return 1;
 	}
+
+	sc_format_apdu(card, &apdu, SC_APDU_CASE_3, 0xA4, 0x04, 0x00);
+	apdu.lc = sizeof(EstEID_v35_AID);
+	apdu.data = EstEID_v35_AID;
+	apdu.datalen = sizeof(EstEID_v35_AID);
+	apdu.resplen = 0;
+	apdu.le = 0;
+	r = sc_transmit_apdu(card, &apdu);
+	SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, r, "APDU transmit failed");
+	sc_debug(card->ctx, SC_LOG_DEBUG_VERBOSE, "SELECT AID: %02X%02X", apdu.sw1, apdu.sw2);
+	if(apdu.sw1 == 0x90 && apdu.sw2 == 0x00) {
+	        sc_log(card->ctx, "AID found");
+	        card->type = SC_CARD_TYPE_MCRD_ESTEID_V30;
+	        return 1;
+	}
 	return 0;
 }
 
@@ -318,7 +337,19 @@ static int mcrd_init(sc_card_t * card)
 			SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, r, "APDU transmit failed");
 			sc_debug(card->ctx, SC_LOG_DEBUG_VERBOSE, "SELECT AID: %02X%02X", apdu.sw1, apdu.sw2);
 			if(apdu.sw1 != 0x90 && apdu.sw2 != 0x00)
-				SC_FUNC_RETURN(card->ctx, SC_LOG_DEBUG_VERBOSE,  SC_ERROR_CARD_CMD_FAILED);
+			{
+				sc_format_apdu(card, &apdu, SC_APDU_CASE_3, 0xA4, 0x04, 0x00);
+	                        apdu.lc = sizeof(EstEID_v35_AID);
+        	                apdu.data = EstEID_v35_AID;
+                	        apdu.datalen = sizeof(EstEID_v35_AID);
+                        	apdu.resplen = 0;
+	                        apdu.le = 0;
+				r = sc_transmit_apdu(card, &apdu);
+	                        SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, r, "APDU transmit failed");
+        	                sc_debug(card->ctx, SC_LOG_DEBUG_VERBOSE, "SELECT AID: %02X%02X", apdu.sw1, apdu.sw2);
+				if(apdu.sw1 != 0x90 && apdu.sw2 != 0x00)
+					SC_FUNC_RETURN(card->ctx, SC_LOG_DEBUG_VERBOSE,  SC_ERROR_CARD_CMD_FAILED);
+			}
 		} else {
 			/* EstEID v1.0 and 1.1 have 1024 bit keys */
 			flags = SC_ALGORITHM_RSA_RAW | SC_ALGORITHM_RSA_PAD_PKCS1 | SC_ALGORITHM_RSA_HASH_SHA1;
diff --git a/src/libopensc/card-miocos.c b/src/libopensc/card-miocos.c
index 48c49cb..89638f5 100644
--- a/src/libopensc/card-miocos.c
+++ b/src/libopensc/card-miocos.c
@@ -320,7 +320,7 @@ static int miocos_get_acl(sc_card_t *card, sc_file_t *file)
 	u8 rbuf[256];
 	const u8 *seq = rbuf;
 	size_t left;
-	int acl_types[16], r;
+	int r;
 	unsigned int i;
 	
 	sc_format_apdu(card, &apdu, SC_APDU_CASE_2_SHORT, 0xCA, 0x01, 0x01);
@@ -331,8 +331,6 @@ static int miocos_get_acl(sc_card_t *card, sc_file_t *file)
 	SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, r, "APDU transmit failed");
 	if (apdu.resplen == 0)
 		return sc_check_sw(card, apdu.sw1, apdu.sw2);
-	for (i = 0; i < 16; i++)
-		acl_types[i] = SC_AC_KEY_REF_NONE;
 	left = apdu.resplen;
 	seq = sc_asn1_skip_tag(card->ctx, &seq, &left,
 			       SC_ASN1_SEQUENCE | SC_ASN1_CONS, &left);
diff --git a/src/libopensc/card-myeid.c b/src/libopensc/card-myeid.c
index f93078e..2e5f9c6 100644
--- a/src/libopensc/card-myeid.c
+++ b/src/libopensc/card-myeid.c
@@ -1125,7 +1125,7 @@ static int myeid_get_info(struct sc_card *card, u8 *rbuf, size_t buflen)
 {
 	sc_apdu_t apdu;
 	int r;
-	u8 nameBuf[100];
+	char nameBuf[100];
 
 	LOG_FUNC_CALLED(card->ctx);
 
@@ -1150,7 +1150,7 @@ static int myeid_get_info(struct sc_card *card, u8 *rbuf, size_t buflen)
 	card->version.fw_major = rbuf[5] * 10 + rbuf[6];
 	card->version.fw_minor = rbuf[7];
 	/* add version to name */
-	sprintf(nameBuf, "%s %d.%d.%d", card->name, rbuf[5], rbuf[6], rbuf[7]);
+	sprintf((char *) nameBuf, "%s %d.%d.%d", card->name, rbuf[5], rbuf[6], rbuf[7]);
 	card->name = nameBuf;
 	//card->driver->name
 	LOG_FUNC_RETURN(card->ctx, r);
diff --git a/src/libopensc/card-oberthur.c b/src/libopensc/card-oberthur.c
index 4974fae..25e1b7e 100644
--- a/src/libopensc/card-oberthur.c
+++ b/src/libopensc/card-oberthur.c
@@ -1,9 +1,9 @@
 /*
- * card-oberthur.c: Support for Oberthur smart cards 
- *		CosmopolIC  v5; 
+ * card-oberthur.c: Support for Oberthur smart cards
+ *		CosmopolIC  v5;
  *
  * Copyright (C) 2001, 2002  Juha Yrjölä <juha.yrjola at iki.fi>
- * Copyright (C) 2009  Viktor Tarasov <viktor.tarasov at opentrust.com>, 
+ * Copyright (C) 2009  Viktor Tarasov <viktor.tarasov at opentrust.com>,
  *                     OpenTrust <www.opentrust.com>
  *
  * This library is free software; you can redistribute it and/or
@@ -53,15 +53,15 @@
 #endif
 
 static struct sc_atr_table oberthur_atrs[] = {
-	{ "3B:7D:18:00:00:00:31:80:71:8E:64:77:E3:01:00:82:90:00", NULL, 
+	{ "3B:7D:18:00:00:00:31:80:71:8E:64:77:E3:01:00:82:90:00", NULL,
 			"Oberthur 64k v4/2.1.1", SC_CARD_TYPE_OBERTHUR_64K, 0, NULL },
-	{ "3B:7D:18:00:00:00:31:80:71:8E:64:77:E3:02:00:82:90:00", NULL, 
+	{ "3B:7D:18:00:00:00:31:80:71:8E:64:77:E3:02:00:82:90:00", NULL,
 			"Oberthur 64k v4/2.1.1", SC_CARD_TYPE_OBERTHUR_64K, 0, NULL },
-	{ "3B:7D:11:00:00:00:31:80:71:8E:64:77:E3:01:00:82:90:00", NULL, 
+	{ "3B:7D:11:00:00:00:31:80:71:8E:64:77:E3:01:00:82:90:00", NULL,
 			"Oberthur 64k v5", SC_CARD_TYPE_OBERTHUR_64K, 0, NULL },
-	{ "3B:7D:11:00:00:00:31:80:71:8E:64:77:E3:02:00:82:90:00", NULL, 
+	{ "3B:7D:11:00:00:00:31:80:71:8E:64:77:E3:02:00:82:90:00", NULL,
 			"Oberthur 64k v5/2.2.0", SC_CARD_TYPE_OBERTHUR_64K, 0, NULL },
-	{ "3B:7B:18:00:00:00:31:C0:64:77:E3:03:00:82:90:00", NULL, 
+	{ "3B:7B:18:00:00:00:31:C0:64:77:E3:03:00:82:90:00", NULL,
 			"Oberthur 64k CosmopolIC v5.2/2.2", SC_CARD_TYPE_OBERTHUR_64K, 0, NULL },
 	{ "3B:FB:11:00:00:81:31:FE:45:00:31:C0:64:77:E9:10:00:00:90:00:6A", NULL,
 			"OCS ID-One Cosmo Card", SC_CARD_TYPE_OBERTHUR_64K, 0, NULL },
@@ -77,10 +77,10 @@ struct auth_senv {
 struct auth_private_data {
 	unsigned char aid[SC_MAX_AID_SIZE];
 	int aid_len;
-	
+
 	struct sc_pin_cmd_pin pin_info;
 	struct auth_senv senv;
-	
+
 	long int sn;
 };
 
@@ -92,10 +92,10 @@ struct auth_update_component_info {
 };
 
 
-static const unsigned char *aidAuthentIC_V5 = 
+static const unsigned char *aidAuthentIC_V5 =
 		(const unsigned char *)"\xA0\x00\x00\x00\x77\x01\x03\x03\x00\x00\x00\xF1\x00\x00\x00\x02";
-static const int lenAidAuthentIC_V5 = 16; 
-static const char *nameAidAuthentIC_V5 = "AuthentIC v5"; 
+static const int lenAidAuthentIC_V5 = 16;
+static const char *nameAidAuthentIC_V5 = "AuthentIC v5";
 
 #define OBERTHUR_AUTH_TYPE_PIN		1
 #define OBERTHUR_AUTH_TYPE_PUK		2
@@ -124,14 +124,14 @@ static struct sc_card_driver auth_drv = {
 
 static int auth_get_pin_reference (struct sc_card *card,
 		int type, int reference, int cmd, int *out_ref);
-static int auth_read_component(struct sc_card *card, 
-		enum SC_CARDCTL_OBERTHUR_KEY_TYPE type, int num, 
+static int auth_read_component(struct sc_card *card,
+		enum SC_CARDCTL_OBERTHUR_KEY_TYPE type, int num,
 		unsigned char *out, size_t outlen);
-static int auth_pin_is_verified(struct sc_card *card, int pin_reference, 
+static int auth_pin_is_verified(struct sc_card *card, int pin_reference,
 		int *tries_left);
 static int auth_pin_verify(struct sc_card *card, unsigned int type,
 		struct sc_pin_cmd_data *data, int *tries_left);
-static int auth_pin_reset(struct sc_card *card, unsigned int type, 
+static int auth_pin_reset(struct sc_card *card, unsigned int type,
 		struct sc_pin_cmd_data *data, int *tries_left);
 static int auth_create_reference_data (struct sc_card *card,
 		struct sc_cardctl_oberthur_createpin_info *args);
@@ -140,7 +140,7 @@ static int auth_select_file(struct sc_card *card, const struct sc_path *in_path,
 		struct sc_file **file_out);
 static int acl_to_ac_byte(struct sc_card *card, const struct sc_acl_entry *e);
 
-static int 
+static int
 auth_finish(struct sc_card *card)
 {
 	free(card->drv_data);
@@ -148,7 +148,7 @@ auth_finish(struct sc_card *card)
 }
 
 
-static int 
+static int
 auth_select_aid(struct sc_card *card)
 {
 	struct sc_apdu apdu;
@@ -169,24 +169,24 @@ auth_select_aid(struct sc_card *card)
 
 	rv = sc_transmit_apdu(card, &apdu);
 	SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, rv, "APDU transmit failed");
-	
+
 	/* Get smart card serial number */
 	sc_format_apdu(card, &apdu, SC_APDU_CASE_2_SHORT, 0xCA, 0x9F, 0x7F);
 	apdu.cla = 0x80;
 	apdu.le = 0x2D;
 	apdu.resplen = 0x30;
 	apdu.resp = apdu_resp;
-	
+
 	rv = sc_transmit_apdu(card, &apdu);
 	SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, rv, "APDU transmit failed");
 	card->serialnr.len = 4;
 	memcpy(card->serialnr.value, apdu.resp+15, 4);
 
-	for (ii=0, data->sn = 0; ii < 4; ii++) 
+	for (ii=0, data->sn = 0; ii < 4; ii++)
 		data->sn += (int)(*(apdu.resp + 15 + ii)) << (3-ii)*8;
-	
+
 	sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL, "serial number %li/0x%lX\n", data->sn, data->sn);
-	
+
 	memset(&tmp_path, 0, sizeof(struct sc_path));
 	tmp_path.type = SC_PATH_TYPE_DF_NAME;
 	memcpy(tmp_path.value, aidAuthentIC_V5, lenAidAuthentIC_V5);
@@ -195,15 +195,15 @@ auth_select_aid(struct sc_card *card)
 	rv = iso_ops->select_file(card, &tmp_path, NULL);
 	sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL, "rv %i\n", rv);
 	SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, rv, "select parent failed");
-	
+
 	sc_format_path("3F00", &tmp_path);
 	rv = iso_ops->select_file(card, &tmp_path, &auth_current_df);
 	sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL, "rv %i\n", rv);
 	SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, rv, "select parent failed");
-	
+
 	sc_format_path("3F00", &card->cache.current_path);
 	sc_file_dup(&auth_current_ef, auth_current_df);
-		
+
 	memcpy(data->aid, aidAuthentIC_V5, lenAidAuthentIC_V5);
 	data->aid_len = lenAidAuthentIC_V5;
 	card->name = nameAidAuthentIC_V5;
@@ -213,7 +213,7 @@ auth_select_aid(struct sc_card *card)
 }
 
 
-static int 
+static int
 auth_match_card(struct sc_card *card)
 {
 	if (_sc_match_atr(card, oberthur_atrs, &card->type) < 0)
@@ -223,14 +223,14 @@ auth_match_card(struct sc_card *card)
 }
 
 
-static int 
+static int
 auth_init(struct sc_card *card)
 {
 	struct auth_private_data *data;
 	struct sc_path path;
 	unsigned long flags;
 	int rv = 0;
-	
+
 	data = calloc(1, sizeof(struct auth_private_data));
 	if (!data)
 		SC_FUNC_RETURN(card->ctx, SC_LOG_DEBUG_NORMAL, SC_ERROR_OUT_OF_MEMORY);
@@ -245,7 +245,7 @@ auth_init(struct sc_card *card)
 		sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL, "Failed to initialize %s\n", card->name);
 		SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, SC_ERROR_INVALID_CARD, "Failed to initialize");
 	}
-	
+
 	flags = SC_ALGORITHM_RSA_PAD_PKCS1 | SC_ALGORITHM_RSA_PAD_ISO9796;
 	flags |= SC_ALGORITHM_RSA_HASH_NONE;
 	flags |= SC_ALGORITHM_ONBOARD_KEY_GEN;
@@ -260,7 +260,7 @@ auth_init(struct sc_card *card)
 	info.flags = flags;
 	info.key_length = 64;
 	_sc_card_add_algorithm(card, &info);
-	
+
 	flags = SC_ALGORITHM_SKEY_CBC | SC_ALGORITHM_SKEY_ECB;
 	info.algorithm = SC_ALGORITHM_3DES;
 	info.flags = flags;
@@ -275,8 +275,8 @@ auth_init(struct sc_card *card)
 }
 
 
-static void 
-add_acl_entry(struct sc_card *card, struct sc_file *file, unsigned int op, 
+static void
+add_acl_entry(struct sc_card *card, struct sc_file *file, unsigned int op,
 		unsigned char acl_byte)
 {
 	if ((acl_byte & 0xE0) == 0x60)   {
@@ -284,7 +284,7 @@ add_acl_entry(struct sc_card *card, struct sc_file *file, unsigned int op,
 		sc_file_add_acl_entry(file, op, SC_AC_PRO, acl_byte);
 		return;
 	}
-	
+
 	switch (acl_byte) {
 	case 0x00:
 		sc_file_add_acl_entry(file, op, SC_AC_NONE, SC_AC_KEY_REF_NONE);
@@ -312,29 +312,29 @@ add_acl_entry(struct sc_card *card, struct sc_file *file, unsigned int op,
 }
 
 
-static int 
-tlv_get(const unsigned char *msg, int len, unsigned char tag, 
+static int
+tlv_get(const unsigned char *msg, int len, unsigned char tag,
 		unsigned char *ret, int *ret_len)
 {
 	int cur = 0;
-	
-	while (cur < len)  { 
+
+	while (cur < len)  {
 		if (*(msg+cur)==tag)  {
 			int ii, ln = *(msg+cur+1);
-		
-			if (ln > *ret_len)   
+
+			if (ln > *ret_len)
 				return SC_ERROR_WRONG_LENGTH;
 
 			for (ii=0; ii<ln; ii++)
 				*(ret + ii) = *(msg+cur+2+ii);
 			*ret_len = ln;
-			
+
 			return SC_SUCCESS;
 		}
-		
+
 		cur += 2 + *(msg+cur+1);
 	}
-		
+
 	return SC_ERROR_INCORRECT_PARAMETERS;
 }
 
@@ -345,24 +345,24 @@ auth_process_fci(struct sc_card *card, struct sc_file *file,
 {
 	unsigned char type, attr[SC_OBERTHUR_MAX_ATTR_SIZE];
 	int attr_len = sizeof(attr);
-	
+
 	SC_FUNC_CALLED(card->ctx, SC_LOG_DEBUG_VERBOSE);
 	attr_len = sizeof(attr);
 	if (tlv_get(buf, buflen, 0x82, attr, &attr_len))
 		SC_FUNC_RETURN(card->ctx, SC_LOG_DEBUG_NORMAL, SC_ERROR_UNKNOWN_DATA_RECEIVED);
 	type = attr[0];
-	
+
 	attr_len = sizeof(attr);
 	if (tlv_get(buf, buflen, 0x83, attr, &attr_len))
 		SC_FUNC_RETURN(card->ctx, SC_LOG_DEBUG_NORMAL, SC_ERROR_UNKNOWN_DATA_RECEIVED);
 	file->id = attr[0]*0x100 + attr[1];
-	
+
 	attr_len = sizeof(attr);
 	if (tlv_get(buf, buflen, type==0x01 ? 0x80 : 0x85, attr, &attr_len))
 		SC_FUNC_RETURN(card->ctx, SC_LOG_DEBUG_NORMAL, SC_ERROR_UNKNOWN_DATA_RECEIVED);
 	if (attr_len<2 && type != 0x04)
 		SC_FUNC_RETURN(card->ctx, SC_LOG_DEBUG_NORMAL, SC_ERROR_UNKNOWN_DATA_RECEIVED);
-		
+
 	switch (type) {
 	case 0x01:
 		file->type = SC_FILE_TYPE_WORKING_EF;
@@ -390,7 +390,7 @@ auth_process_fci(struct sc_card *card, struct sc_file *file,
 	case 0x12:
 		file->type = SC_FILE_TYPE_INTERNAL_EF;
 		file->ef_structure = SC_CARDCTL_OBERTHUR_KEY_RSA_PUBLIC;
-		
+
 		file->size = attr[0]*0x100 + attr[1];
 		if (file->size==512)
 			file->size = PUBKEY_512_ASN1_SIZE;
@@ -416,7 +416,7 @@ auth_process_fci(struct sc_card *card, struct sc_file *file,
 	default:
 		SC_FUNC_RETURN(card->ctx, SC_LOG_DEBUG_NORMAL, SC_ERROR_UNKNOWN_DATA_RECEIVED);
 	}
-	
+
 	attr_len = sizeof(attr);
 	if (tlv_get(buf, buflen, 0x86, attr, &attr_len))
 		SC_FUNC_RETURN(card->ctx, SC_LOG_DEBUG_NORMAL, SC_ERROR_UNKNOWN_DATA_RECEIVED);
@@ -432,7 +432,7 @@ auth_process_fci(struct sc_card *card, struct sc_file *file,
 		add_acl_entry(card, file, SC_AC_OP_PIN_CHANGE, attr[5]);
 		add_acl_entry(card, file, SC_AC_OP_PIN_RESET, attr[6]);
 		sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL, "SC_FILE_TYPE_DF:CRYPTO %X\n", attr[1]);
-	} 
+	}
 	else if (file->type == SC_FILE_TYPE_INTERNAL_EF)  { /* EF */
 		switch (file->ef_structure) {
 		case SC_CARDCTL_OBERTHUR_KEY_DES:
@@ -482,7 +482,7 @@ auth_process_fci(struct sc_card *card, struct sc_file *file,
 }
 
 
-static int 
+static int
 auth_select_file(struct sc_card *card, const struct sc_path *in_path,
 				 struct sc_file **file_out)
 {
@@ -495,49 +495,49 @@ auth_select_file(struct sc_card *card, const struct sc_path *in_path,
 	assert(card != NULL && in_path != NULL);
 
 	memcpy(&path, in_path, sizeof(struct sc_path));
-	
-	sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL, "in_path; type=%d, path=%s, out %p\n", 
+
+	sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL, "in_path; type=%d, path=%s, out %p\n",
 			in_path->type, sc_print_path(in_path), file_out);
-	sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL, "current path; type=%d, path=%s\n", 
+	sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL, "current path; type=%d, path=%s\n",
 			auth_current_df->path.type, sc_print_path(&auth_current_df->path));
 	if (auth_current_ef)
-		sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL, "current file; type=%d, path=%s\n", 
+		sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL, "current file; type=%d, path=%s\n",
 				auth_current_ef->path.type, sc_print_path(&auth_current_ef->path));
 
 	if (path.type == SC_PATH_TYPE_PARENT || path.type == SC_PATH_TYPE_FILE_ID)   {
 		if (auth_current_ef)
 			sc_file_free(auth_current_ef);
 		auth_current_ef = NULL;
-		
+
 		rv = iso_ops->select_file(card, &path, &tmp_file);
 		SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, rv, "select file failed");
-		
+
 		if (path.type == SC_PATH_TYPE_PARENT)   {
 			memcpy(&tmp_file->path, &auth_current_df->path, sizeof(struct sc_path));
 			if (tmp_file->path.len > 2)
 				tmp_file->path.len -= 2;
-			
+
 			sc_file_free(auth_current_df);
 			sc_file_dup(&auth_current_df, tmp_file);
 		}
 		else   {
 			if (tmp_file->type == SC_FILE_TYPE_DF)   {
 				sc_concatenate_path(&tmp_file->path, &auth_current_df->path, &path);
-				
+
 				sc_file_free(auth_current_df);
 				sc_file_dup(&auth_current_df, tmp_file);
 			}
 			else   {
-				if (auth_current_ef)   
+				if (auth_current_ef)
 					sc_file_free(auth_current_ef);
 
 				sc_file_dup(&auth_current_ef, tmp_file);
 				sc_concatenate_path(&auth_current_ef->path, &auth_current_df->path, &path);
 			}
 		}
-		if (file_out) 
+		if (file_out)
 			sc_file_dup(file_out, tmp_file);
-	
+
 		sc_file_free(tmp_file);
 	}
 	else if (path.type == SC_PATH_TYPE_DF_NAME)   {
@@ -550,7 +550,7 @@ auth_select_file(struct sc_card *card, const struct sc_path *in_path,
 		SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, rv, "select file failed");
 	}
 	else   {
-		for (offs = 0; offs < path.len && offs < auth_current_df->path.len; offs += 2)  
+		for (offs = 0; offs < path.len && offs < auth_current_df->path.len; offs += 2)
 			if (path.value[offs] != auth_current_df->path.value[offs] ||
 					path.value[offs + 1] != auth_current_df->path.value[offs + 1])
 				break;
@@ -565,28 +565,28 @@ auth_select_file(struct sc_card *card, const struct sc_path *in_path,
 
 				memcpy(&tmp_path, &auth_current_df->path,  sizeof(struct sc_path));
 				tmp_path.type = SC_PATH_TYPE_PARENT;
-				
+
 				rv = auth_select_file (card, &tmp_path, file_out);
 				SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, rv, "select file failed");
 			}
 		}
-	
+
 		if (path.len - offs > 0)   {
 			struct sc_path tmp_path;
-		
-			memset(&tmp_path, 0, sizeof(struct sc_path));	
+
+			memset(&tmp_path, 0, sizeof(struct sc_path));
 			tmp_path.type = SC_PATH_TYPE_FILE_ID;
 			tmp_path.len = 2;
-			
+
 			for (ii=0; ii < path.len - offs; ii+=2)   {
 				memcpy(tmp_path.value, path.value + offs + ii, 2);
-				
+
 				rv = auth_select_file(card, &tmp_path, file_out);
 				SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, rv, "select file failed");
 			}
 		}
 		else if (path.len - offs == 0 && file_out)  {
-			if (sc_compare_path(&path, &auth_current_df->path))   
+			if (sc_compare_path(&path, &auth_current_df->path))
 				sc_file_dup(file_out, auth_current_df);
 			else  if (auth_current_ef)
 				sc_file_dup(file_out, auth_current_ef);
@@ -599,37 +599,37 @@ auth_select_file(struct sc_card *card, const struct sc_path *in_path,
 }
 
 
-static int 
+static int
 auth_list_files(struct sc_card *card, unsigned char *buf, size_t buflen)
 {
 	struct sc_apdu apdu;
 	unsigned char rbuf[SC_MAX_APDU_BUFFER_SIZE];
 	int rv;
-	
+
 	SC_FUNC_CALLED(card->ctx, SC_LOG_DEBUG_VERBOSE);
 	sc_format_apdu(card, &apdu, SC_APDU_CASE_2_SHORT, 0x34, 0, 0);
 	apdu.cla = 0x80;
 	apdu.le = 0x40;
 	apdu.resplen = sizeof(rbuf);
 	apdu.resp = rbuf;
-	
+
 	rv = sc_transmit_apdu(card, &apdu);
 	SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, rv, "APDU transmit failed");
-	
+
 	rv = sc_check_sw(card, apdu.sw1, apdu.sw2);
 	SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, rv, "Card returned error");
-	
+
 	if (apdu.resplen == 0x100 && rbuf[0]==0 && rbuf[1]==0)
 		SC_FUNC_RETURN(card->ctx, SC_LOG_DEBUG_NORMAL, 0);
-	
+
 	buflen = buflen < apdu.resplen ? buflen : apdu.resplen;
 	memcpy(buf, rbuf, buflen);
-	
+
 	SC_FUNC_RETURN(card->ctx, SC_LOG_DEBUG_NORMAL, buflen);
 }
 
 
-static int 
+static int
 auth_delete_file(struct sc_card *card, const struct sc_path *path)
 {
 	struct sc_apdu apdu;
@@ -650,7 +650,7 @@ auth_delete_file(struct sc_card *card, const struct sc_path *path)
 		sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL, "Invalid path length\n");
 		SC_FUNC_RETURN(card->ctx, SC_LOG_DEBUG_NORMAL, SC_ERROR_INVALID_ARGUMENTS);
 	}
-	
+
 	if (path->len > 2)   {
 		struct sc_path parent = *path;
 
@@ -663,15 +663,15 @@ auth_delete_file(struct sc_card *card, const struct sc_path *path)
 	sbuf[0] = path->value[path->len - 2];
 	sbuf[1] = path->value[path->len - 1];
 
-	if (memcmp(sbuf,"\x00\x00",2)==0 || (memcmp(sbuf,"\xFF\xFF",2)==0) || 
+	if (memcmp(sbuf,"\x00\x00",2)==0 || (memcmp(sbuf,"\xFF\xFF",2)==0) ||
 			memcmp(sbuf,"\x3F\xFF",2)==0)
 		SC_FUNC_RETURN(card->ctx, SC_LOG_DEBUG_NORMAL, SC_ERROR_INCORRECT_PARAMETERS);
-	
+
 	sc_format_apdu(card, &apdu, SC_APDU_CASE_3_SHORT, 0xE4, 0x02, 0x00);
 	apdu.lc = 2;
 	apdu.datalen = 2;
 	apdu.data = sbuf;
-	
+
 	rv = sc_transmit_apdu(card, &apdu);
 	SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, rv, "APDU transmit failed");
 	if (apdu.sw1==0x6A && apdu.sw2==0x82)   {
@@ -679,21 +679,21 @@ auth_delete_file(struct sc_card *card, const struct sc_path *path)
 		struct sc_path tmp_path;
 		int ii, len;
 		unsigned char lbuf[SC_MAX_APDU_BUFFER_SIZE];
-		
-		memset(&tmp_path, 0, sizeof(struct sc_path));	
+
+		memset(&tmp_path, 0, sizeof(struct sc_path));
 		tmp_path.type = SC_PATH_TYPE_FILE_ID;
 		memcpy(tmp_path.value, sbuf, 2);
 		tmp_path.len = 2;
 		rv = auth_select_file(card, &tmp_path, NULL);
 		SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, rv, "select DF failed");
-		
+
 		len = auth_list_files(card, lbuf, sizeof(lbuf));
 		SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, len, "list DF failed");
-		
+
 		for (ii=0; ii<len/2; ii++)   {
 			struct sc_path tmp_path_x;
 
-			memset(&tmp_path_x, 0, sizeof(struct sc_path));	
+			memset(&tmp_path_x, 0, sizeof(struct sc_path));
 			tmp_path_x.type = SC_PATH_TYPE_FILE_ID;
 			tmp_path_x.value[0] = *(lbuf + ii*2);
 			tmp_path_x.value[1] = *(lbuf + ii*2 + 1);
@@ -706,11 +706,11 @@ auth_delete_file(struct sc_card *card, const struct sc_path *path)
 		tmp_path.type = SC_PATH_TYPE_PARENT;
 		rv = auth_select_file(card, &tmp_path, NULL);
 		SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, rv, "select parent failed");
-		
+
 		apdu.p1 = 1;
 		rv = sc_transmit_apdu(card, &apdu);
 	}
-		
+
 	SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, rv, "APDU transmit failed");
 	rv = sc_check_sw(card, apdu.sw1, apdu.sw2);
 
@@ -718,41 +718,41 @@ auth_delete_file(struct sc_card *card, const struct sc_path *path)
 }
 
 
-static int 
+static int
 acl_to_ac_byte(struct sc_card *card, const struct sc_acl_entry *e)
 {
 	unsigned key_ref;
 
 	if (e == NULL)
 		return SC_ERROR_OBJECT_NOT_FOUND;
-	
+
 	key_ref = e->key_ref & ~OBERTHUR_PIN_LOCAL;
 
 	switch (e->method) {
 	case SC_AC_NONE:
 		SC_FUNC_RETURN(card->ctx, SC_LOG_DEBUG_NORMAL, 0);
-		
+
 	case SC_AC_CHV:
 		if (key_ref > 0 && key_ref < 6)
 			SC_FUNC_RETURN(card->ctx, SC_LOG_DEBUG_NORMAL, (0x20 | key_ref));
 		else
 			SC_FUNC_RETURN(card->ctx, SC_LOG_DEBUG_NORMAL, SC_ERROR_INCORRECT_PARAMETERS);
-		
+
 	case SC_AC_PRO:
 		if (((key_ref & 0xE0) != 0x60) || ((key_ref & 0x18) == 0))
 			SC_FUNC_RETURN(card->ctx, SC_LOG_DEBUG_NORMAL, SC_ERROR_INCORRECT_PARAMETERS);
 		else
 			SC_FUNC_RETURN(card->ctx, SC_LOG_DEBUG_NORMAL, key_ref);
-											
+
 	case SC_AC_NEVER:
 		return 0xff;
 	}
-		
+
 	SC_FUNC_RETURN(card->ctx, SC_LOG_DEBUG_NORMAL, SC_ERROR_INCORRECT_PARAMETERS);
 }
 
 
-static int 
+static int
 encode_file_structure_V5(struct sc_card *card, const struct sc_file *file,
 				 unsigned char *buf, size_t *buflen)
 {
@@ -764,7 +764,7 @@ encode_file_structure_V5(struct sc_card *card, const struct sc_file *file,
 	SC_FUNC_CALLED(card->ctx, SC_LOG_DEBUG_VERBOSE);
 	sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL, "id %04X; size %i; type 0x%X/0x%X\n",
 			file->id, file->size, file->type, file->ef_structure);
-	
+
 	if (*buflen < 0x18)
 		SC_FUNC_RETURN(card->ctx, SC_LOG_DEBUG_NORMAL, SC_ERROR_INCORRECT_PARAMETERS);
 
@@ -817,21 +817,21 @@ encode_file_structure_V5(struct sc_card *card, const struct sc_file *file,
 		sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL, "Invalid EF structure 0x%X/0x%X\n", file->type, file->ef_structure);
 		SC_FUNC_RETURN(card->ctx, SC_LOG_DEBUG_NORMAL, SC_ERROR_INCORRECT_PARAMETERS);
 	}
-	
+
 	p[6] = 0x83;
 	p[7] = 0x02;
 	p[8] = file->id >> 8;
 	p[9] = file->id & 0xFF;
-	
+
 	p[10] = 0x85;
 	p[11] = 0x02;
 
 	size = file->size;
-	
+
 	if (file->type == SC_FILE_TYPE_DF)   {
 		size &= 0xFF;
 	}
-	else if (file->type == SC_FILE_TYPE_INTERNAL_EF && 
+	else if (file->type == SC_FILE_TYPE_INTERNAL_EF &&
 			file->ef_structure == SC_CARDCTL_OBERTHUR_KEY_RSA_PUBLIC)   {
 		sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL, "ef %s\n","SC_FILE_EF_RSA_PUBLIC");
 		if (file->size == PUBKEY_512_ASN1_SIZE || file->size == 512)
@@ -861,10 +861,10 @@ encode_file_structure_V5(struct sc_card *card, const struct sc_file *file,
 
 	p[12] = (size >> 8) & 0xFF;
 	p[13] = size & 0xFF;
-	
+
 	p[14] = 0x86;
 	p[15] = 0x08;
-	
+
 	if (file->type == SC_FILE_TYPE_DF) {
 		ops[0] = SC_AC_OP_CREATE;
 		ops[1] = SC_AC_OP_CRYPTO;
@@ -873,7 +873,7 @@ encode_file_structure_V5(struct sc_card *card, const struct sc_file *file,
 		ops[4] = SC_AC_OP_PIN_DEFINE;
 		ops[5] = SC_AC_OP_PIN_CHANGE;
 		ops[6] = SC_AC_OP_PIN_RESET;
-	} 
+	}
 	else if (file->type == SC_FILE_TYPE_WORKING_EF)   {
 		if (file->ef_structure == SC_FILE_EF_TRANSPARENT)   {
 			sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL, "SC_FILE_EF_TRANSPARENT\n");
@@ -895,7 +895,7 @@ encode_file_structure_V5(struct sc_card *card, const struct sc_file *file,
 			sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL, "EF_DES\n");
 			ops[0] = SC_AC_OP_UPDATE;
 			ops[1] = SC_AC_OP_PSO_DECRYPT;
-			ops[2] = SC_AC_OP_PSO_ENCRYPT; 
+			ops[2] = SC_AC_OP_PSO_ENCRYPT;
 			ops[3] = SC_AC_OP_PSO_COMPUTE_CHECKSUM;
 			ops[4] = SC_AC_OP_PSO_VERIFY_CHECKSUM;
 			ops[5] = SC_AC_OP_INTERNAL_AUTHENTICATE;
@@ -904,7 +904,7 @@ encode_file_structure_V5(struct sc_card *card, const struct sc_file *file,
 		else if (file->ef_structure == SC_CARDCTL_OBERTHUR_KEY_RSA_PUBLIC)  {
 			sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL, "EF_RSA_PUBLIC\n");
 			ops[0] = SC_AC_OP_UPDATE;
-			ops[2] = SC_AC_OP_PSO_ENCRYPT; 
+			ops[2] = SC_AC_OP_PSO_ENCRYPT;
 			ops[4] = SC_AC_OP_PSO_VERIFY_SIGNATURE;
 			ops[6] = SC_AC_OP_EXTERNAL_AUTHENTICATE;
 		}
@@ -919,7 +919,7 @@ encode_file_structure_V5(struct sc_card *card, const struct sc_file *file,
 
 	for (ii = 0; ii < sizeof(ops); ii++) {
 		const struct sc_acl_entry *entry;
-		
+
 		p[16+ii] = 0xFF;
 		if (ops[ii]==0xFF)
 			continue;
@@ -928,14 +928,14 @@ encode_file_structure_V5(struct sc_card *card, const struct sc_file *file,
 		SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, rv, "Invalid ACL");
 		p[16+ii] = rv;
 	}
-	
+
 	*buflen = 0x18;
-	
+
 	SC_FUNC_RETURN(card->ctx, SC_LOG_DEBUG_NORMAL, SC_SUCCESS);
 }
 
 
-static int 
+static int
 auth_create_file(struct sc_card *card, struct sc_file *file)
 {
 	struct sc_apdu apdu;
@@ -956,7 +956,7 @@ auth_create_file(struct sc_card *card, struct sc_file *file)
 		"id %04X; size %i; type 0x%X; ef 0x%X\n",
 		file->id, file->size, file->type, file->ef_structure);
 
-	if (file->id==0x0000 || file->id==0xFFFF || file->id==0x3FFF) 
+	if (file->id==0x0000 || file->id==0xFFFF || file->id==0x3FFF)
 		SC_FUNC_RETURN(card->ctx, SC_LOG_DEBUG_NORMAL, SC_ERROR_INVALID_ARGUMENTS);
 
 	rv = sc_path_print(pbuf, sizeof(pbuf), &card->cache.current_path);
@@ -965,23 +965,23 @@ auth_create_file(struct sc_card *card, struct sc_file *file)
 
 	if (file->path.len)   {
 		memcpy(&path, &file->path, sizeof(path));
-		if (path.len>2)   
+		if (path.len>2)
 			path.len -= 2;
-	
+
 		if (auth_select_file(card, &path, NULL))   {
 			sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL, "Cannot select parent DF.\n");
 			SC_FUNC_RETURN(card->ctx, SC_LOG_DEBUG_NORMAL, SC_ERROR_INVALID_ARGUMENTS);
 		}
 	}
-	
+
 	rv = encode_file_structure_V5(card, file, sbuf, &sendlen);
 	SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, rv, "File structure encoding failed");
-	
+
 	if (file->type != SC_FILE_TYPE_DF && file->ef_structure != SC_FILE_EF_TRANSPARENT)
 		rec_nr = file->record_count;
 	else
 		rec_nr = 0;
-	
+
 	sc_format_apdu(card, &apdu, SC_APDU_CASE_3_SHORT, 0xE0, 0x00, rec_nr);
 	apdu.data = sbuf;
 	apdu.datalen = sendlen;
@@ -991,7 +991,7 @@ auth_create_file(struct sc_card *card, struct sc_file *file)
 	SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, rv, "APDU transmit failed");
 	rv = sc_check_sw(card, apdu.sw1, apdu.sw2);
 	SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, rv, "Card returned error");
-	
+
 	/* select created DF. */
 	if (file->type == SC_FILE_TYPE_DF)   {
 		struct sc_path tmp_path;
@@ -1001,7 +1001,7 @@ auth_create_file(struct sc_card *card, struct sc_file *file)
 		tmp_path.value[0] = file->id >> 8;
 		tmp_path.value[1] = file->id & 0xFF;
 		tmp_path.len = 2;
-		
+
 		rv = auth_select_file(card, &tmp_path, &df_file);
 		sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL, "rv %i", rv);
 	}
@@ -1014,39 +1014,39 @@ auth_create_file(struct sc_card *card, struct sc_file *file)
 }
 
 
-static int 
-auth_set_security_env(struct sc_card *card, 
-		const struct sc_security_env *env, int se_num)   
+static int
+auth_set_security_env(struct sc_card *card,
+		const struct sc_security_env *env, int se_num)
 {
 	struct auth_senv *auth_senv = &((struct auth_private_data *) card->drv_data)->senv;
 	struct sc_apdu apdu;
 	long unsigned pads = env->algorithm_flags & SC_ALGORITHM_RSA_PADS;
 	long unsigned supported_pads = SC_ALGORITHM_RSA_PAD_PKCS1 | SC_ALGORITHM_RSA_PAD_ISO9796;
 	int rv;
-	unsigned char rsa_sbuf[3] = { 
+	unsigned char rsa_sbuf[3] = {
 		0x80, 0x01, 0xFF
 	};
 	unsigned char des_sbuf[13] = {
-		0x80, 0x01, 0x01, 
+		0x80, 0x01, 0x01,
 		0x87, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
 	};
 
 	SC_FUNC_CALLED(card->ctx, SC_LOG_DEBUG_VERBOSE);
-	sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL, "op %i; path %s; key_ref 0x%X; algos 0x%X; flags 0x%X\n", 
+	sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL, "op %i; path %s; key_ref 0x%X; algos 0x%X; flags 0x%X\n",
 			env->operation, sc_print_path(&env->file_ref), env->key_ref[0],
 			env->algorithm_flags, env->flags);
 
 	memset(auth_senv, 0, sizeof(struct auth_senv));
-	
-	if (!(env->flags & SC_SEC_ENV_FILE_REF_PRESENT))  
+
+	if (!(env->flags & SC_SEC_ENV_FILE_REF_PRESENT))
 		SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, SC_ERROR_INTERNAL, "Key file is not selected.");
-	
+
 	switch (env->algorithm)   {
 	case SC_ALGORITHM_DES:
 	case SC_ALGORITHM_3DES:
-		sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL, "algo SC_ALGORITHM_xDES: ref %X, flags %X\n", 
+		sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL, "algo SC_ALGORITHM_xDES: ref %X, flags %X\n",
 				env->algorithm_ref, env->flags);
-		
+
 		if (env->operation == SC_SEC_OPERATION_DECIPHER)   {
 			sc_format_apdu(card, &apdu, SC_APDU_CASE_3_SHORT, 0x22, 0x41, 0xB8);
 			apdu.lc = 3;
@@ -1057,22 +1057,22 @@ auth_set_security_env(struct sc_card *card,
 			sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL, "Invalid crypto operation: %X\n", env->operation);
 			SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, SC_ERROR_NOT_SUPPORTED, "Invalid crypto operation");
 		}
-	
+
 		break;
 	case SC_ALGORITHM_RSA:
 		sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL, "algo SC_ALGORITHM_RSA\n");
 		if (env->algorithm_flags & SC_ALGORITHM_RSA_HASHES) {
 			SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, SC_ERROR_NOT_SUPPORTED, "No support for hashes.");
 		}
-		
+
 		if (pads & (~supported_pads))   {
 			sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL, "No support for PAD %X\n",pads);
 			SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, SC_ERROR_NOT_SUPPORTED, "No padding support.");
 		}
-	
+
 		if (env->operation == SC_SEC_OPERATION_SIGN)   {
 			rsa_sbuf[2] = 0x11;
-			
+
 			sc_format_apdu(card, &apdu, SC_APDU_CASE_3_SHORT, 0x22, 0x41, 0xB6);
 			apdu.lc = sizeof(rsa_sbuf);
 			apdu.datalen = sizeof(rsa_sbuf);
@@ -1080,7 +1080,7 @@ auth_set_security_env(struct sc_card *card,
 		}
 		else if (env->operation == SC_SEC_OPERATION_DECIPHER)   {
 			rsa_sbuf[2] = 0x11;
-		
+
 			sc_format_apdu(card, &apdu, SC_APDU_CASE_3_SHORT, 0x22, 0x41, 0xB8);
 			apdu.lc = sizeof(rsa_sbuf);
 			apdu.datalen = sizeof(rsa_sbuf);
@@ -1090,31 +1090,31 @@ auth_set_security_env(struct sc_card *card,
 			sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL, "Invalid crypto operation: %X\n", env->operation);
 			SC_FUNC_RETURN(card->ctx, SC_LOG_DEBUG_NORMAL, SC_ERROR_NOT_SUPPORTED);
 		}
-	
+
 		break;
 	default:
 		SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, SC_ERROR_NOT_SUPPORTED, "Invalid crypto algorithm supplied");
 	}
-	
+
 	rv = sc_transmit_apdu(card, &apdu);
 	SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, rv, "APDU transmit failed");
 	rv = sc_check_sw(card, apdu.sw1, apdu.sw2);
 	SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, rv, "Card returned error");
-	
+
 	auth_senv->algorithm = env->algorithm;
 
 	SC_FUNC_RETURN(card->ctx, SC_LOG_DEBUG_NORMAL, rv);
 }
 
 
-static int 
+static int
 auth_restore_security_env(struct sc_card *card, int se_num)
 {
 	return SC_SUCCESS;
 }
 
 
-static int 
+static int
 auth_compute_signature(struct sc_card *card, const unsigned char *in, size_t ilen,
 		unsigned char * out, size_t olen)
 {
@@ -1131,7 +1131,7 @@ auth_compute_signature(struct sc_card *card, const unsigned char *in, size_t ile
 		sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL, "Illegal input length %d\n", ilen);
 		SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, SC_ERROR_INVALID_ARGUMENTS, "Illegal input length");
 	}
-	
+
 	sc_format_apdu(card, &apdu, SC_APDU_CASE_4_SHORT, 0x2A, 0x9E, 0x9A);
 	apdu.datalen = ilen;
 	apdu.data = in;
@@ -1139,25 +1139,25 @@ auth_compute_signature(struct sc_card *card, const unsigned char *in, size_t ile
 	apdu.le = olen > 256 ? 256 : olen;
 	apdu.resp = resp;
 	apdu.resplen = olen;
-	
+
 	rv = sc_transmit_apdu(card, &apdu);
 	SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, rv, "APDU transmit failed");
 	rv = sc_check_sw(card, apdu.sw1, apdu.sw2);
 	SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, rv, "Compute signature failed");
-	
+
 	if (apdu.resplen > olen)   {
 		sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL, "Compute signature failed: invalide response length %i\n",
 				apdu.resplen);
 		SC_FUNC_RETURN(card->ctx, SC_LOG_DEBUG_NORMAL, SC_ERROR_CARD_CMD_FAILED);
 	}
-	
+
 	memcpy(out, apdu.resp, apdu.resplen);
 
 	SC_FUNC_RETURN(card->ctx, SC_LOG_DEBUG_NORMAL, apdu.resplen);
 }
 
 
-static int 
+static int
 auth_decipher(struct sc_card *card, const unsigned char *in, size_t inlen,
 				unsigned char *out, size_t outlen)
 {
@@ -1167,17 +1167,17 @@ auth_decipher(struct sc_card *card, const unsigned char *in, size_t inlen,
 
 	SC_FUNC_CALLED(card->ctx, SC_LOG_DEBUG_VERBOSE);
 	sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL,"crgram_len %i;  outlen %i\n", inlen, outlen);
-	if (!out || !outlen || inlen > SC_MAX_APDU_BUFFER_SIZE) 
+	if (!out || !outlen || inlen > SC_MAX_APDU_BUFFER_SIZE)
 		SC_FUNC_RETURN(card->ctx, SC_LOG_DEBUG_NORMAL, SC_ERROR_INVALID_ARGUMENTS);
-	
+
 	sc_format_apdu(card, &apdu, SC_APDU_CASE_4_SHORT, 0x2A, 0x80, 0x86);
-	
+
 	sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL, "algorithm SC_ALGORITHM_RSA\n");
 	if (inlen % 64)   {
 		rv = SC_ERROR_INVALID_ARGUMENTS;
 		goto done;
 	}
-				
+
 	_inlen = inlen;
 	if (_inlen == 256)   {
 		apdu.cla |= 0x10;
@@ -1187,19 +1187,19 @@ auth_decipher(struct sc_card *card, const unsigned char *in, size_t inlen,
 		apdu.resplen = SC_MAX_APDU_BUFFER_SIZE;
 		apdu.lc = 8;
 		apdu.le = 256;
-			
+
 		rv = sc_transmit_apdu(card, &apdu);
 		sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL, "rv %i", rv);
 		SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, rv, "APDU transmit failed");
 		rv = sc_check_sw(card, apdu.sw1, apdu.sw2);
 		SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, rv, "Card returned error");
-		
+
 		_inlen -= 8;
 		in += 8;
 
 		apdu.cla &= ~0x10;
 	}
-	
+
 #if 0
 	case SC_ALGORITHM_DES:
 	case SC_ALGORITHM_3DES:
@@ -1217,7 +1217,7 @@ auth_decipher(struct sc_card *card, const unsigned char *in, size_t inlen,
 	apdu.resplen = SC_MAX_APDU_BUFFER_SIZE;
 	apdu.lc = _inlen;
 	apdu.le = _inlen;
-	
+
 	rv = sc_transmit_apdu(card, &apdu);
 	sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL, "rv %i", rv);
 	SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, rv, "APDU transmit failed");
@@ -1227,7 +1227,7 @@ auth_decipher(struct sc_card *card, const unsigned char *in, size_t inlen,
 
 	if (outlen > apdu.resplen)
 		outlen = apdu.resplen;
-	
+
 	memcpy(out, apdu.resp, outlen);
 	rv = outlen;
 
@@ -1237,14 +1237,14 @@ done:
 
 
 /* Return the default AAK for this type of card */
-static int 
+static int
 auth_get_default_key(struct sc_card *card, struct sc_cardctl_default_key *data)
 {
 	SC_FUNC_RETURN(card->ctx, SC_LOG_DEBUG_NORMAL, SC_ERROR_NO_DEFAULT_KEY);
 }
 
 
-static int 
+static int
 auth_encode_exponent(unsigned long exponent, unsigned char *buff, size_t buff_len)
 {
 	int    shift;
@@ -1252,8 +1252,8 @@ auth_encode_exponent(unsigned long exponent, unsigned char *buff, size_t buff_le
 
 	for (shift=0; exponent >> (shift+8); shift += 8)
 		;
-	
-	for (ii = 0; ii<buff_len && shift>=0 ; ii++, shift-=8) 
+
+	for (ii = 0; ii<buff_len && shift>=0 ; ii++, shift-=8)
 		*(buff + ii) = (exponent >> shift) & 0xFF;
 
 	if (ii==buff_len)
@@ -1264,21 +1264,21 @@ auth_encode_exponent(unsigned long exponent, unsigned char *buff, size_t buff_le
 
 
 /* Generate key on-card */
-static int 
-auth_generate_key(struct sc_card *card, int use_sm, 
+static int
+auth_generate_key(struct sc_card *card, int use_sm,
 		struct sc_cardctl_oberthur_genkey_info *data)
 {
 	struct sc_apdu apdu;
 	unsigned char sbuf[SC_MAX_APDU_BUFFER_SIZE];
 	struct sc_path tmp_path;
 	int rv = 0;
-	
+
 	SC_FUNC_CALLED(card->ctx, SC_LOG_DEBUG_VERBOSE);
-	if (data->key_bits < 512 || data->key_bits > 2048 || 
+	if (data->key_bits < 512 || data->key_bits > 2048 ||
 			(data->key_bits%0x20)!=0)   {
 		SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, SC_ERROR_INVALID_ARGUMENTS, "Illegal key length");
 	}
-	
+
 	sbuf[0] = (data->id_pub >> 8) & 0xFF;
 	sbuf[1] = data->id_pub & 0xFF;
 	sbuf[2] = (data->id_prv >> 8) & 0xFF;
@@ -1286,7 +1286,7 @@ auth_generate_key(struct sc_card *card, int use_sm,
 	if (data->exponent != 0x10001)   {
 		rv = auth_encode_exponent(data->exponent, &sbuf[5],SC_MAX_APDU_BUFFER_SIZE-6);
 		SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, rv, "Cannot encode exponent");
-		
+
 		sbuf[4] = rv;
 		rv++;
 	}
@@ -1306,23 +1306,23 @@ auth_generate_key(struct sc_card *card, int use_sm,
 	SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, rv, "APDU transmit failed");
 	rv = sc_check_sw(card, apdu.sw1, apdu.sw2);
 	SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, rv, "Card returned error");
-		
-	memset(&tmp_path, 0, sizeof(struct sc_path));	
+
+	memset(&tmp_path, 0, sizeof(struct sc_path));
 	tmp_path.type = SC_PATH_TYPE_FILE_ID;
 	tmp_path.len = 2;
 	memcpy(tmp_path.value, sbuf, 2);
-		
+
 	rv = auth_select_file(card, &tmp_path, NULL);
 	SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, rv, "cannot select public key");
-		
+
 	rv = auth_read_component(card, SC_CARDCTL_OBERTHUR_KEY_RSA_PUBLIC,
 			1, apdu.resp, data->key_bits/8);
 	SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, rv, "auth_read_component() returned error");
-		
+
 	apdu.resplen = rv;
-	
+
 	if (data->pubkey)   {
-		if (data->pubkey_len < apdu.resplen)  
+		if (data->pubkey_len < apdu.resplen)
 			SC_FUNC_RETURN(card->ctx, SC_LOG_DEBUG_NORMAL, SC_ERROR_INVALID_ARGUMENTS);
 
 		memcpy(data->pubkey,apdu.resp,apdu.resplen);
@@ -1343,7 +1343,7 @@ auth_update_component(struct sc_card *card, struct auth_update_component_info *a
 	unsigned char sbuf[SC_MAX_APDU_BUFFER_SIZE + 0x10];
 	unsigned char ins, p1, p2;
 	int rv, len;
-	
+
 	SC_FUNC_CALLED(card->ctx, SC_LOG_DEBUG_VERBOSE);
 	if (args->len > sizeof(sbuf) || args->len > 0x100)
 		SC_FUNC_RETURN(card->ctx, SC_LOG_DEBUG_NORMAL, SC_ERROR_INVALID_ARGUMENTS);
@@ -1353,24 +1353,24 @@ auth_update_component(struct sc_card *card, struct auth_update_component_info *a
 	p1 = args->component;
 	p2 = 0x04;
 	len = 0;
-	
+
 	sbuf[len++] = args->type;
 	sbuf[len++] = args->len;
 	memcpy(sbuf + len, args->data, args->len);
 	len += args->len;
-		
+
 	if (args->type == SC_CARDCTL_OBERTHUR_KEY_DES)   {
 		int outl;
 		const unsigned char in[8] = {0,0,0,0,0,0,0,0};
 		unsigned char out[8];
 		EVP_CIPHER_CTX ctx;
-			
+
 		if (args->len!=8 && args->len!=24)
 			SC_FUNC_RETURN(card->ctx, SC_LOG_DEBUG_NORMAL, SC_ERROR_INVALID_ARGUMENTS);
-		
+
 		p2 = 0;
 		EVP_CIPHER_CTX_init(&ctx);
-		if (args->len == 24) 
+		if (args->len == 24)
 			EVP_EncryptInit_ex(&ctx, EVP_des_ede(), NULL, args->data, NULL);
 		else
 			EVP_EncryptInit_ex(&ctx, EVP_des_ecb(), NULL, args->data, NULL);
@@ -1405,7 +1405,7 @@ auth_update_component(struct sc_card *card, struct auth_update_component_info *a
 		rv = sc_transmit_apdu(card, &apdu);
 		apdu.cla &= ~0x10;
 		SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, rv, "APDU transmit failed");
-			
+
 		sbuf[0] = args->type;
 		sbuf[1] = 0xE0;
 		memcpy(sbuf + 2, args->data + 0x20, 0xE0);
@@ -1428,9 +1428,9 @@ static int
 auth_update_key(struct sc_card *card, struct sc_cardctl_oberthur_updatekey_info *info)
 {
 	int rv, ii;
-	
+
 	SC_FUNC_CALLED(card->ctx, SC_LOG_DEBUG_VERBOSE);
-	
+
 	if (info->data_len != sizeof(void *) || !info->data)
 		SC_FUNC_RETURN(card->ctx, SC_LOG_DEBUG_NORMAL, SC_ERROR_INVALID_ARGUMENTS);
 
@@ -1446,29 +1446,29 @@ auth_update_key(struct sc_card *card, struct sc_cardctl_oberthur_updatekey_info
 		bn[4] = rsa->dmq1;
 		for (ii=0;ii<5;ii++)   {
 			struct auth_update_component_info args;
-			
+
 			memset(&args, 0, sizeof(args));
 			args.type = SC_CARDCTL_OBERTHUR_KEY_RSA_CRT;
 			args.component = ii+1;
 			args.data = bn[ii].data;
 			args.len = bn[ii].len;
-			
+
 			rv = auth_update_component(card, &args);
 			SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, rv, "Update RSA component failed");
 		}
 	}
 	else if (info->type == SC_CARDCTL_OBERTHUR_KEY_DES)   {
-		rv = SC_ERROR_NOT_SUPPORTED; 
+		rv = SC_ERROR_NOT_SUPPORTED;
 	}
 	else   {
 		rv = SC_ERROR_INVALID_DATA;
 	}
-	
+
 	SC_FUNC_RETURN(card->ctx, SC_LOG_DEBUG_NORMAL, rv);
 }
 
 
-static int 
+static int
 auth_card_ctl(struct sc_card *card, unsigned long cmd, void *ptr)
 {
 	switch (cmd) {
@@ -1479,11 +1479,11 @@ auth_card_ctl(struct sc_card *card, unsigned long cmd, void *ptr)
 		return auth_generate_key(card, 0,
 				(struct sc_cardctl_oberthur_genkey_info *) ptr);
 	case SC_CARDCTL_OBERTHUR_UPDATE_KEY:
-		return auth_update_key(card, 
+		return auth_update_key(card,
 				(struct sc_cardctl_oberthur_updatekey_info *) ptr);
 	case SC_CARDCTL_OBERTHUR_CREATE_PIN:
 		return auth_create_reference_data(card,
-				(struct sc_cardctl_oberthur_createpin_info *) ptr); 
+				(struct sc_cardctl_oberthur_createpin_info *) ptr);
     case SC_CARDCTL_GET_SERIALNR:
         return auth_get_serialnr(card, (struct sc_serial_number *)ptr);
 	case SC_CARDCTL_LIFECYCLE_GET:
@@ -1496,7 +1496,7 @@ auth_card_ctl(struct sc_card *card, unsigned long cmd, void *ptr)
 
 
 static int
-auth_read_component(struct sc_card *card, enum SC_CARDCTL_OBERTHUR_KEY_TYPE type, 
+auth_read_component(struct sc_card *card, enum SC_CARDCTL_OBERTHUR_KEY_TYPE type,
 		int num, unsigned char *out, size_t outlen)
 {
 	struct sc_apdu apdu;
@@ -1508,7 +1508,7 @@ auth_read_component(struct sc_card *card, enum SC_CARDCTL_OBERTHUR_KEY_TYPE type
 
 	if (!outlen || type!=SC_CARDCTL_OBERTHUR_KEY_RSA_PUBLIC)
 		SC_FUNC_RETURN(card->ctx, SC_LOG_DEBUG_NORMAL, SC_ERROR_INCORRECT_PARAMETERS);
-	
+
 	sc_format_apdu(card, &apdu, SC_APDU_CASE_2_SHORT, 0xB4,	num, 0x00);
 	apdu.cla |= 0x80;
 	apdu.le = outlen;
@@ -1519,26 +1519,26 @@ auth_read_component(struct sc_card *card, enum SC_CARDCTL_OBERTHUR_KEY_TYPE type
 
 	rv = sc_check_sw(card, apdu.sw1, apdu.sw2);
 	SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, rv, "Card returned error");
-		
+
 	if (outlen < apdu.resplen)
 		SC_FUNC_RETURN(card->ctx, SC_LOG_DEBUG_NORMAL, SC_ERROR_WRONG_LENGTH);
-		
+
 	memcpy(out, apdu.resp, apdu.resplen);
 	SC_FUNC_RETURN(card->ctx, SC_LOG_DEBUG_NORMAL, apdu.resplen);
 }
 
 
-static int 
+static int
 auth_get_pin_reference (struct sc_card *card, int type, int reference, int cmd, int *out_ref)
 {
 	if (!out_ref)
 		SC_FUNC_RETURN(card->ctx, SC_LOG_DEBUG_NORMAL, SC_ERROR_INVALID_ARGUMENTS);
-	
+
 	switch (type) {
 	case SC_AC_CHV:
 		if (reference != 1 && reference != 2 && reference != 4)
 			SC_FUNC_RETURN(card->ctx, SC_LOG_DEBUG_NORMAL, SC_ERROR_INVALID_PIN_REFERENCE);
-		
+
 		*out_ref = reference;
 		if (reference == 1 || reference == 4)
 			if (cmd == SC_PIN_CMD_VERIFY)
@@ -1553,14 +1553,14 @@ auth_get_pin_reference (struct sc_card *card, int type, int reference, int cmd,
 }
 
 
-static void 
-auth_init_pin_info(struct sc_card *card, struct sc_pin_cmd_pin *pin, 
+static void
+auth_init_pin_info(struct sc_card *card, struct sc_pin_cmd_pin *pin,
 		unsigned int type)
 {
 	pin->offset = 0;
 	pin->pad_char   = 0xFF;
 	pin->encoding   = SC_PIN_ENCODING_ASCII;
-	
+
 	if (type == OBERTHUR_AUTH_TYPE_PIN)   {
 		pin->max_length = OBERTHUR_AUTH_MAX_LENGTH_PIN;
 		pin->pad_length = OBERTHUR_AUTH_MAX_LENGTH_PIN;
@@ -1573,19 +1573,19 @@ auth_init_pin_info(struct sc_card *card, struct sc_pin_cmd_pin *pin,
 
 
 static int
-auth_pin_verify_pinpad(struct sc_card *card, int pin_reference, int *tries_left) 
+auth_pin_verify_pinpad(struct sc_card *card, int pin_reference, int *tries_left)
 {
 	struct sc_card_driver *iso_drv = sc_get_iso7816_driver();
-	struct sc_pin_cmd_data pin_cmd;    
+	struct sc_pin_cmd_data pin_cmd;
 	struct sc_apdu apdu;
-	unsigned char ffs1[0x100];	        
+	unsigned char ffs1[0x100];
 	int rv;
 
 	SC_FUNC_CALLED(card->ctx, SC_LOG_DEBUG_VERBOSE);
 
 	memset(ffs1, 0xFF, sizeof(ffs1));
 	memset(&pin_cmd, 0, sizeof(pin_cmd));
-	
+
         rv = auth_pin_is_verified(card, pin_reference, tries_left);
     	sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL, "auth_pin_is_verified returned rv %i\n", rv);
 
@@ -1597,8 +1597,8 @@ auth_pin_verify_pinpad(struct sc_card *card, int pin_reference, int *tries_left)
 	pin_cmd.flags |= SC_PIN_CMD_NEED_PADDING;
 
 	/* For Oberthur card, PIN command data length has to be 0x40.
-	 * In PCSC10 v2.06 the uppler limit of pin.max_length is 8. 
-	 * 
+	 * In PCSC10 v2.06 the uppler limit of pin.max_length is 8.
+	 *
 	 * The standard sc_build_pin() throws an error when 'pin.len > pin.max_length' .
 	 * So, let's build our own APDU.
 	 */
@@ -1627,10 +1627,10 @@ auth_pin_verify_pinpad(struct sc_card *card, int pin_reference, int *tries_left)
 	SC_FUNC_RETURN(card->ctx, SC_LOG_DEBUG_NORMAL, rv);
 }
 
-	
+
 static int
-auth_pin_verify(struct sc_card *card, unsigned int type, 
-		struct sc_pin_cmd_data *data, int *tries_left) 
+auth_pin_verify(struct sc_card *card, unsigned int type,
+		struct sc_pin_cmd_data *data, int *tries_left)
 {
 	struct sc_card_driver *iso_drv = sc_get_iso7816_driver();
 	int rv;
@@ -1641,18 +1641,18 @@ auth_pin_verify(struct sc_card *card, unsigned int type,
 		SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, SC_ERROR_NOT_SUPPORTED, "PIN type other then SC_AC_CHV is not supported");
 
 	data->flags |= SC_PIN_CMD_NEED_PADDING;
-	
+
 	auth_init_pin_info(card, &data->pin1, OBERTHUR_AUTH_TYPE_PIN);
 
 	/* User PIN is always local. */
-	if (data->pin_reference == OBERTHUR_PIN_REFERENCE_USER 
+	if (data->pin_reference == OBERTHUR_PIN_REFERENCE_USER
 			|| data->pin_reference == OBERTHUR_PIN_REFERENCE_ONETIME)
 		data->pin_reference  |= OBERTHUR_PIN_LOCAL;
-	
+
         rv = auth_pin_is_verified(card, data->pin_reference, tries_left);
     	sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL, "auth_pin_is_verified returned rv %i\n", rv);
 
-	/* Return if only PIN status has been asked. */ 
+	/* Return if only PIN status has been asked. */
 	if (data->pin1.data && !data->pin1.len)
 		SC_FUNC_RETURN(card->ctx, SC_LOG_DEBUG_NORMAL, rv);
 
@@ -1697,19 +1697,19 @@ auth_pin_is_verified(struct sc_card *card, int pin_reference, int *tries_left)
 
 
 static int
-auth_pin_change_pinpad(struct sc_card *card, struct sc_pin_cmd_data *data, 
-		int *tries_left) 
+auth_pin_change_pinpad(struct sc_card *card, struct sc_pin_cmd_data *data,
+		int *tries_left)
 {
 	struct sc_card_driver *iso_drv = sc_get_iso7816_driver();
-	struct sc_pin_cmd_data pin_cmd;    
+	struct sc_pin_cmd_data pin_cmd;
 	struct sc_apdu apdu;
-	unsigned char ffs1[0x100]; 
-	unsigned char ffs2[0x100]; 
+	unsigned char ffs1[0x100];
+	unsigned char ffs2[0x100];
 	int rv, pin_reference;
 
 	SC_FUNC_CALLED(card->ctx, SC_LOG_DEBUG_VERBOSE);
 
-	pin_reference = data->pin_reference & ~OBERTHUR_PIN_LOCAL; 
+	pin_reference = data->pin_reference & ~OBERTHUR_PIN_LOCAL;
 
 	memset(ffs1, 0xFF, sizeof(ffs1));
 	memset(ffs2, 0xFF, sizeof(ffs2));
@@ -1720,7 +1720,7 @@ auth_pin_change_pinpad(struct sc_card *card, struct sc_pin_cmd_data *data,
 
 	if (data->pin1.data && data->pin1.len)
 		memcpy(ffs1, data->pin1.data, data->pin1.len);
-	
+
 	pin_cmd.flags |= SC_PIN_CMD_NEED_PADDING;
 
 	sc_format_apdu(card, &apdu, SC_APDU_CASE_3_SHORT, 0x24, 0x00, pin_reference);
@@ -1754,11 +1754,11 @@ auth_pin_change_pinpad(struct sc_card *card, struct sc_pin_cmd_data *data,
 
 
 static int
-auth_pin_change(struct sc_card *card, unsigned int type, 
-		struct sc_pin_cmd_data *data, int *tries_left) 
+auth_pin_change(struct sc_card *card, unsigned int type,
+		struct sc_pin_cmd_data *data, int *tries_left)
 {
 	struct sc_card_driver *iso_drv = sc_get_iso7816_driver();
-	int rv;
+	int rv = SC_ERROR_INTERNAL;
 
 	SC_FUNC_CALLED(card->ctx, SC_LOG_DEBUG_VERBOSE);
 
@@ -1790,8 +1790,8 @@ auth_pin_change(struct sc_card *card, unsigned int type,
 
 
 static int
-auth_pin_reset_oberthur_style(struct sc_card *card, unsigned int type, 
-		struct sc_pin_cmd_data *data, int *tries_left) 
+auth_pin_reset_oberthur_style(struct sc_card *card, unsigned int type,
+		struct sc_pin_cmd_data *data, int *tries_left)
 {
 	struct sc_card_driver *iso_drv = sc_get_iso7816_driver();
 	struct sc_pin_cmd_data pin_cmd;
@@ -1799,7 +1799,7 @@ auth_pin_reset_oberthur_style(struct sc_card *card, unsigned int type,
 	struct sc_file *tmp_file = NULL;
 	struct sc_apdu apdu;
 	unsigned char puk[OBERTHUR_AUTH_MAX_LENGTH_PUK];
-	unsigned char ffs1[0x100]; 
+	unsigned char ffs1[0x100];
 	int rv, rvv, local_pin_reference;
 
 	SC_FUNC_CALLED(card->ctx, SC_LOG_DEBUG_VERBOSE);
@@ -1810,7 +1810,7 @@ auth_pin_reset_oberthur_style(struct sc_card *card, unsigned int type,
 		SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, SC_ERROR_INVALID_ARGUMENTS, "Oberthur style 'PIN RESET' failed: invalid PIN reference");
 
 	memset(&pin_cmd, 0, sizeof(pin_cmd));
-	memset(&tmp_path, 0, sizeof(struct sc_path));	
+	memset(&tmp_path, 0, sizeof(struct sc_path));
 
 	pin_cmd.pin_type = SC_AC_CHV;
         pin_cmd.cmd = SC_PIN_CMD_VERIFY;
@@ -1832,7 +1832,7 @@ auth_pin_reset_oberthur_style(struct sc_card *card, unsigned int type,
         SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, rv, "read PUK file error");
 	if (rv != OBERTHUR_AUTH_MAX_LENGTH_PUK)
 		SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, SC_ERROR_INVALID_DATA, "Oberthur style 'PIN RESET' failed");
-	
+
 	memset(ffs1, 0xFF, sizeof(ffs1));
 	memcpy(ffs1, puk, rv);
 
@@ -1887,8 +1887,8 @@ auth_pin_reset_oberthur_style(struct sc_card *card, unsigned int type,
 
 
 static int
-auth_pin_reset(struct sc_card *card, unsigned int type, 
-		struct sc_pin_cmd_data *data, int *tries_left) 
+auth_pin_reset(struct sc_card *card, unsigned int type,
+		struct sc_pin_cmd_data *data, int *tries_left)
 {
 	int rv;
 
@@ -1902,17 +1902,17 @@ auth_pin_reset(struct sc_card *card, unsigned int type,
 }
 
 
-static int 
+static int
 auth_pin_cmd(struct sc_card *card, struct sc_pin_cmd_data *data, int *tries_left)
 {
-	int rv;
+	int rv = SC_ERROR_INTERNAL;
 
 	SC_FUNC_CALLED(card->ctx, SC_LOG_DEBUG_VERBOSE);
 	if (data->pin_type != SC_AC_CHV)
 		SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, SC_ERROR_NOT_SUPPORTED, "auth_pin_cmd() unsupported PIN type");
 
-	sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL, "PIN CMD:%i; reference:%i; pin1:%p/%i, pin2:%p/%i\n", data->cmd, 
-			data->pin_reference, data->pin1.data, data->pin1.len, 
+	sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL, "PIN CMD:%i; reference:%i; pin1:%p/%i, pin2:%p/%i\n", data->cmd,
+			data->pin_reference, data->pin1.data, data->pin1.len,
 			data->pin2.data, data->pin2.len);
 	switch (data->cmd) {
 	case SC_PIN_CMD_VERIFY:
@@ -1935,8 +1935,8 @@ auth_pin_cmd(struct sc_card *card, struct sc_pin_cmd_data *data, int *tries_left
 }
 
 
-static int 
-auth_create_reference_data (struct sc_card *card, 
+static int
+auth_create_reference_data (struct sc_card *card,
 		struct sc_cardctl_oberthur_createpin_info *args)
 {
 	struct sc_apdu apdu;
@@ -1949,19 +1949,19 @@ auth_create_reference_data (struct sc_card *card,
 
 	if (args->type != SC_AC_CHV)
 		SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, SC_ERROR_NOT_SUPPORTED, "Unsupported PIN type");
-	
+
 	if (args->pin_tries < 1 || !args->pin || !args->pin_len)
 		SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, SC_ERROR_INVALID_ARGUMENTS, "Invalid PIN options");
 
-	if (args->ref != OBERTHUR_PIN_REFERENCE_USER && args->ref != OBERTHUR_PIN_REFERENCE_PUK)  
+	if (args->ref != OBERTHUR_PIN_REFERENCE_USER && args->ref != OBERTHUR_PIN_REFERENCE_PUK)
 		SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, SC_ERROR_INVALID_PIN_REFERENCE, "Invalid PIN reference");
-	
+
 	auth_init_pin_info(card, &puk_info, OBERTHUR_AUTH_TYPE_PUK);
 	auth_init_pin_info(card, &pin_info, OBERTHUR_AUTH_TYPE_PIN);
 
 	if (args->puk && args->puk_len && (args->puk_len%puk_info.pad_length))
 		SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, SC_ERROR_INVALID_ARGUMENTS, "Invalid PUK options");
-		
+
 	len = 0;
 	sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL, "len %i", len);
 	sbuf[len++] = args->pin_tries;
@@ -1989,14 +1989,14 @@ auth_create_reference_data (struct sc_card *card,
 	rv = sc_transmit_apdu(card, &apdu);
 	sc_mem_clear(sbuf, sizeof(sbuf));
 	SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, rv, "APDU transmit failed");
-	
+
 	rv = sc_check_sw(card, apdu.sw1, apdu.sw2);
 
 	SC_FUNC_RETURN(card->ctx, SC_LOG_DEBUG_NORMAL, rv);
 }
 
 
-static int 
+static int
 auth_logout(struct sc_card *card)
 {
 	struct sc_apdu apdu;
@@ -2012,14 +2012,14 @@ auth_logout(struct sc_card *card)
 		apdu.p2 = pin_ref | reset_flag;
 		rv = sc_transmit_apdu(card, &apdu);
 		SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, rv, "APDU transmit failed");
-	
+
 	}
 
 	SC_FUNC_RETURN(card->ctx, SC_LOG_DEBUG_NORMAL, rv);
 }
 
 
-static int 
+static int
 write_publickey (struct sc_card *card, unsigned int offset,
 				const unsigned char *buf, size_t count)
 {
@@ -2030,7 +2030,7 @@ write_publickey (struct sc_card *card, unsigned int offset,
 	char debug_buf[2048];
 
 	SC_FUNC_CALLED(card->ctx, SC_LOG_DEBUG_VERBOSE);
-		
+
 	debug_buf[0] = 0;
 	sc_hex_dump(card->ctx, SC_LOG_DEBUG_NORMAL,
 		buf, count, debug_buf, sizeof(debug_buf));
@@ -2041,18 +2041,18 @@ write_publickey (struct sc_card *card, unsigned int offset,
 		SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, SC_ERROR_INVALID_ARGUMENTS, "Invalid offset value");
 
 	len = offset+count > sizeof(rsa_der) ? sizeof(rsa_der) - offset : count;
-		
+
 	memcpy(rsa_der + offset, buf, len);
 	rsa_der_len = offset + len;
-		
+
 	if (rsa_der[0]==0x30)   {
-		if (rsa_der[1] & 0x80)   
+		if (rsa_der[1] & 0x80)
 			for (ii=0; ii < (rsa_der[1]&0x0F); ii++)
 				der_size = der_size*0x100 + rsa_der[2+ii];
 		else
 			der_size = rsa_der[1];
 	}
-	
+
 	sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL, "der_size %i\n",der_size);
 	if (offset + len < der_size + 2)
 		SC_FUNC_RETURN(card->ctx, SC_LOG_DEBUG_NORMAL, len);
@@ -2061,7 +2061,7 @@ write_publickey (struct sc_card *card, unsigned int offset,
 	rsa_der_len = 0;
 	memset(rsa_der, 0, sizeof(rsa_der));
 	SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, rv, "cannot decode public key");
-	
+
 	memset(&args, 0, sizeof(args));
 	args.type = SC_CARDCTL_OBERTHUR_KEY_RSA_PUBLIC;
 	args.component = 1;
@@ -2069,7 +2069,7 @@ write_publickey (struct sc_card *card, unsigned int offset,
 	args.len = key.modulus.len;
 	rv = auth_update_component(card, &args);
 	SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, rv, "Update component failed");
-	
+
 	memset(&args, 0, sizeof(args));
 	args.type = SC_CARDCTL_OBERTHUR_KEY_RSA_PUBLIC;
 	args.component = 2;
@@ -2077,10 +2077,10 @@ write_publickey (struct sc_card *card, unsigned int offset,
 	args.len = key.exponent.len;
 	rv = auth_update_component(card, &args);
 	SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, rv, "Update component failed");
-		
+
 	SC_FUNC_RETURN(card->ctx, SC_LOG_DEBUG_NORMAL, len);
 }
-	
+
 
 static int
 auth_update_binary(struct sc_card *card, unsigned int offset,
@@ -2090,20 +2090,20 @@ auth_update_binary(struct sc_card *card, unsigned int offset,
 
 	SC_FUNC_CALLED(card->ctx, SC_LOG_DEBUG_VERBOSE);
 	sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL, "offset %i; count %i\n", offset, count);
-	sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL, "last selected : magic %X; ef %X\n", 
+	sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL, "last selected : magic %X; ef %X\n",
 			auth_current_ef->magic, auth_current_ef->ef_structure);
-	
+
 	if (offset & ~0x7FFF)
 		SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, SC_ERROR_INVALID_ARGUMENTS, "Invalid file offset");
 
-	if (auth_current_ef->magic==SC_FILE_MAGIC && 
-			 auth_current_ef->ef_structure == SC_CARDCTL_OBERTHUR_KEY_RSA_PUBLIC)  { 
+	if (auth_current_ef->magic==SC_FILE_MAGIC &&
+			 auth_current_ef->ef_structure == SC_CARDCTL_OBERTHUR_KEY_RSA_PUBLIC)  {
 		rv = write_publickey(card, offset, buf, count);
 	}
-	else if (auth_current_ef->magic==SC_FILE_MAGIC && 
+	else if (auth_current_ef->magic==SC_FILE_MAGIC &&
 			auth_current_ef->ef_structure == SC_CARDCTL_OBERTHUR_KEY_DES)   {
 		struct auth_update_component_info args;
-	
+
 		memset(&args, 0, sizeof(args));
 		args.type = SC_CARDCTL_OBERTHUR_KEY_DES;
 		args.data = (unsigned char *)buf;
@@ -2114,7 +2114,7 @@ auth_update_binary(struct sc_card *card, unsigned int offset,
 		rv = iso_ops->update_binary(card, offset, buf, count, 0);
 	}
 
-	SC_FUNC_RETURN(card->ctx, SC_LOG_DEBUG_NORMAL, rv);	
+	SC_FUNC_RETURN(card->ctx, SC_LOG_DEBUG_NORMAL, rv);
 }
 
 
@@ -2124,10 +2124,10 @@ auth_read_binary(struct sc_card *card, unsigned int offset,
 {
 	int rv;
 	char debug_buf[2048];
-	
+
 	SC_FUNC_CALLED(card->ctx, SC_LOG_DEBUG_VERBOSE);
 	sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL,"offset %i; size %i; flags 0x%lX\n", offset, count, flags);
-	sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL,"last selected : magic %X; ef %X\n", 
+	sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL,"last selected : magic %X; ef %X\n",
 			auth_current_ef->magic, auth_current_ef->ef_structure);
 
 	if (offset & ~0x7FFF)
@@ -2142,53 +2142,53 @@ auth_read_binary(struct sc_card *card, unsigned int offset,
 		struct sc_pkcs15_pubkey_rsa key;
 
 		resp_len = sizeof(resp);
-		rv = auth_read_component(card, SC_CARDCTL_OBERTHUR_KEY_RSA_PUBLIC, 
+		rv = auth_read_component(card, SC_CARDCTL_OBERTHUR_KEY_RSA_PUBLIC,
 				2, resp, resp_len);
 		SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, rv, "read component failed");
-		
+
 		for (jj=0; jj<rv && *(resp+jj)==0; jj++)
 			;
 
 		bn[0].data = calloc(1, rv - jj);
 		bn[0].len = rv - jj;
 		memcpy(bn[0].data, resp + jj, rv - jj);
-		
-		rv = auth_read_component(card, SC_CARDCTL_OBERTHUR_KEY_RSA_PUBLIC, 
+
+		rv = auth_read_component(card, SC_CARDCTL_OBERTHUR_KEY_RSA_PUBLIC,
 				1, resp, resp_len);
 		SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, rv, "Cannot read RSA public key component");
-		
+
 		bn[1].data = calloc(1, rv);
 		bn[1].len = rv;
 		memcpy(bn[1].data, resp, rv);
 
 		key.exponent = bn[0];
 		key.modulus = bn[1];
-			
+
 		if (sc_pkcs15_encode_pubkey_rsa(card->ctx, &key, &out, &out_len)) {
-			SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, SC_ERROR_INVALID_ASN1_OBJECT, 
+			SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, SC_ERROR_INVALID_ASN1_OBJECT,
 					"cannot encode RSA public key");
 		}
 		else {
 			rv  = out_len - offset > count ? count : out_len - offset;
 			memcpy(buf, out + offset, rv);
-		
+
 			debug_buf[0] = 0;
 			sc_hex_dump(card->ctx, SC_LOG_DEBUG_NORMAL,
 				buf, rv, debug_buf, sizeof(debug_buf));
 			sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL,
-				"write_publickey in %d bytes :\n%s", 
+				"write_publickey in %d bytes :\n%s",
 				count, debug_buf);
 		}
-		
-		if (bn[0].data) 
+
+		if (bn[0].data)
 			free(bn[0].data);
-		if (bn[1].data) 
+		if (bn[1].data)
 			free(bn[1].data);
-		if (out) 
+		if (out)
 			free(out);
 	}
-	else	 { 
-		rv = iso_ops->read_binary(card, offset, buf, count, 0);	
+	else	 {
+		rv = iso_ops->read_binary(card, offset, buf, count, 0);
 	}
 
 	SC_FUNC_RETURN(card->ctx, SC_LOG_DEBUG_NORMAL, rv);
@@ -2204,7 +2204,7 @@ auth_read_record(struct sc_card *card, unsigned int nr_rec,
 	unsigned char recvbuf[SC_MAX_APDU_BUFFER_SIZE];
 
 	sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL, "auth_read_record(): nr_rec %i; count %i\n", nr_rec, count);
-													
+
 	sc_format_apdu(card, &apdu, SC_APDU_CASE_2_SHORT, 0xB2, nr_rec, 0);
 	apdu.p2 = (flags & SC_RECORD_EF_ID_MASK) << 3;
 	if (flags & SC_RECORD_BY_REC_NR)
@@ -2219,13 +2219,13 @@ auth_read_record(struct sc_card *card, unsigned int nr_rec,
 	if (apdu.resplen == 0)
 		SC_FUNC_RETURN(card->ctx, SC_LOG_DEBUG_VERBOSE, sc_check_sw(card, apdu.sw1, apdu.sw2));
 	memcpy(buf, recvbuf, apdu.resplen);
-											
+
 	rv = sc_check_sw(card, apdu.sw1, apdu.sw2);
 	SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, rv, "Card returned error");
 
 	SC_FUNC_RETURN(card->ctx, SC_LOG_DEBUG_NORMAL, apdu.resplen);
 }
-		
+
 
 static int
 auth_delete_record(struct sc_card *card, unsigned int nr_rec)
@@ -2238,14 +2238,14 @@ auth_delete_record(struct sc_card *card, unsigned int nr_rec)
 
 	sc_format_apdu(card, &apdu, SC_APDU_CASE_1, 0x32, nr_rec, 0x04);
 	apdu.cla = 0x80;
-	
+
 	rv = sc_transmit_apdu(card, &apdu);
 	SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, rv, "APDU transmit failed");
 
 	rv = sc_check_sw(card, apdu.sw1, apdu.sw2);
 	SC_FUNC_RETURN(card->ctx, SC_LOG_DEBUG_NORMAL, rv);
 }
-		
+
 
 static int
 auth_get_serialnr(struct sc_card *card, struct sc_serial_number *serial)
@@ -2262,15 +2262,15 @@ auth_get_serialnr(struct sc_card *card, struct sc_serial_number *serial)
 }
 
 
-static const struct sc_card_error 
+static const struct sc_card_error
 auth_warnings[] = {
-	{ 0x6282, SC_SUCCESS, 
+	{ 0x6282, SC_SUCCESS,
 		"ignore warning 'End of file or record reached before reading Ne bytes'" },
 	{0, 0, NULL},
 };
 
 
-static int 
+static int
 auth_check_sw(struct sc_card *card, unsigned int sw1, unsigned int sw2)
 {
 	int ii;
@@ -2286,7 +2286,7 @@ auth_check_sw(struct sc_card *card, unsigned int sw1, unsigned int sw2)
 }
 
 
-static struct sc_card_driver * 
+static struct sc_card_driver *
 sc_get_driver(void)
 {
 	if (iso_ops == NULL)
@@ -2317,7 +2317,7 @@ sc_get_driver(void)
 }
 
 
-struct sc_card_driver * 
+struct sc_card_driver *
 sc_get_oberthur_driver(void)
 {
 	return sc_get_driver();
diff --git a/src/libopensc/card-openpgp.c b/src/libopensc/card-openpgp.c
index 743e79c..6774fe1 100644
--- a/src/libopensc/card-openpgp.c
+++ b/src/libopensc/card-openpgp.c
@@ -549,7 +549,6 @@ pgp_set_blob(struct blob *blob, const u8 *data, size_t len)
 static void
 pgp_attach_acl(sc_card_t *card, sc_file_t *file, struct do_info *info)
 {
-	sc_acl_entry_t *acl;
 	unsigned int method = SC_AC_NONE;
 	unsigned long key_ref = SC_AC_KEY_REF_NONE;
 
@@ -649,7 +648,10 @@ pgp_new_blob(sc_card_t *card, struct blob *parent, unsigned int file_id,
 			u8 id_str[2];
 
 			/* no parent: set file's path = file's id */
-			sc_format_path(ushort2bebytes(id_str, file_id), &blob->file->path);
+			/* FIXME sc_format_path expects an hex string of an file
+			 * identifier. ushort2bebytes instead delivers a two bytes binary
+			 * string */
+			sc_format_path((char *) ushort2bebytes(id_str, file_id), &blob->file->path);
 		}
 
 		/* find matching DO info: set file type depending on it */
@@ -1673,11 +1675,10 @@ static int
 pgp_parse_and_set_pubkey_output(sc_card_t *card, u8* data, size_t data_len,
                                 sc_cardctl_openpgp_keygen_info_t *key_info)
 {
-	unsigned int blob_id;
 	time_t ctime = 0;
 	u8 *in = data;
-	u8 *modulus;
-	u8 *exponent;
+	u8 *modulus = NULL;
+	u8 *exponent = NULL;
 	int r;
 	LOG_FUNC_CALLED(card->ctx);
 
@@ -1686,7 +1687,7 @@ pgp_parse_and_set_pubkey_output(sc_card_t *card, u8* data, size_t data_len,
 	LOG_TEST_RET(card->ctx, r, "Cannot store creation time");
 
 	/* Parse response. Ref: pgp_enumerate_blob() */
-	while (data_len > (in - data)) {
+	while (data_len > (size_t) (in - data)) {
 		unsigned int cla, tag, tmptag;
 		size_t		len;
 		u8	*part = in;
@@ -1769,10 +1770,7 @@ static int pgp_update_card_algorithms(sc_card_t *card, sc_cardctl_openpgp_keygen
  **/
 static int pgp_gen_key(sc_card_t *card, sc_cardctl_openpgp_keygen_info_t *key_info)
 {
-	struct pgp_priv_data *priv = DRVDATA(card);
-	struct blob *algo_blob;
 	sc_apdu_t apdu;
-	unsigned int modulus_bitlen;
 	/* Temporary variables to hold APDU params */
 	u8 apdu_case;
 	u8 *apdu_data;
@@ -1781,14 +1779,16 @@ static int pgp_gen_key(sc_card_t *card, sc_cardctl_openpgp_keygen_info_t *key_in
 
 	LOG_FUNC_CALLED(card->ctx);
 
+	/* FIXME the compilers doesn't assure that the buffers set here as
+	 * apdu_data are present until the end of the function */
 	/* Set Control Reference Template for key */
 	if (key_info->keytype == SC_OPENPGP_KEY_SIGN)
-		apdu_data = "\xb6";
+		apdu_data = (unsigned char *) "\xb6";
 		/* As a string, apdu_data will end with '\0' (B6 00) */
 	else if (key_info->keytype == SC_OPENPGP_KEY_ENCR)
-		apdu_data = "\xb8";
+		apdu_data = (unsigned char *) "\xb8";
 	else if (key_info->keytype == SC_OPENPGP_KEY_AUTH)
-		apdu_data = "\xa4";
+		apdu_data = (unsigned char *) "\xa4";
 	else {
 		sc_log(card->ctx, "Unknown key type %X.", key_info->keytype);
 		LOG_FUNC_RETURN(card->ctx, SC_ERROR_INVALID_ARGUMENTS);
@@ -1918,7 +1918,6 @@ static int
 pgp_build_extended_header_list(sc_card_t *card, sc_cardctl_openpgp_keystore_info_t *key_info,
                                u8 **result, size_t *resultlen)
 {
-	struct pgp_priv_data *priv = DRVDATA(card);
 	sc_context_t *ctx = card->ctx;
 	/* The Cardholder private key template (7F48) part */
 	const size_t max_prtem_len = 7*(1 + 3);     /* 7 components */
@@ -2075,7 +2074,6 @@ out2:
  **/
 static int pgp_store_key(sc_card_t *card, sc_cardctl_openpgp_keystore_info_t *key_info)
 {
-	struct pgp_priv_data *priv = DRVDATA(card);
 	sc_context_t *ctx = card->ctx;
 	sc_cardctl_openpgp_keygen_info_t pubkey;
 	u8 *data;
diff --git a/src/libopensc/card-piv.c b/src/libopensc/card-piv.c
index 2503dfd..f063c1b 100644
--- a/src/libopensc/card-piv.c
+++ b/src/libopensc/card-piv.c
@@ -1790,10 +1790,11 @@ static int piv_card_ctl(sc_card_t *card, unsigned long cmd, void *ptr)
 	piv_private_data_t * priv = PIV_DATA(card);
 	u8 * opts; /*  A or M, key_ref, alg_id */
 
-	SC_FUNC_CALLED(card->ctx, SC_LOG_DEBUG_VERBOSE);
-	sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL,"cmd=%ld ptr=%p");
+	LOG_FUNC_CALLED(card->ctx);
+	sc_log(card->ctx, "cmd=%ld ptr=%p", cmd, ptr);
+
 	if (priv == NULL) {
-		SC_FUNC_RETURN(card->ctx, SC_LOG_DEBUG_NORMAL, SC_ERROR_INTERNAL);
+		LOG_FUNC_RETURN(card->ctx, SC_ERROR_INTERNAL);
 	}
 	switch(cmd) {
 		case SC_CARDCTL_PIV_AUTHENTICATE:
@@ -1824,7 +1825,7 @@ static int piv_card_ctl(sc_card_t *card, unsigned long cmd, void *ptr)
 			break;
 	}
 
-	SC_FUNC_RETURN(card->ctx, SC_LOG_DEBUG_NORMAL, SC_ERROR_NOT_SUPPORTED);
+	LOG_FUNC_RETURN(card->ctx, SC_ERROR_NOT_SUPPORTED);
 }
 
 static int piv_get_challenge(sc_card_t *card, u8 *rnd, size_t len)
@@ -2011,7 +2012,7 @@ static int piv_compute_signature(sc_card_t *card,
 	piv_private_data_t * priv = PIV_DATA(card);
 	int r;
 	int i;
-	int nLen;
+	size_t nLen;
 	u8 rbuf[128]; /* For EC conversions  384 will fit */
 	size_t rbuflen = sizeof(rbuf);
 	const u8 * body;
diff --git a/src/libopensc/card-sc-hsm.c b/src/libopensc/card-sc-hsm.c
index 0a696d4..5832b42 100644
--- a/src/libopensc/card-sc-hsm.c
+++ b/src/libopensc/card-sc-hsm.c
@@ -24,6 +24,7 @@
 
 #include <string.h>
 #include <stdlib.h>
+#include <ctype.h>
 
 #include "internal.h"
 #include "asn1.h"
@@ -137,7 +138,6 @@ static int sc_hsm_match_card(struct sc_card *card)
 static int sc_hsm_pin_info(sc_card_t *card, struct sc_pin_cmd_data *data,
 			   int *tries_left)
 {
-	sc_hsm_private_data_t *priv = (sc_hsm_private_data_t *) card->drv_data;
 	sc_apdu_t apdu;
 	int r;
 
@@ -166,18 +166,56 @@ static int sc_hsm_pin_info(sc_card_t *card, struct sc_pin_cmd_data *data,
 
 
 
+/*
+ * Encode 16 hexadecimals of SO-PIN into binary form
+ * Caller must check length of sopin and provide an 8 byte buffer
+ */
+static int sc_hsm_encode_sopin(const u8 *sopin, u8 *sopinbin)
+{
+	int i;
+	char digit;
+
+	memset(sopinbin, 0, 8);
+	for (i = 0; i < 16; i++) {
+		*sopinbin <<= 4;
+		digit = *sopin++;
+
+		if (!isxdigit(digit))
+			return SC_ERROR_PIN_CODE_INCORRECT;
+		digit = toupper(digit);
+
+		if (digit >= 'A')
+			digit = digit - 'A' + 10;
+		else
+			digit = digit & 0xF;
+
+		*sopinbin |= digit & 0xf;
+		if (i & 1)
+			sopinbin++;
+	}
+	return SC_SUCCESS;
+}
+
+
+
 static int sc_hsm_pin_cmd(sc_card_t *card, struct sc_pin_cmd_data *data,
 			   int *tries_left)
 {
 	sc_hsm_private_data_t *priv = (sc_hsm_private_data_t *) card->drv_data;
+	int r;
 
 	if (data->cmd == SC_PIN_CMD_GET_INFO) {
 		return sc_hsm_pin_info(card, data, tries_left);
 	}
-	if (data->pin_reference == 0x88) {
-		// Save SO PIN for later use in init pin
-		memcpy(priv->initpw, data->pin1.data, sizeof(priv->initpw));
-		return SC_SUCCESS;
+	if ((data->cmd == SC_PIN_CMD_VERIFY) && (data->pin_reference == 0x88)) {
+		if (data->pin1.len != 16)
+			return SC_ERROR_INVALID_PIN_LENGTH;
+
+		// Save SO PIN for later use in sc_hsm_init_pin()
+		r = sc_hsm_encode_sopin(data->pin1.data, priv->sopin);
+		LOG_TEST_RET(card->ctx, r, "APDU transmit failed");
+
+		LOG_FUNC_RETURN(card->ctx, SC_SUCCESS);
 	}
 	return (*iso_ops->pin_cmd)(card, data, tries_left);
 }
@@ -228,13 +266,12 @@ static int sc_hsm_read_binary(sc_card_t *card,
 
 
 
-static int sc_hsm_update_binary(sc_card_t *card,
-			       unsigned int idx, const u8 *buf, size_t count,
-			       unsigned long flags)
+static int sc_hsm_write_ef(sc_card_t *card,
+			       int fid,
+			       unsigned int idx, const u8 *buf, size_t count)
 {
 	sc_context_t *ctx = card->ctx;
 	sc_apdu_t apdu;
-	u8 recvbuf[SC_MAX_APDU_BUFFER_SIZE];
 	u8 *cmdbuff, *p;
 	size_t len;
 	int r;
@@ -269,10 +306,11 @@ static int sc_hsm_update_binary(sc_card_t *card,
 		len = 8;
 	}
 
-	memcpy(p, buf, count);
+	if (buf != NULL)
+		memcpy(p, buf, count);
 	len += count;
 
-	sc_format_apdu(card, &apdu, SC_APDU_CASE_3, 0xD7, 0x00, 0x00);
+	sc_format_apdu(card, &apdu, SC_APDU_CASE_3, 0xD7, fid >> 8, fid & 0xFF);
 	apdu.data = cmdbuff;
 	apdu.datalen = len;
 	apdu.lc = len;
@@ -289,6 +327,15 @@ static int sc_hsm_update_binary(sc_card_t *card,
 
 
 
+static int sc_hsm_update_binary(sc_card_t *card,
+			       unsigned int idx, const u8 *buf, size_t count,
+			       unsigned long flags)
+{
+	return sc_hsm_write_ef(card, 0, idx, buf, count);
+}
+
+
+
 static int sc_hsm_list_files(sc_card_t *card, u8 * buf, size_t buflen)
 {
 	sc_apdu_t apdu;
@@ -324,23 +371,12 @@ static int sc_hsm_list_files(sc_card_t *card, u8 * buf, size_t buflen)
 
 static int sc_hsm_create_file(sc_card_t *card, sc_file_t *file)
 {
-	sc_context_t *ctx = card->ctx;
-	sc_apdu_t apdu;
-	u8 cmdbuff[] = { 0x54, 0x02, 0x00, 0x00, 0x53, 0x00 };
 	int r;
 
-	sc_format_apdu(card, &apdu, SC_APDU_CASE_3_SHORT, 0xD7, file->id >> 8, file->id & 0xFF);
-	apdu.data = cmdbuff;
-	apdu.datalen = sizeof(cmdbuff);
-	apdu.lc = sizeof(cmdbuff);
-
-	r = sc_transmit_apdu(card, &apdu);
-	LOG_TEST_RET(ctx, r, "APDU transmit failed");
-
-	r =  sc_check_sw(card, apdu.sw1, apdu.sw2);
-	LOG_TEST_RET(ctx, r, "Check SW error");
+	r = sc_hsm_write_ef(card, file->id, 0, NULL, 0);
+	LOG_TEST_RET(card->ctx, r, "Create file failed");
 
-	LOG_FUNC_RETURN(ctx, SC_SUCCESS);
+	LOG_FUNC_RETURN(card->ctx, SC_SUCCESS);
 }
 
 
@@ -434,7 +470,8 @@ static int sc_hsm_decode_ecdsa_signature(sc_card_t *card,
 					const u8 * data, size_t datalen,
 					u8 * out, size_t outlen) {
 
-	int fieldsizebytes, i, r;
+	int i, r;
+	size_t fieldsizebytes;
 	const u8 *body, *tag;
 	size_t bodylen, taglen;
 
@@ -557,7 +594,7 @@ static int sc_hsm_decipher(sc_card_t *card, const u8 * crgram, size_t crgram_len
 	apdu.resplen = sizeof(rbuf);
 	apdu.le = 256;
 
-	apdu.data = crgram;
+	apdu.data = (u8 *)crgram;
 	apdu.lc = crgram_len;
 	apdu.datalen = crgram_len;
 
@@ -609,7 +646,10 @@ static int sc_hsm_get_serialnr(sc_card_t *card, sc_serial_number_t *serial)
 	}
 
 	serial->len = strlen(priv->serialno);
-	strncpy(serial->value, priv->serialno, sizeof(serial->value));
+	if (serial->len > sizeof(serial->value))
+		serial->len = sizeof(serial->value);
+
+	memcpy(serial->value, priv->serialno, serial->len);
 
 	LOG_FUNC_RETURN(card->ctx, SC_SUCCESS);
 }
@@ -619,7 +659,10 @@ static int sc_hsm_get_serialnr(sc_card_t *card, sc_serial_number_t *serial)
 static int sc_hsm_initialize(sc_card_t *card, sc_cardctl_sc_hsm_init_param_t *params)
 {
 	sc_context_t *ctx = card->ctx;
-	int r, i;
+	sc_pkcs15_tokeninfo_t ti;
+	struct sc_pin_cmd_data pincmd;
+	int r;
+	size_t tilen;
 	sc_apdu_t apdu;
 	u8 ibuff[50], *p;
 
@@ -668,6 +711,29 @@ static int sc_hsm_initialize(sc_card_t *card, sc_cardctl_sc_hsm_init_param_t *pa
 
 	LOG_TEST_RET(ctx, r, "Check SW error");
 
+	if (params->label) {
+		memset(&ti, 0, sizeof(ti));
+
+		ti.label = params->label;
+		ti.flags = SC_PKCS15_TOKEN_PRN_GENERATION;
+
+		r = sc_pkcs15_encode_tokeninfo(ctx, &ti, &p, &tilen);
+		LOG_TEST_RET(ctx, r, "Error encoding tokeninfo");
+
+		memset(&pincmd, 0, sizeof(pincmd));
+		pincmd.cmd = SC_PIN_CMD_VERIFY;
+		pincmd.pin_type = SC_AC_CHV;
+		pincmd.pin_reference = 0x81;
+		pincmd.pin1.data = params->user_pin;
+		pincmd.pin1.len = params->user_pin_len;
+
+		r = (*iso_ops->pin_cmd)(card, &pincmd, NULL);
+		LOG_TEST_RET(ctx, r, "Could not verify PIN");
+
+		r = sc_hsm_write_ef(card, 0x2F03, 0, p, tilen);
+		LOG_TEST_RET(ctx, r, "Could not write EF.TokenInfo");
+	}
+
 	LOG_FUNC_RETURN(card->ctx, SC_SUCCESS);
 }
 
@@ -718,7 +784,7 @@ static int sc_hsm_wrap_key(sc_card_t *card, sc_cardctl_sc_hsm_wrapped_key_t *par
 {
 	sc_context_t *ctx = card->ctx;
 	sc_apdu_t apdu;
-	u8 data[SC_MAX_EXT_APDU_BUFFER_SIZE];
+	u8 data[MAX_EXT_APDU_LENGTH];
 	int r;
 
 	LOG_FUNC_CALLED(card->ctx);
@@ -736,10 +802,17 @@ static int sc_hsm_wrap_key(sc_card_t *card, sc_cardctl_sc_hsm_wrapped_key_t *par
 
 	LOG_TEST_RET(ctx, r, "Check SW error");
 
-	params->wrapped_key_length = apdu.resplen;
-	params->wrapped_key = malloc(apdu.resplen);
 	if (params->wrapped_key == NULL) {
-		LOG_FUNC_RETURN(card->ctx, SC_ERROR_OUT_OF_MEMORY);
+		params->wrapped_key_length = apdu.resplen;
+		params->wrapped_key = malloc(apdu.resplen);
+		if (params->wrapped_key == NULL) {
+			LOG_FUNC_RETURN(card->ctx, SC_ERROR_OUT_OF_MEMORY);
+		}
+	} else {
+		if (apdu.resplen > params->wrapped_key_length) {
+			LOG_FUNC_RETURN(card->ctx, SC_ERROR_BUFFER_TOO_SMALL);
+		}
+		params->wrapped_key_length = apdu.resplen;
 	}
 	memcpy(params->wrapped_key, data, apdu.resplen);
 	LOG_FUNC_RETURN(card->ctx, SC_SUCCESS);
@@ -751,7 +824,6 @@ static int sc_hsm_unwrap_key(sc_card_t *card, sc_cardctl_sc_hsm_wrapped_key_t *p
 {
 	sc_context_t *ctx = card->ctx;
 	sc_apdu_t apdu;
-	u8 status[MAX_EXT_APDU_LENGTH];
 	int r;
 
 	LOG_FUNC_CALLED(card->ctx);
@@ -777,61 +849,44 @@ static int sc_hsm_unwrap_key(sc_card_t *card, sc_cardctl_sc_hsm_wrapped_key_t *p
 static int sc_hsm_init_token(sc_card_t *card, sc_cardctl_pkcs11_init_token_t *params)
 {
 	sc_context_t *ctx = card->ctx;
-	int r, i;
-	sc_apdu_t apdu;
-	u8 ibuff[50], *p;
+	sc_cardctl_sc_hsm_init_param_t ip;
+	int r;
+	char label[33],*cpo;
 
-	LOG_FUNC_CALLED(card->ctx);
+	LOG_FUNC_CALLED(ctx);
 
 	if (params->so_pin_len != 16) {
-		LOG_TEST_RET(card->ctx, SC_ERROR_INVALID_DATA, "SO PIN wrong length (!=16)");
-	}
-
-	p = ibuff;
-	*p++ = 0x80;	// Options
-	*p++ = 0x02;
-	*p++ = 0x00;
-	*p++ = 0x01;
-
-	*p++ = 0x81;	// User PIN
-	*p++ = 0x06;	// Default value, later changed with C_InitPIN
-	// We use only 6 of the 16 bytes init password for the initial user PIN
-	memcpy(p, params->so_pin, 6);
-	p += 6;
-
-	*p++ = 0x82;	// Initialization code
-	*p++ = 0x08;
-
-	memset(p, 0, 8);
-	for (i = 0; i < 16; i++) {
-		*p <<= 4;
-		*p |= params->so_pin[i] & 0xf;
-		if (i & 1)
-			p++;
+		LOG_TEST_RET(ctx, SC_ERROR_INVALID_DATA, "SO PIN wrong length (!=16)");
 	}
 
-	*p++ = 0x91;	// User PIN retry counter
-	*p++ = 0x01;
-	*p++ = 0x03;
-
-	sc_format_apdu(card, &apdu, SC_APDU_CASE_3_SHORT, 0x50, 0x00, 0x00);
-	apdu.cla = 0x80;
-	apdu.data = ibuff;
-	apdu.datalen = p - ibuff;
-	apdu.lc = apdu.datalen;
-
-	r = sc_transmit_apdu(card, &apdu);
-	LOG_TEST_RET(ctx, r, "APDU transmit failed");
-
-	r =  sc_check_sw(card, apdu.sw1, apdu.sw2);
-
-	if (r == SC_ERROR_NOT_ALLOWED) {
-		r = SC_ERROR_PIN_CODE_INCORRECT;
+	memset(&ip, 0, sizeof(ip));
+	ip.dkek_shares = -1;
+	ip.options[0] = 0x00;
+	ip.options[0] = 0x01;
+
+	r = sc_hsm_encode_sopin(params->so_pin, ip.init_code);
+	LOG_TEST_RET(ctx, r, "SO PIN wrong format");
+
+	ip.user_pin = ip.init_code;		// Use the first 6 bytes of the SO-PIN as initial User-PIN value
+	ip.user_pin_len = 6;
+	ip.user_pin_retry_counter = 3;
+
+	if (params->label) {
+		// Strip trailing spaces
+		memcpy(label, params->label, 32);
+		label[32] = 0;
+		cpo = label + 31;
+		while ((cpo >= label) && (*cpo == ' ')) {
+			*cpo = 0;
+			cpo--;
+		}
+		ip.label = label;
 	}
 
+	r = sc_hsm_initialize(card, &ip);
 	LOG_TEST_RET(ctx, r, "Check SW error");
 
-	LOG_FUNC_RETURN(card->ctx, SC_SUCCESS);
+	LOG_FUNC_RETURN(ctx, SC_SUCCESS);
 }
 
 
@@ -852,14 +907,13 @@ static int sc_hsm_init_pin(sc_card_t *card, sc_cardctl_pkcs11_init_pin_t *params
 
 	p = ibuff;
 
-	// We use only 6 of the 8 bytes init password for the initial user PIN
-	memcpy(p, priv->initpw, 6);
-	p += 6;
+	memcpy(p, priv->sopin, sizeof(priv->sopin));
+	p += sizeof(priv->sopin);
 
 	memcpy(p, params->pin, params->pin_len);
 	p += params->pin_len;
 
-	sc_format_apdu(card, &apdu, SC_APDU_CASE_3_SHORT, 0x24, 0x00, 0x81);
+	sc_format_apdu(card, &apdu, SC_APDU_CASE_3_SHORT, 0x2C, 0x00, 0x81);
 	apdu.data = ibuff;
 	apdu.datalen = p - ibuff;
 	apdu.lc = apdu.datalen;
@@ -868,9 +922,31 @@ static int sc_hsm_init_pin(sc_card_t *card, sc_cardctl_pkcs11_init_pin_t *params
 	LOG_TEST_RET(ctx, r, "APDU transmit failed");
 
 	r =  sc_check_sw(card, apdu.sw1, apdu.sw2);
+
+	// Cards before version 1.0 do not implement RESET_RETRY_COUNTER
+	// For those cards the CHANGE REFERENCE DATA command is used instead
+	if (r == SC_ERROR_INS_NOT_SUPPORTED) {
+		p = ibuff;
+		memcpy(p, priv->sopin, 6);
+		p += 6;
+
+		memcpy(p, params->pin, params->pin_len);
+		p += params->pin_len;
+
+		sc_format_apdu(card, &apdu, SC_APDU_CASE_3_SHORT, 0x24, 0x00, 0x81);
+		apdu.data = ibuff;
+		apdu.datalen = p - ibuff;
+		apdu.lc = apdu.datalen;
+
+		r = sc_transmit_apdu(card, &apdu);
+		LOG_TEST_RET(ctx, r, "APDU transmit failed");
+
+		r =  sc_check_sw(card, apdu.sw1, apdu.sw2);
+	}
+
 	LOG_TEST_RET(ctx, r, "Check SW error");
 
-	memset(priv->initpw, 0, sizeof(priv->initpw));
+	memset(priv->sopin, 0, sizeof(priv->sopin));
 
 	LOG_FUNC_RETURN(card->ctx, SC_SUCCESS);
 }
@@ -879,7 +955,6 @@ static int sc_hsm_init_pin(sc_card_t *card, sc_cardctl_pkcs11_init_pin_t *params
 
 static int sc_hsm_generate_keypair(sc_card_t *card, sc_cardctl_sc_hsm_keygen_info_t *keyinfo)
 {
-	sc_hsm_private_data_t *priv = (sc_hsm_private_data_t *) card->drv_data;
 	u8 rbuf[1024];
 	int r;
 	sc_apdu_t apdu;
diff --git a/src/libopensc/card-sc-hsm.h b/src/libopensc/card-sc-hsm.h
index 0d01b54..12d1867 100644
--- a/src/libopensc/card-sc-hsm.h
+++ b/src/libopensc/card-sc-hsm.h
@@ -56,7 +56,7 @@ typedef struct sc_hsm_private_data {
 	u8 algorithm;
 	int noExtLength;
 	char *serialno;
-	char initpw[6];						// Initial user PIN set at initialization (first 6 digits of token pin)
+	u8 sopin[8];
 } sc_hsm_private_data_t;
 
 
@@ -96,6 +96,18 @@ typedef struct sc_cvc sc_cvc_t;
 
 
 
+struct ec_curve {
+	const struct sc_lv_data oid;
+	const struct sc_lv_data prime;
+	const struct sc_lv_data coefficientA;
+	const struct sc_lv_data coefficientB;
+	const struct sc_lv_data basePointG;
+	const struct sc_lv_data order;
+	const struct sc_lv_data coFactor;
+};
+
+
+
 int sc_pkcs15emu_sc_hsm_decode_cvc(sc_pkcs15_card_t * p15card,
 											const u8 ** buf, size_t *buflen,
 											sc_cvc_t *cvc);
@@ -103,5 +115,7 @@ int sc_pkcs15emu_sc_hsm_encode_cvc(sc_pkcs15_card_t * p15card,
 		sc_cvc_t *cvc,
 		u8 ** buf, size_t *buflen);
 void sc_pkcs15emu_sc_hsm_free_cvc(sc_cvc_t *cvc);
+int sc_pkcs15emu_sc_hsm_get_curve(struct ec_curve **curve, u8 *oid, size_t oidlen);
+int sc_pkcs15emu_sc_hsm_get_public_key(struct sc_context *ctx, sc_cvc_t *cvc, struct sc_pkcs15_pubkey *pubkey);
 
 #endif /* SC_HSM_H_ */
diff --git a/src/libopensc/card-westcos.c b/src/libopensc/card-westcos.c
index 28c0d62..1642eb7 100644
--- a/src/libopensc/card-westcos.c
+++ b/src/libopensc/card-westcos.c
@@ -215,7 +215,7 @@ static int westcos_init(sc_card_t * card)
 	card->drv_data = malloc(sizeof(priv_data_t));
 	if (card->drv_data == NULL)
 		return SC_ERROR_OUT_OF_MEMORY;
-	memset(card->drv_data, 0, sizeof(card->drv_data));
+	memset(card->drv_data, 0, sizeof(priv_data_t));
 	
 	priv_data = (priv_data_t *) card->drv_data;
 
diff --git a/src/libopensc/card.c b/src/libopensc/card.c
index 0f98179..9a33172 100644
--- a/src/libopensc/card.c
+++ b/src/libopensc/card.c
@@ -180,15 +180,22 @@ int sc_connect_card(sc_reader_t *reader, sc_card_t **card_out)
 				goto err;
 			}
 		}
-	} else {
-		sc_debug(ctx, SC_LOG_DEBUG_MATCH, "matching built-in ATRs");
+	}
+	else {
+		sc_log(ctx, "matching built-in ATRs");
 		for (i = 0; ctx->card_drivers[i] != NULL; i++) {
 			struct sc_card_driver *drv = ctx->card_drivers[i];
 			const struct sc_card_operations *ops = drv->ops;
 
 			sc_log(ctx, "trying driver '%s'", drv->short_name);
-			if (ops == NULL || ops->match_card == NULL)
+			if (ops == NULL || ops->match_card == NULL)   {
+				continue;
+			}
+			else if (!ctx->enable_default_driver && !strcmp("default", drv->short_name))   {
+				sc_log(ctx , "ignore 'default' card driver");
 				continue;
+			}
+
 			/* Needed if match_card() needs to talk with the card (e.g. card-muscle) */
 			*card->ops = *ops;
 			if (ops->match_card(card) != 1)
@@ -312,10 +319,11 @@ int sc_lock(sc_card_t *card)
 {
 	int r = 0, r2 = 0;
 
-	LOG_FUNC_CALLED(card->ctx);
-
 	if (card == NULL)
 		return SC_ERROR_INVALID_ARGUMENTS;
+
+	LOG_FUNC_CALLED(card->ctx);
+
 	r = sc_mutex_lock(card->ctx, card->mutex);
 	if (r != SC_SUCCESS)
 		return r;
@@ -968,32 +976,40 @@ int _sc_add_atr(sc_context_t *ctx, struct sc_card_driver *driver, struct sc_atr_
 	if (!map)
 		return SC_ERROR_OUT_OF_MEMORY;
 	driver->atr_map = map;
+
 	dst = &driver->atr_map[driver->natrs++];
 	memset(dst, 0, sizeof(*dst));
 	memset(&driver->atr_map[driver->natrs], 0, sizeof(struct sc_atr_table));
 	dst->atr = strdup(src->atr);
 	if (!dst->atr)
 		return SC_ERROR_OUT_OF_MEMORY;
+
 	if (src->atrmask) {
 		dst->atrmask = strdup(src->atrmask);
 		if (!dst->atrmask)
 			return SC_ERROR_OUT_OF_MEMORY;
-	} else {
+	}
+	else {
 		dst->atrmask = NULL;
 	}
+
 	if (src->name) {
 		dst->name = strdup(src->name);
 		if (!dst->name)
 			return SC_ERROR_OUT_OF_MEMORY;
-	} else {
+	}
+	else {
 		dst->name = NULL;
 	}
+
 	dst->type = src->type;
 	dst->flags = src->flags;
 	dst->card_atr = src->card_atr;
+
 	return SC_SUCCESS;
 }
 
+
 int _sc_free_atr(sc_context_t *ctx, struct sc_card_driver *driver)
 {
 	unsigned int i;
@@ -1059,6 +1075,11 @@ void sc_print_cache(struct sc_card *card)   {
 				sc_print_path(&card->cache.current_df->path));
 }
 
+scconf_block *
+sc_match_atr_block(sc_context_t *ctx, struct sc_card_driver *driver, struct sc_atr *atr)
+{
+	return _sc_match_atr_block(ctx, driver, atr);
+}
 
 #ifdef ENABLE_SM
 static int
@@ -1130,7 +1151,7 @@ sc_card_sm_load(struct sc_card *card, const char *module_path, const char *in_mo
 	}
 
 	if (!module)
-		return SC_ERROR_MEMORY_FAILURE;
+		return SC_ERROR_OUT_OF_MEMORY;
 
 	sc_log(ctx, "try to load SM module '%s'", module);
 	do  {
@@ -1197,6 +1218,7 @@ sc_card_sm_check(struct sc_card *card)
 	int rv, ii;
 
 	SC_FUNC_CALLED(ctx, SC_LOG_DEBUG_NORMAL);
+	sc_log(ctx, "card->sm_ctx.ops.open %p", card->sm_ctx.ops.open);
 
 	/* get the name of card specific SM configuration section */
 	atrblock = _sc_match_atr_block(ctx, card->driver, &card->atr);
diff --git a/src/libopensc/cardctl.h b/src/libopensc/cardctl.h
index 370cff4..b46185a 100644
--- a/src/libopensc/cardctl.h
+++ b/src/libopensc/cardctl.h
@@ -248,7 +248,14 @@ enum {
 	SC_CARDCTL_SC_HSM_INITIALIZE,
 	SC_CARDCTL_SC_HSM_IMPORT_DKEK_SHARE,
 	SC_CARDCTL_SC_HSM_WRAP_KEY,
-	SC_CARDCTL_SC_HSM_UNWRAP_KEY
+	SC_CARDCTL_SC_HSM_UNWRAP_KEY,
+
+	/*
+	 * DNIe specific calls
+	 */
+    SC_CARDCTL_DNIE_BASE = _CTL_PREFIX('D', 'N', 'I'),
+	SC_CARDCTL_DNIE_GENERATE_KEY,
+	SC_CARDCTL_DNIE_GET_INFO
 };
 
 enum {
@@ -273,16 +280,16 @@ struct sc_cardctl_default_key {
  * Generic cardctl - initialize token using PKCS#11 style
  */
 typedef struct sc_cardctl_pkcs11_init_token {
-	const char *	so_pin;
+	const unsigned char *	so_pin;
 	size_t			so_pin_len;
-	const char *	label;
+	const char *		label;
 } sc_cardctl_pkcs11_init_token_t;
 
 /*
  * Generic cardctl - set pin using PKCS#11 style
  */
 typedef struct sc_cardctl_pkcs11_init_pin {
-	const char *	pin;
+	const unsigned char *	pin;
 	size_t			pin_len;
 } sc_cardctl_pkcs11_init_pin_t;
 
@@ -931,8 +938,9 @@ typedef struct sc_cardctl_sc_hsm_init_param {
 	u8 *user_pin;				/* Initial user PIN */
 	size_t user_pin_len;		/* Length of user PIN */
 	u8 user_pin_retry_counter;	/* Retry counter default value */
-	u8 options[2];				/* Initilization options */
+	u8 options[2];				/* Initialization options */
 	char dkek_shares;			/* Number of DKEK shares, 0 for card generated, -1 for none */
+	char *label;				/* Token label to be set in EF.TokenInfo (2F03) */
 } sc_cardctl_sc_hsm_init_param_t;
 
 typedef struct sc_cardctl_sc_hsm_dkek {
diff --git a/src/libopensc/cards.h b/src/libopensc/cards.h
index 0fbf9ca..7be6667 100644
--- a/src/libopensc/cards.h
+++ b/src/libopensc/cards.h
@@ -46,6 +46,7 @@ enum {
 	SC_CARD_TYPE_CARDOS_M4_2C,
 	SC_CARD_TYPE_CARDOS_CIE_V1, /* Italian CIE (eID) v1 */
 	SC_CARD_TYPE_CARDOS_M4_4,
+	SC_CARD_TYPE_CARDOS_V5_0,
 
 	/* flex/cyberflex drivers */
 	SC_CARD_TYPE_FLEX_BASE = 2000,
@@ -166,6 +167,7 @@ enum {
 	SC_CARD_TYPE_GEMSAFEV1_BASE = 21000,
 	SC_CARD_TYPE_GEMSAFEV1_GENERIC,
 	SC_CARD_TYPE_GEMSAFEV1_PTEID,
+	SC_CARD_TYPE_GEMSAFEV1_SEEID,
 
 	/* IAS cards */
 	SC_CARD_TYPE_IAS_BASE = 22000,
@@ -191,6 +193,13 @@ enum {
 
 	/* SmartCard-HSM */
 	SC_CARD_TYPE_SC_HSM = 26000,
+
+	/* Spanish DNIe card */
+	SC_CARD_TYPE_DNIE_BASE = 27000,
+	SC_CARD_TYPE_DNIE_BLANK, /* ATR LC byte: 00 */
+	SC_CARD_TYPE_DNIE_ADMIN, /* ATR LC byte: 01 */
+	SC_CARD_TYPE_DNIE_USER,  /* ATR LC byte: 03 */
+	SC_CARD_TYPE_DNIE_TERMINATED /* ATR LC byte: 0F */
 };
 
 extern sc_card_driver_t *sc_get_default_driver(void);
@@ -222,11 +231,11 @@ extern sc_card_driver_t *sc_get_westcos_driver(void);
 extern sc_card_driver_t *sc_get_myeid_driver(void);
 extern sc_card_driver_t *sc_get_ias_driver(void);
 extern sc_card_driver_t *sc_get_sc_hsm_driver(void);
-extern sc_card_driver_t *sc_get_javacard_driver(void);
 extern sc_card_driver_t *sc_get_itacns_driver(void);
 extern sc_card_driver_t *sc_get_authentic_driver(void);
 extern sc_card_driver_t *sc_get_iasecc_driver(void);
 extern sc_card_driver_t *sc_get_epass2003_driver(void);
+extern sc_card_driver_t *sc_get_dnie_driver(void);
 
 #ifdef __cplusplus
 }
diff --git a/src/libopensc/ctx.c b/src/libopensc/ctx.c
index 1c94a9d..daade13 100644
--- a/src/libopensc/ctx.c
+++ b/src/libopensc/ctx.c
@@ -97,6 +97,9 @@ static const struct _sc_driver_entry internal_card_drivers[] = {
 	{ "westcos",	(void *(*)(void)) sc_get_westcos_driver },
 	{ "myeid",      (void *(*)(void)) sc_get_myeid_driver },
 	{ "sc-hsm",		(void *(*)(void)) sc_get_sc_hsm_driver },
+#ifdef ENABLE_OPENSSL
+	{ "dnie",       (void *(*)(void)) sc_get_dnie_driver },
+#endif
 
 /* Here should be placed drivers that need some APDU transactions to
  * recognise its cards. */
@@ -105,8 +108,6 @@ static const struct _sc_driver_entry internal_card_drivers[] = {
 	{ "atrust-acos",(void *(*)(void)) sc_get_atrust_acos_driver },
 	{ "PIV-II",	(void *(*)(void)) sc_get_piv_driver },
 	{ "itacns",	(void *(*)(void)) sc_get_itacns_driver },
-	/* javacard without supported applet - last before default */
-	{ "javacard",	(void *(*)(void)) sc_get_javacard_driver },
 	/* The default driver should be last, as it handles all the
 	 * unrecognized cards. */
 	{ "default",	(void *(*)(void)) sc_get_default_driver },
@@ -182,6 +183,8 @@ static void set_defaults(sc_context_t *ctx, struct _sc_ctx_options *opts)
 		fclose(ctx->debug_file);
 	ctx->debug_file = stderr;
 	ctx->paranoid_memory = 0;
+	ctx->enable_default_driver = 0;
+
 #ifdef __APPLE__
 	/* Override the default debug log for OpenSC.tokend to be different from PKCS#11.
 	 * TODO: Could be moved to OpenSC.tokend */
@@ -199,8 +202,10 @@ static void set_defaults(sc_context_t *ctx, struct _sc_ctx_options *opts)
 int sc_ctx_log_to_file(sc_context_t *ctx, const char* filename)
 {
 	/* Close any existing handles */
-	if (ctx->debug_file && (ctx->debug_file != stderr && ctx->debug_file != stdout))
+	if (ctx->debug_file && (ctx->debug_file != stderr && ctx->debug_file != stdout))   {
 		fclose(ctx->debug_file);
+		ctx->debug_file = NULL;
+	}
 
 	/* Handle special names */
 	if (!strcmp(filename, "stdout"))
@@ -252,6 +257,9 @@ load_parameters(sc_context_t *ctx, scconf_block *block, struct _sc_ctx_options *
 	ctx->paranoid_memory = scconf_get_bool (block, "paranoid-memory",
 		ctx->paranoid_memory);
 
+	ctx->enable_default_driver = scconf_get_bool (block, "enable_default_driver",
+			ctx->enable_default_driver);
+
 	val = scconf_get_str(block, "force_card_driver", NULL);
 	if (val) {
 		if (opts->forced_card_driver)
diff --git a/src/libopensc/cwa-dnie.c b/src/libopensc/cwa-dnie.c
new file mode 100644
index 0000000..62060db
--- /dev/null
+++ b/src/libopensc/cwa-dnie.c
@@ -0,0 +1,885 @@
+/**
+ * cwa-dnie.c: DNIe data provider for CWA SM handling.
+ * 
+ * Copyright (C) 2010 Juan Antonio Martinez <jonsito at terra.es>
+ *
+ * This work is derived from many sources at OpenSC Project site,
+ * (see references) and the information made public by Spanish 
+ * Direccion General de la Policia y de la Guardia Civil
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+#define __SM_DNIE_C__
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#ifdef ENABLE_OPENSSL		/* empty file without openssl */
+
+#include <stdlib.h>
+#include <string.h>
+
+#include "opensc.h"
+#include "cardctl.h"
+#include "internal.h"
+#include "cwa14890.h"
+
+#include "cwa-dnie.h"
+
+#include <openssl/x509.h>
+#include <openssl/evp.h>
+
+/********************* Keys and certificates as published by DGP ********/
+
+/**
+ * Modulo de la clave pública de la Root CA del DNIe electronico
+ */
+static u8 icc_root_ca_modulus[] = {
+	0xEA, 0xDE, 0xDA, 0x45, 0x53, 0x32, 0x94, 0x50, 0x39, 0xDA, 0xA4, 0x04,
+	0xC8, 0xEB, 0xC4, 0xD3, 0xB7, 0xF5, 0xDC, 0x86, 0x92, 0x83, 0xCD, 0xEA,
+	0x2F, 0x10, 0x1E, 0x2A, 0xB5, 0x4F, 0xB0, 0xD0, 0xB0, 0x3D, 0x8F, 0x03,
+	0x0D, 0xAF, 0x24, 0x58, 0x02, 0x82, 0x88, 0xF5, 0x4C, 0xE5, 0x52, 0xF8,
+	0xFA, 0x57, 0xAB, 0x2F, 0xB1, 0x03, 0xB1, 0x12, 0x42, 0x7E, 0x11, 0x13,
+	0x1D, 0x1D, 0x27, 0xE1, 0x0A, 0x5B, 0x50, 0x0E, 0xAA, 0xE5, 0xD9, 0x40,
+	0x30, 0x1E, 0x30, 0xEB, 0x26, 0xC3, 0xE9, 0x06, 0x6B, 0x25, 0x71, 0x56,
+	0xED, 0x63, 0x9D, 0x70, 0xCC, 0xC0, 0x90, 0xB8, 0x63, 0xAF, 0xBB, 0x3B,
+	0xFE, 0xD8, 0xC1, 0x7B, 0xE7, 0x67, 0x30, 0x34, 0xB9, 0x82, 0x3E, 0x97,
+	0x7E, 0xD6, 0x57, 0x25, 0x29, 0x27, 0xF9, 0x57, 0x5B, 0x9F, 0xFF, 0x66,
+	0x91, 0xDB, 0x64, 0xF8, 0x0B, 0x5E, 0x92, 0xCD
+};
+
+/**
+ * Exponente de la clave publica de la Root CA del DNI electronico
+ */
+static u8 icc_root_ca_public_exponent[] = {
+	0x01, 0x00, 0x01
+};
+
+/**
+ * Terminal (IFD) key modulus for SM channel creation
+ */
+static u8 ifd_modulus[] = {
+	0xdb, 0x2c, 0xb4, 0x1e, 0x11, 0x2b, 0xac, 0xfa, 0x2b, 0xd7, 0xc3, 0xd3,
+	0xd7, 0x96, 0x7e, 0x84, 0xfb, 0x94, 0x34, 0xfc, 0x26, 0x1f, 0x9d, 0x09,
+	0x0a, 0x89, 0x83, 0x94, 0x7d, 0xaf, 0x84, 0x88, 0xd3, 0xdf, 0x8f, 0xbd,
+	0xcc, 0x1f, 0x92, 0x49, 0x35, 0x85, 0xe1, 0x34, 0xa1, 0xb4, 0x2d, 0xe5,
+	0x19, 0xf4, 0x63, 0x24, 0x4d, 0x7e, 0xd3, 0x84, 0xe2, 0x6d, 0x51, 0x6c,
+	0xc7, 0xa4, 0xff, 0x78, 0x95, 0xb1, 0x99, 0x21, 0x40, 0x04, 0x3a, 0xac,
+	0xad, 0xfc, 0x12, 0xe8, 0x56, 0xb2, 0x02, 0x34, 0x6a, 0xf8, 0x22, 0x6b,
+	0x1a, 0x88, 0x21, 0x37, 0xdc, 0x3c, 0x5a, 0x57, 0xf0, 0xd2, 0x81, 0x5c,
+	0x1f, 0xcd, 0x4b, 0xb4, 0x6f, 0xa9, 0x15, 0x7f, 0xdf, 0xfd, 0x79, 0xec,
+	0x3a, 0x10, 0xa8, 0x24, 0xcc, 0xc1, 0xeb, 0x3c, 0xe0, 0xb6, 0xb4, 0x39,
+	0x6a, 0xe2, 0x36, 0x59, 0x00, 0x16, 0xba, 0x69
+};
+
+/**
+ * Terminal (IFD) public exponent for SM channel creation
+ */
+static u8 ifd_public_exponent[] = {
+	0x01, 0x00, 0x01
+};
+
+/**
+ * Terminal (IFD) private exponent for SM channel establishment
+ */
+static u8 ifd_private_exponent[] = {
+	0x18, 0xb4, 0x4a, 0x3d, 0x15, 0x5c, 0x61, 0xeb, 0xf4, 0xe3, 0x26, 0x1c,
+	0x8b, 0xb1, 0x57, 0xe3, 0x6f, 0x63, 0xfe, 0x30, 0xe9, 0xaf, 0x28, 0x89,
+	0x2b, 0x59, 0xe2, 0xad, 0xeb, 0x18, 0xcc, 0x8c, 0x8b, 0xad, 0x28, 0x4b,
+	0x91, 0x65, 0x81, 0x9c, 0xa4, 0xde, 0xc9, 0x4a, 0xa0, 0x6b, 0x69, 0xbc,
+	0xe8, 0x17, 0x06, 0xd1, 0xc1, 0xb6, 0x68, 0xeb, 0x12, 0x86, 0x95, 0xe5,
+	0xf7, 0xfe, 0xde, 0x18, 0xa9, 0x08, 0xa3, 0x01, 0x1a, 0x64, 0x6a, 0x48,
+	0x1d, 0x3e, 0xa7, 0x1d, 0x8a, 0x38, 0x7d, 0x47, 0x46, 0x09, 0xbd, 0x57,
+	0xa8, 0x82, 0xb1, 0x82, 0xe0, 0x47, 0xde, 0x80, 0xe0, 0x4b, 0x42, 0x21,
+	0x41, 0x6b, 0xd3, 0x9d, 0xfa, 0x1f, 0xac, 0x03, 0x00, 0x64, 0x19, 0x62,
+	0xad, 0xb1, 0x09, 0xe2, 0x8c, 0xaf, 0x50, 0x06, 0x1b, 0x68, 0xc9, 0xca,
+	0xbd, 0x9b, 0x00, 0x31, 0x3c, 0x0f, 0x46, 0xed
+};
+
+/**
+ *  Intermediate CA certificate in CVC format (Card verifiable certificate)
+ */
+static u8 C_CV_CA_CS_AUT_cert[] = {
+	0x7f, 0x21, 0x81, 0xce, 0x5f, 0x37, 0x81, 0x80, 0x3c, 0xba, 0xdc, 0x36,
+	0x84, 0xbe, 0xf3, 0x20, 0x41, 0xad, 0x15, 0x50, 0x89, 0x25, 0x8d, 0xfd,
+	0x20, 0xc6, 0x91, 0x15, 0xd7, 0x2f, 0x9c, 0x38, 0xaa, 0x99, 0xad, 0x6c,
+	0x1a, 0xed, 0xfa, 0xb2, 0xbf, 0xac, 0x90, 0x92, 0xfc, 0x70, 0xcc, 0xc0,
+	0x0c, 0xaf, 0x48, 0x2a, 0x4b, 0xe3, 0x1a, 0xfd, 0xbd, 0x3c, 0xbc, 0x8c,
+	0x83, 0x82, 0xcf, 0x06, 0xbc, 0x07, 0x19, 0xba, 0xab, 0xb5, 0x6b, 0x6e,
+	0xc8, 0x07, 0x60, 0xa4, 0xa9, 0x3f, 0xa2, 0xd7, 0xc3, 0x47, 0xf3, 0x44,
+	0x27, 0xf9, 0xff, 0x5c, 0x8d, 0xe6, 0xd6, 0x5d, 0xac, 0x95, 0xf2, 0xf1,
+	0x9d, 0xac, 0x00, 0x53, 0xdf, 0x11, 0xa5, 0x07, 0xfb, 0x62, 0x5e, 0xeb,
+	0x8d, 0xa4, 0xc0, 0x29, 0x9e, 0x4a, 0x21, 0x12, 0xab, 0x70, 0x47, 0x58,
+	0x8b, 0x8d, 0x6d, 0xa7, 0x59, 0x22, 0x14, 0xf2, 0xdb, 0xa1, 0x40, 0xc7,
+	0xd1, 0x22, 0x57, 0x9b, 0x5f, 0x38, 0x3d, 0x22, 0x53, 0xc8, 0xb9, 0xcb,
+	0x5b, 0xc3, 0x54, 0x3a, 0x55, 0x66, 0x0b, 0xda, 0x80, 0x94, 0x6a, 0xfb,
+	0x05, 0x25, 0xe8, 0xe5, 0x58, 0x6b, 0x4e, 0x63, 0xe8, 0x92, 0x41, 0x49,
+	0x78, 0x36, 0xd8, 0xd3, 0xab, 0x08, 0x8c, 0xd4, 0x4c, 0x21, 0x4d, 0x6a,
+	0xc8, 0x56, 0xe2, 0xa0, 0x07, 0xf4, 0x4f, 0x83, 0x74, 0x33, 0x37, 0x37,
+	0x1a, 0xdd, 0x8e, 0x03, 0x00, 0x01, 0x00, 0x01, 0x42, 0x08, 0x65, 0x73,
+	0x52, 0x44, 0x49, 0x60, 0x00, 0x06
+};
+
+/** 
+ * Terminal (IFD) certificate in CVC format (PK.IFD.AUT)
+ */
+static u8 C_CV_IFDUser_AUT_cert[] = {
+	0x7f, 0x21, 0x81, 0xcd, 0x5f, 0x37, 0x81, 0x80, 0x82, 0x5b, 0x69, 0xc6,
+	0x45, 0x1e, 0x5f, 0x51, 0x70, 0x74, 0x38, 0x5f, 0x2f, 0x17, 0xd6, 0x4d,
+	0xfe, 0x2e, 0x68, 0x56, 0x75, 0x67, 0x09, 0x4b, 0x57, 0xf3, 0xc5, 0x78,
+	0xe8, 0x30, 0xe4, 0x25, 0x57, 0x2d, 0xe8, 0x28, 0xfa, 0xf4, 0xde, 0x1b,
+	0x01, 0xc3, 0x94, 0xe3, 0x45, 0xc2, 0xfb, 0x06, 0x29, 0xa3, 0x93, 0x49,
+	0x2f, 0x94, 0xf5, 0x70, 0xb0, 0x0b, 0x1d, 0x67, 0x77, 0x29, 0xf7, 0x55,
+	0xd1, 0x07, 0x02, 0x2b, 0xb0, 0xa1, 0x16, 0xe1, 0xd7, 0xd7, 0x65, 0x9d,
+	0xb5, 0xc4, 0xac, 0x0d, 0xde, 0xab, 0x07, 0xff, 0x04, 0x5f, 0x37, 0xb5,
+	0xda, 0xf1, 0x73, 0x2b, 0x54, 0xea, 0xb2, 0x38, 0xa2, 0xce, 0x17, 0xc9,
+	0x79, 0x41, 0x87, 0x75, 0x9c, 0xea, 0x9f, 0x92, 0xa1, 0x78, 0x05, 0xa2,
+	0x7c, 0x10, 0x15, 0xec, 0x56, 0xcc, 0x7e, 0x47, 0x1a, 0x48, 0x8e, 0x6f,
+	0x1b, 0x91, 0xf7, 0xaa, 0x5f, 0x38, 0x3c, 0xad, 0xfc, 0x12, 0xe8, 0x56,
+	0xb2, 0x02, 0x34, 0x6a, 0xf8, 0x22, 0x6b, 0x1a, 0x88, 0x21, 0x37, 0xdc,
+	0x3c, 0x5a, 0x57, 0xf0, 0xd2, 0x81, 0x5c, 0x1f, 0xcd, 0x4b, 0xb4, 0x6f,
+	0xa9, 0x15, 0x7f, 0xdf, 0xfd, 0x79, 0xec, 0x3a, 0x10, 0xa8, 0x24, 0xcc,
+	0xc1, 0xeb, 0x3c, 0xe0, 0xb6, 0xb4, 0x39, 0x6a, 0xe2, 0x36, 0x59, 0x00,
+	0x16, 0xba, 0x69, 0x00, 0x01, 0x00, 0x01, 0x42, 0x08, 0x65, 0x73, 0x53,
+	0x44, 0x49, 0x60, 0x00, 0x06
+};
+
+/**
+ * Root CA card key reference
+ */
+static u8 root_ca_keyref[] = { 0x02, 0x0f };
+
+
+/**
+ * ICC card private key reference 
+ */
+static u8 icc_priv_keyref[] = { 0x02, 0x1f };
+
+/**
+ * Intermediate CA card key reference
+ */ 
+static u8 cvc_intca_keyref[] =
+    { 0x65, 0x73, 0x53, 0x44, 0x49, 0x60, 0x00, 0x06 };
+
+/**
+ * In memory key reference for selecting IFD sent certificate
+ */
+static u8 cvc_ifd_keyref[] =
+    { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 };
+
+/**
+ * Serial number for IFD Terminal application
+ */
+static u8 sn_ifd[] = { 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 };
+
+/**
+ * Serial number for ICC card.
+ * This buffer is to be filled at runtime
+ */
+static u8 sn_icc[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
+
+/************ internal functions **********************************/
+
+/**
+ * Select a file from card, process fci and read data.
+ *
+ * This is done by mean of iso_select_file() and iso_read_binary()
+ *
+ * @param card pointer to sc_card data
+ * @param path pathfile
+ * @param file pointer to resulting file descriptor
+ * @param buffer pointer to buffer where to store file contents
+ * @param length length of buffer data
+ * @return SC_SUCCESS if ok; else error code
+ */
+int dnie_read_file(sc_card_t * card,
+		   const sc_path_t * path,
+		   sc_file_t ** file, u8 ** buffer, size_t * length)
+{
+	u8 *data;
+	char *msg = NULL;
+	int res = SC_SUCCESS;
+	size_t fsize = 0;	/* file size */
+	sc_context_t *ctx = NULL;
+
+	if (!card || !card->ctx)
+		return SC_ERROR_INVALID_ARGUMENTS;
+	ctx = card->ctx;
+	LOG_FUNC_CALLED(card->ctx);
+	if (!buffer || !length || !path)	/* check received arguments */
+		LOG_FUNC_RETURN(ctx, SC_ERROR_INVALID_ARGUMENTS);
+	/* select file by mean of iso7816 ops */
+	res = card->ops->select_file(card, path, file);
+	if (res != SC_SUCCESS) {
+		msg = "select_file failed";
+		goto dnie_read_file_err;
+	}
+	/* iso's select file calls if needed process_fci, so arriving here
+	 * we have file structure filled.
+	 */
+	if ((*file)->type == SC_FILE_TYPE_DF) {
+		/* just a DF, no need to read_binary() */
+		*buffer = NULL;
+		*length = 0;
+		res = SC_SUCCESS;
+		msg = "File is a DF: no need to read_binary()";
+		goto dnie_read_file_end;
+	}
+	fsize = (*file)->size;
+	/* reserve enought space to read data from card */
+	if (fsize <= 0) {
+		res = SC_ERROR_FILE_TOO_SMALL;
+		msg = "provided buffer size is too small";
+		goto dnie_read_file_err;
+	}
+	data = calloc(fsize, sizeof(u8));
+	if (data == NULL) {
+		res = SC_ERROR_OUT_OF_MEMORY;
+		msg = "cannot reserve requested buffer size";
+		goto dnie_read_file_err;
+	}
+	/* call sc_read_binary() to retrieve data */
+	sc_log(ctx, "read_binary(): expected '%d' bytes", fsize);
+	res = sc_read_binary(card, 0, data, fsize, 0L);
+	if (res < 0) {		/* read_binary returns number of bytes readed */
+		res = SC_ERROR_CARD_CMD_FAILED;
+		msg = "read_binary() failed";
+		goto dnie_read_file_err;
+	}
+	*buffer = data;
+	*length = res;
+	/* arriving here means success */
+	res = SC_SUCCESS;
+	goto dnie_read_file_end;
+ dnie_read_file_err:
+	if (*file)
+		sc_file_free(*file);
+ dnie_read_file_end:
+	if (msg)
+		sc_log(ctx, msg);
+	LOG_FUNC_RETURN(ctx, res);
+}
+
+/**
+ * Read SM required certificates from card.
+ *
+ * This function uses received path to read a certificate file from
+ * card. 
+ * No validation is done except that received data is effectively a certificate
+ * @param card Pointer to card driver structure
+ * @param certpat path to requested certificate
+ * @param cert where to store resultig data
+ * @return SC_SUCCESS if ok, else error code 
+ */
+static int dnie_read_certificate(sc_card_t * card, char *certpath, X509 ** cert)
+{
+	sc_file_t *file = NULL;
+	sc_path_t *path = NULL;
+	u8 *buffer = NULL;
+	char *msg = NULL;
+	size_t bufferlen = 0;
+	int res = SC_SUCCESS;
+
+	LOG_FUNC_CALLED(card->ctx);
+	path = (sc_path_t *) calloc(1, sizeof(sc_path_t));
+	if (!path) {
+		msg = "Cannot allocate path data for cert read";
+		res = SC_ERROR_OUT_OF_MEMORY;
+		goto read_cert_end;
+	}
+	sc_format_path(certpath, path);
+	res = dnie_read_file(card, path, &file, &buffer, &bufferlen);
+	if (res != SC_SUCCESS) {
+		msg = "Cannot get intermediate CA cert";
+		goto read_cert_end;
+	}
+	*cert = d2i_X509(NULL, (const unsigned char **)&buffer, bufferlen);
+	if (*cert == NULL) {	/* received data is not a certificate */
+		res = SC_ERROR_OBJECT_NOT_VALID;
+		msg = "Readed data is not a certificate";
+		goto read_cert_end;
+	}
+	res = SC_SUCCESS;
+
+ read_cert_end:
+	if (file) {
+		sc_file_free(file);
+		file = NULL;
+		buffer = NULL;
+		bufferlen = 0;
+	}
+	if (msg)
+		sc_log(card->ctx, msg);
+	LOG_FUNC_RETURN(card->ctx, res);
+}
+
+/************ implementation of cwa provider methods **************/
+
+/**
+ * Retrieve Root CA public key.
+ *
+ * Just returns (as local SM authentication) static data
+ * @param card Pointer to card driver structure
+ * @param root_ca_key pointer to resulting returned key
+ * @return SC_SUCCESS if ok; else error code
+ */
+static int dnie_get_root_ca_pubkey(sc_card_t * card, EVP_PKEY ** root_ca_key)
+{
+	int res=SC_SUCCESS;
+	RSA *root_ca_rsa=NULL;
+	LOG_FUNC_CALLED(card->ctx);
+
+	/* compose root_ca_public key with data provided by Dnie Manual */
+	*root_ca_key = EVP_PKEY_new();
+	root_ca_rsa = RSA_new();
+	if (!*root_ca_key || !root_ca_rsa) {
+		sc_log(card->ctx, "Cannot create data for root CA public key");
+		return SC_ERROR_OUT_OF_MEMORY;
+	}
+	root_ca_rsa->n = BN_bin2bn(icc_root_ca_modulus,
+				   sizeof(icc_root_ca_modulus), root_ca_rsa->n);
+	root_ca_rsa->e = BN_bin2bn(icc_root_ca_public_exponent,
+				   sizeof(icc_root_ca_public_exponent),
+				   root_ca_rsa->e);
+	res = EVP_PKEY_assign_RSA(*root_ca_key, root_ca_rsa);
+	if (!res) {
+		if (*root_ca_key)
+			EVP_PKEY_free(*root_ca_key);	/*implies root_ca_rsa free() */
+		sc_log(card->ctx, "Cannot compose root CA public key");
+		return SC_ERROR_INTERNAL;
+	}
+	LOG_FUNC_RETURN(card->ctx, SC_SUCCESS);
+}
+
+/**
+ * Retrieve IFD (application) CVC intermediate CA certificate and length.
+ *
+ * Returns a byte array with the intermediate CA certificate
+ * (in CardVerifiable Certificate format) to be sent to the
+ * card in External Authentication process
+ * As this is local provider, just points to provided static data,
+ * and allways return success
+ *
+ * @param card Pointer to card driver Certificate
+ * @param cert Where to store resulting byte array
+ * @param length len of returned byte array
+ * @return SC_SUCCESS if ok; else error code
+ */
+static int dnie_get_cvc_ca_cert(sc_card_t * card, u8 ** cert, size_t * length)
+{
+	LOG_FUNC_CALLED(card->ctx);
+	*cert = C_CV_CA_CS_AUT_cert;
+	*length = sizeof(C_CV_CA_CS_AUT_cert);
+	LOG_FUNC_RETURN(card->ctx, SC_SUCCESS);
+}
+
+/**
+ * Retrieve IFD (application) CVC certificate and length.
+ *
+ * Returns a byte array with the application's certificate
+ * (in CardVerifiable Certificate format) to be sent to the
+ * card in External Authentication process
+ * As this is local provider, just points to provided static data,
+ * and allways return success
+ *
+ * @param card Pointer to card driver Certificate
+ * @param cert Where to store resulting byte array
+ * @param length len of returned byte array
+ * @return SC_SUCCESS if ok; else error code
+ */
+static int dnie_get_cvc_ifd_cert(sc_card_t * card, u8 ** cert, size_t * length)
+{
+	LOG_FUNC_CALLED(card->ctx);
+	*cert = C_CV_IFDUser_AUT_cert;
+	*length = sizeof(C_CV_IFDUser_AUT_cert);
+	LOG_FUNC_RETURN(card->ctx, SC_SUCCESS);
+}
+
+/**
+ * Get IFD (Terminal) private key data.
+ * 
+ * As this is a local (in memory) provider, just get data specified in
+ * DNIe's manual and compose an OpenSSL private key structure
+ *
+ * Notice that resulting data should be keept in memory as little as possible
+ * Erasing them once used
+ *
+ * @param card pointer to card driver structure
+ * @param ifd_privkey where to store IFD private key
+ * @return SC_SUCCESS if ok; else error code
+ */
+static int dnie_get_ifd_privkey(sc_card_t * card, EVP_PKEY ** ifd_privkey)
+{
+	RSA *ifd_rsa=NULL;
+	int res=SC_SUCCESS;
+
+	LOG_FUNC_CALLED(card->ctx);
+
+	/* compose ifd_private key with data provided in Annex 3 of DNIe Manual */
+	*ifd_privkey = EVP_PKEY_new();
+	ifd_rsa = RSA_new();
+	if (!*ifd_privkey || !ifd_rsa) {
+		sc_log(card->ctx, "Cannot create data for IFD private key");
+		return SC_ERROR_OUT_OF_MEMORY;
+	}
+	ifd_rsa->n = BN_bin2bn(ifd_modulus, sizeof(ifd_modulus), ifd_rsa->n);
+	ifd_rsa->e =
+	    BN_bin2bn(ifd_public_exponent, sizeof(ifd_public_exponent),
+		      ifd_rsa->e);
+	ifd_rsa->d =
+	    BN_bin2bn(ifd_private_exponent, sizeof(ifd_private_exponent),
+		      ifd_rsa->d);
+	res = EVP_PKEY_assign_RSA(*ifd_privkey, ifd_rsa);
+	if (!res) {
+		if (*ifd_privkey)
+			EVP_PKEY_free(*ifd_privkey);	/* implies ifd_rsa free() */
+		sc_log(card->ctx, "Cannot compose IFD private key");
+		return SC_ERROR_INTERNAL;
+	}
+	LOG_FUNC_RETURN(card->ctx, SC_SUCCESS);
+}
+
+/**
+ * Get ICC intermediate CA Certificate from card.
+ *
+ * @param card Pointer to card driver structure
+ * @param cert where to store resulting certificate
+ * @return SC_SUCCESS if ok; else error code
+ */
+static int dnie_get_icc_intermediate_ca_cert(sc_card_t * card, X509 ** cert)
+{
+	return dnie_read_certificate(card, "3F006020", cert);
+}
+
+/**
+ * Get ICC (card) certificate.
+ *
+ * @param card Pointer to card driver structure
+ * @param cert where to store resulting certificate
+ * @return SC_SUCCESS if ok; else error code
+ */
+static int dnie_get_icc_cert(sc_card_t * card, X509 ** cert)
+{
+	return dnie_read_certificate(card, "3F00601F", cert);
+}
+
+/**
+ * Retrieve key reference for Root CA to validate CVC intermediate CA certs.
+ *
+ * This is required in the process of On card external authenticate
+ * @param card Pointer to card driver structure
+ * @param buf where to store resulting key reference
+ * @param len where to store buffer length
+ * @return SC_SUCCESS if ok; else error code
+ */
+static int dnie_get_root_ca_pubkey_ref(sc_card_t * card, u8 ** buf,
+				       size_t * len)
+{
+	*buf = root_ca_keyref;
+	*len = sizeof(root_ca_keyref);
+	return SC_SUCCESS;
+}
+
+/**
+ * Retrieve public key reference for intermediate CA to validate IFD cert.
+ *
+ * This is required in the process of On card external authenticate
+ * As this driver is for local SM authentication SC_SUCCESS is allways returned
+ *
+ * @param card Pointer to card driver structure
+ * @param buf where to store resulting key reference
+ * @param len where to store buffer length
+ * @return SC_SUCCESS if ok; else error code
+ */
+static int dnie_get_intermediate_ca_pubkey_ref(sc_card_t * card, u8 ** buf,
+					       size_t * len)
+{
+	*buf = cvc_intca_keyref;
+	*len = sizeof(cvc_intca_keyref);
+	return SC_SUCCESS;
+}
+
+/**
+ *  Retrieve public key reference for IFD certificate.
+ *
+ * This tells the card with in memory key reference is to be used
+ * when CVC cert is sent for external auth procedure
+ * As this driver is for local SM authentication SC_SUCCESS is allways returned
+ *
+ * @param card pointer to card driver structure
+ * @param buf where to store data to be sent
+ * @param len where to store data length
+ * @return SC_SUCCESS if ok; else error code
+ */
+static int dnie_get_ifd_pubkey_ref(sc_card_t * card, u8 ** buf, size_t * len)
+{
+	*buf = cvc_ifd_keyref;
+	*len = sizeof(cvc_ifd_keyref);
+	return SC_SUCCESS;
+}
+
+/**
+ * Retrieve key reference for ICC privkey.
+ * 
+ * In local SM stablishment, just retrieve key reference from static 
+ * data tables and just return success
+ * 
+ * @param card pointer to card driver structure
+ * @param buf where to store data
+ * @param len where to store data length
+ * @return SC_SUCCESS if ok; else error
+ */
+static int dnie_get_icc_privkey_ref(sc_card_t * card, u8 ** buf, size_t * len)
+{
+	*buf = icc_priv_keyref;
+	*len = sizeof(icc_priv_keyref);
+	return SC_SUCCESS;
+}
+
+/**
+ * Retrieve SN.IFD (8 bytes left padded with zeroes if required).
+ *
+ * In DNIe local SM procedure, just read it from static data and
+ * return SC_SUCCESS
+ *
+ * @param card pointer to card structure
+ * @param buf where to store result (8 bytes)
+ * @return SC_SUCCESS if ok; else error
+ */
+static int dnie_get_sn_ifd(sc_card_t * card, u8 ** buf)
+{
+	*buf = sn_ifd;
+	return SC_SUCCESS;
+}
+
+/* Retrieve SN.ICC (8 bytes left padded with zeroes if needed).
+ *
+ * As DNIe reads serial number at startup, no need to read again
+ * Just retrieve it from cache and return success
+ *
+ * @param card pointer to card structure
+ * @param buf where to store result (8 bytes)
+ * @return SC_SUCCESS if ok; else error
+ */
+static int dnie_get_sn_icc(sc_card_t * card, u8 ** buf)
+{
+	int res=SC_SUCCESS;
+	sc_serial_number_t serial;
+
+	res = sc_card_ctl(card, SC_CARDCTL_GET_SERIALNR, &serial);
+	LOG_TEST_RET(card->ctx, res, "Error in gettting serial number");
+	/* copy into sn_icc buffer.Remember that dnie sn has 7 bytes length */
+	memset(&sn_icc[0], 0, sizeof(sn_icc));
+	memcpy(&sn_icc[1], serial.value, 7);
+	/* return data */
+	*buf = &sn_icc[0];
+	return SC_SUCCESS;
+}
+
+/**
+ * CWA-14890 SM stablisment pre-operations.
+ *
+ * DNIe needs to get icc serial number at the begin of the sm creation
+ * (to avoid breaking key references) so get it an store into serialnr 
+ * cache here.
+ *
+ * In this way if get_sn_icc is called(), we make sure that no APDU
+ * command is to be sent to card, just retrieve it from cache 
+ *
+ * @param card pointer to card driver structure
+ * @param provider pointer to SM data provider for DNIe
+ * @return SC_SUCCESS if OK. else error code
+ */
+static int dnie_create_pre_ops(sc_card_t * card, cwa_provider_t * provider)
+{
+	sc_serial_number_t serial;
+
+	/* make sure that this cwa provider is used with a working DNIe card */
+	if (card->type != SC_CARD_TYPE_DNIE_USER)
+		LOG_FUNC_RETURN(card->ctx, SC_ERROR_INVALID_CARD);
+
+	/* ensure that Card Serial Number is properly cached */
+	return sc_card_ctl(card, SC_CARDCTL_GET_SERIALNR, &serial);
+}
+
+/**
+ * Main entry point for DNIe CWA14890 SM data provider.
+ *
+ * Return a pointer to DNIe data provider with proper function pointers
+ * 
+ * @param card pointer to card driver data structure
+ * @return cwa14890 DNIe data provider if success, null on error
+ */
+cwa_provider_t *dnie_get_cwa_provider(sc_card_t * card)
+{
+
+	cwa_provider_t *res = cwa_get_default_provider(card);
+	if (!res)
+		return NULL;
+
+	/* set up proper data */
+
+	/* pre and post operations */
+	res->cwa_create_pre_ops = dnie_create_pre_ops;
+	res->cwa_create_post_ops = NULL;
+
+	/* Get ICC intermediate CA  path */
+	res->cwa_get_icc_intermediate_ca_cert =
+	    dnie_get_icc_intermediate_ca_cert;
+	/* Get ICC certificate path */
+	res->cwa_get_icc_cert = dnie_get_icc_cert;
+
+	/* Obtain RSA public key from RootCA */
+	res->cwa_get_root_ca_pubkey = dnie_get_root_ca_pubkey;
+	/* Obtain RSA IFD private key */
+	res->cwa_get_ifd_privkey = dnie_get_ifd_privkey;
+
+	/* Retrieve CVC intermediate CA certificate and length */
+	res->cwa_get_cvc_ca_cert = dnie_get_cvc_ca_cert;
+	/* Retrieve CVC IFD certificate and length */
+	res->cwa_get_cvc_ifd_cert = dnie_get_cvc_ifd_cert;
+
+	/* Get public key references for Root CA to validate intermediate CA cert */
+	res->cwa_get_root_ca_pubkey_ref = dnie_get_root_ca_pubkey_ref;
+
+	/* Get public key reference for IFD intermediate CA certificate */
+	res->cwa_get_intermediate_ca_pubkey_ref =
+	    dnie_get_intermediate_ca_pubkey_ref;
+
+	/* Get public key reference for IFD CVC certificate */
+	res->cwa_get_ifd_pubkey_ref = dnie_get_ifd_pubkey_ref;
+
+	/* Get ICC private key reference */
+	res->cwa_get_icc_privkey_ref = dnie_get_icc_privkey_ref;
+
+	/* Get IFD Serial Number */
+	res->cwa_get_sn_ifd = dnie_get_sn_ifd;
+
+	/* Get ICC Serial Number */
+	res->cwa_get_sn_icc = dnie_get_sn_icc;
+
+    /************** operations related with APDU encoding ******************/
+
+	/* pre and post operations */
+	res->cwa_encode_pre_ops = NULL;
+	res->cwa_encode_post_ops = NULL;
+
+    /************** operations related APDU response decoding **************/
+
+	/* pre and post operations */
+	res->cwa_decode_pre_ops = NULL;
+	res->cwa_decode_post_ops = NULL;
+
+	return res;
+}
+
+static int dnie_transmit_apdu_internal(sc_card_t * card, sc_apdu_t * apdu)
+{
+	u8 *buf = NULL;		/* use for store partial le responses */
+	int res = SC_SUCCESS;
+	cwa_provider_t *provider = NULL;
+	if ((card == NULL) || (card->ctx == NULL) || (apdu == NULL))
+		return SC_ERROR_INVALID_ARGUMENTS;
+	LOG_FUNC_CALLED(card->ctx);
+	provider = GET_DNIE_PRIV_DATA(card)->cwa_provider;
+	buf = calloc(2048, sizeof(u8));
+	if (!buf)
+		LOG_FUNC_RETURN(card->ctx, SC_ERROR_OUT_OF_MEMORY);
+
+	/* check if envelope is needed */
+	if (apdu->lc <= card->max_send_size) {
+		int tmp;
+		/* no envelope needed */
+		sc_log(card->ctx, "envelope tx is not required");
+
+		tmp = apdu->cse;	/* save original apdu type */
+		/* if SM is on, assure rx buffer exists and force get_response */
+		if (provider->status.session.state == CWA_SM_ACTIVE) {
+			if (tmp == SC_APDU_CASE_3_SHORT)
+				apdu->cse = SC_APDU_CASE_4_SHORT;
+			if (apdu->resplen == 0) {	/* no response buffer: create */
+				apdu->resp = buf;
+				apdu->resplen = 2048;
+				apdu->le = card->max_recv_size;
+			}
+		}
+		/* call std sc_transmit_apdu */
+		res = sc_transmit_apdu(card, apdu);
+		/* and restore original apdu type */
+		apdu->cse = tmp;
+	} else {
+
+		size_t e_txlen = 0;
+		size_t index = 0;
+		sc_apdu_t *e_apdu = NULL;
+		u8 *e_tx = NULL;
+
+		/* envelope needed */
+		sc_log(card->ctx, "envelope tx required: lc:%d", apdu->lc);
+
+		e_apdu = calloc(1, sizeof(sc_apdu_t));	/* enveloped apdu */
+		e_tx = calloc(7 + apdu->datalen, sizeof(u8));	/* enveloped data */
+		if (!e_apdu || !e_tx)
+			LOG_FUNC_RETURN(card->ctx, SC_ERROR_OUT_OF_MEMORY);
+
+		/* copy apdu info into enveloped data */
+		*(e_tx + 0) = apdu->cla;	/* apdu header */
+		*(e_tx + 1) = apdu->ins;
+		*(e_tx + 2) = apdu->p1;
+		*(e_tx + 3) = apdu->p2;
+		*(e_tx + 4) = 0x00;	/* length in extended format */
+		*(e_tx + 5) = 0xff & (apdu->lc >> 8);
+		*(e_tx + 6) = 0xff & apdu->lc;
+		memcpy(e_tx + 7, apdu->data, apdu->lc);
+		e_txlen = 7 + apdu->lc;
+		/* sc_log(card->ctx, "Data to be enveloped & sent: (%d bytes)\n%s\n===============================================================",e_txlen,sc_dump_hex(e_tx,e_txlen)); */
+		/* split apdu in n chunks of max_send_size len */
+		for (index = 0; index < e_txlen; index += card->max_send_size) {
+			size_t len = MIN(card->max_send_size, e_txlen - index);
+			sc_log(card->ctx, "envelope tx offset:%04X size:%02X",
+			       index, len);
+
+			/* compose envelope apdu command */
+			sc_format_apdu(card, e_apdu, apdu->cse, 0xC2, 0x00,
+				       0x00);
+			e_apdu->cla = 0x90;	/* propietary CLA */
+			e_apdu->data = e_tx + index;
+			e_apdu->lc = len;
+			e_apdu->datalen = len;
+			e_apdu->le = apdu->le;
+			e_apdu->resp = apdu->resp;
+			e_apdu->resplen = apdu->resplen;
+			/* if SM is ON, ensure resp exists, and force getResponse() */
+			if (provider->status.session.state == CWA_SM_ACTIVE) {
+				/* set up proper apdu type */
+				if (e_apdu->cse == SC_APDU_CASE_3_SHORT)
+					e_apdu->cse = SC_APDU_CASE_4_SHORT;
+				/* if no response buffer: create */
+				if (apdu->resplen == 0) {
+					e_apdu->resp = buf;
+					e_apdu->resplen = 2048;
+					e_apdu->le = card->max_recv_size;
+				}
+			}
+			/* send data chunk bypassing apdu wrapping */
+			res = sc_transmit_apdu(card, e_apdu);
+			LOG_TEST_RET(card->ctx, res,
+				     "Error in envelope() send apdu");
+		}		/* for */
+		/* last apdu sent contains response to enveloped cmd */
+		apdu->resp = e_apdu->resp;
+		apdu->resplen = e_apdu->resplen;
+		res = SC_SUCCESS;
+	}
+	LOG_FUNC_RETURN(card->ctx, res);
+}
+
+/**
+ * APDU Wrapping routine.
+ *
+ * Called before sc_transmit_apdu() to allowing APDU wrapping
+ * If set to NULL no wrapping process will be done
+ * Usefull on Secure Messaging APDU encode/decode
+ * If returned value is greater than zero, do_single_transmit() 
+ * will be called, else means either SC_SUCCESS or error code 
+ *
+ * NOTE:
+ * DNIe doesn't handle apdu chaining; instead apdus with
+ * lc>max_send_size are sent by mean of envelope() apdu command
+ * So we use this method for
+ * - encode and decode SM if SM is on
+ * - use envelope instead of apdu chain if lc>max_send_size
+ *
+ * @param card Pointer to Card Structure
+ * @param apdu to be wrapped
+ * @return 
+ * - positive: use OpenSC's sc_transmit_apdu()
+ * - negative: error
+ * - zero: success: no need to further transmission
+ */
+static int dnie_wrap_apdu(sc_card_t * card, sc_apdu_t * apdu)
+{
+	int res = SC_SUCCESS;
+	sc_apdu_t wrapped;
+	sc_context_t *ctx;
+	cwa_provider_t *provider = NULL;
+	int retries = 3;
+
+	if ((card == NULL) || (card->ctx == NULL) || (apdu == NULL))
+		return SC_ERROR_INVALID_ARGUMENTS;
+	ctx=card->ctx;
+	LOG_FUNC_CALLED(ctx);
+	provider = GET_DNIE_PRIV_DATA(card)->cwa_provider;
+	for (retries=3; retries>0; retries--) {
+		/* preserve original apdu to take care of retransmission */
+		memcpy(&wrapped, apdu, sizeof(sc_apdu_t));
+		/* SM is active, encode apdu */
+		if (provider->status.session.state == CWA_SM_ACTIVE) {
+			wrapped.resp = NULL;
+			wrapped.resplen = 0;	/* let get_response() assign space */
+			res = cwa_encode_apdu(card, provider, apdu, &wrapped);
+			LOG_TEST_RET(ctx, res,
+				     "Error in cwa_encode_apdu process");
+		}
+		/* send apdu via envelope() cmd if needed */
+		res = dnie_transmit_apdu_internal(card, &wrapped);
+		/* check for tx errors */
+		LOG_TEST_RET(ctx, res, "Error in dnie_transmit_apdu process");
+
+		/* parse response and handle SM related errors */
+		res=card->ops->check_sw(card,wrapped.sw1,wrapped.sw2);
+		if ( res == SC_ERROR_SM ) {
+			sc_log(ctx,"Detected SM error/collision. Try %d",retries);
+			switch(provider->status.session.state) {
+				/* No SM or creating: collision with other process
+				   just retry as SM error reset ICC SM state */
+				case CWA_SM_NONE: 
+				case CWA_SM_INPROGRESS: 
+					continue;
+				/* SM was active: force restart SM and retry */
+				case CWA_SM_ACTIVE:
+					res=cwa_create_secure_channel(card, provider, CWA_SM_COLD);
+					LOG_TEST_RET(ctx,res,"Cannot re-enable SM");
+					continue;
+			}
+		}
+
+		/* if SM is active; decode apdu */
+		if (provider->status.session.state == CWA_SM_ACTIVE) {
+			apdu->resp = NULL;
+			apdu->resplen = 0;	/* let cwa_decode_response() eval & create size */
+			res = cwa_decode_response(card, provider, &wrapped, apdu);
+			LOG_TEST_RET(ctx, res, "Error in cwa_decode_response process");
+		} else {
+			/* memcopy result to original apdu */
+			memcpy(apdu, &wrapped, sizeof(sc_apdu_t));
+		}
+		LOG_FUNC_RETURN(ctx, res);
+	}
+	sc_log(ctx,"Too many retransmissions. Abort and return");
+	LOG_FUNC_RETURN(ctx, SC_ERROR_INTERNAL);
+}
+
+int dnie_transmit_apdu(sc_card_t * card, sc_apdu_t * apdu)
+{
+	int res = SC_SUCCESS;
+	res = dnie_wrap_apdu(card, apdu);
+	if (res <= 0) return res;
+	return sc_transmit_apdu(card, apdu);
+}
+
+#endif				/* HAVE_OPENSSL */
+/* _ end of cwa-dnie.c - */
diff --git a/src/libopensc/cwa-dnie.h b/src/libopensc/cwa-dnie.h
new file mode 100644
index 0000000..3184470
--- /dev/null
+++ b/src/libopensc/cwa-dnie.h
@@ -0,0 +1,60 @@
+/**
+ * cwa-dnie.h: Defines dnie_transmit_apdu wrapper for sc_transmit_apdu
+ *
+ * This work is derived from many sources at OpenSC Project site,
+ * (see references), and the information made public for Spanish 
+ * Direccion General de la Policia y de la Guardia Civil
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+#ifndef __CWADNIE_H__
+#define __CWADNIE_H__
+
+#ifdef ENABLE_OPENSSL
+
+#include "libopensc/opensc.h"
+#include "cwa14890.h"
+#ifdef ENABLE_DNIE_UI
+#include "user-interface.h"
+#endif
+
+/**
+  * OpenDNIe private data declaration
+  *
+  * Defines internal data used in OpenDNIe code
+  */
+ typedef struct dnie_private_data_st {
+ /*  sc_serial_number_t *serialnumber; < Cached copy of card serial number NOT USED AT THE MOMENT */
+     int rsa_key_ref;    /**< Key id reference being used in sec operation */
+     u8 *cache;      /**< Cache buffer for read_binary() operation */
+     size_t cachelen;    /**< length of cache buffer */
+     cwa_provider_t *cwa_provider;
+#ifdef ENABLE_DNIE_UI
+	 struct ui_context ui_ctx;
+#endif
+ } dnie_private_data_t;
+ 
+/**
+ * DNIe Card Driver private data
+ */
+#define GET_DNIE_PRIV_DATA(card) ((dnie_private_data_t *) ((card)->drv_data))
+#define GET_DNIE_UI_CTX(card) (((dnie_private_data_t *) ((card)->drv_data))->ui_ctx)
+
+int dnie_transmit_apdu(sc_card_t * card, sc_apdu_t * apdu);
+
+#endif
+
+#endif
diff --git a/src/libopensc/cwa14890.c b/src/libopensc/cwa14890.c
new file mode 100644
index 0000000..c7c23ca
--- /dev/null
+++ b/src/libopensc/cwa14890.c
@@ -0,0 +1,2136 @@
+/**
+ * cwa14890.c: Implementation of Secure Messaging according CWA-14890-1 and CWA-14890-2 standards.
+ * 
+ * Copyright (C) 2010 Juan Antonio Martinez <jonsito at terra.es>
+ *
+ * This work is derived from many sources at OpenSC Project site,
+ * (see references) and the information made public by Spanish 
+ * Direccion General de la Policia y de la Guardia Civil
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+#define __CWA14890_C__
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#ifdef ENABLE_OPENSSL		/* empty file without openssl */
+
+#include <stdlib.h>
+#include <string.h>
+#include <ctype.h>
+
+#include "opensc.h"
+#include "cardctl.h"
+#include "internal.h"
+#include <openssl/x509.h>
+#include <openssl/des.h>
+#include <openssl/rand.h>
+#include "cwa-dnie.h"
+
+#include "cwa14890.h"
+
+/*********************** utility functions ************************/
+
+/**
+ * Tool for create a string dump of a provided buffer.
+ *
+ * When buffer length is longer than 16384 bytes, output is cut
+ *
+ * @param buff Buffer to be printed
+ * @param len Buffer len
+ * @return a char buffer with data dump in hex+ascii format
+ */
+static char *cwa_hexdump(const u8 * buf, size_t len)
+{
+	size_t j;
+	size_t count = 0;
+	static char res[16384];
+	memset(res, 0, sizeof(res));
+	len = MIN(len, sizeof(res));
+	for (count = 0; count < len; count += 16) {
+		size_t nitems = MIN(16, len - count);
+		for (j = 0; j < nitems; j++)
+			sprintf(res, "%s%02X ", res, 0xff & *(buf + count + j));
+		for (; j < 16; j++)
+			sprintf(res, "%s   ", res);
+		for (j = 0; j < nitems; j++) {
+			char c = (char)*(buf + count + j);
+			sprintf(res, "%s%c", res, (isprint(c) ? c : '.'));
+		}
+		for (; j < 16; j++)
+			sprintf(res, "%s ", res);
+		sprintf(res, "%s\n", res);
+	}
+	return res;
+}
+
+/**
+ * Dump an APDU before SM translation.
+ *
+ * This is mainly for debugging purposes. programmer should disable
+ * this function in a production environment, as APDU will be shown
+ * in text-plain on debug traces
+ *
+ * @param card Pointer to card driver data structure
+ * @param apdu APDU to be encoded, or APDU response after decoded
+ * @param flag 0: APDU is to be encoded: 1; APDU decoded response
+ */
+static void cwa_trace_apdu(sc_card_t * card, sc_apdu_t * apdu, int flag)
+{
+	char *buf = NULL;
+/* set to 0 in production */
+#if 1
+	if (!card || !card->ctx || !apdu)
+		return;
+	if (flag == 0) {	/* apdu command */
+		if (apdu->datalen > 0) {	/* apdu data to show */
+			buf = cwa_hexdump(apdu->data, apdu->datalen);
+			sc_log(card->ctx,
+			       "\nAPDU before encode: ==================================================\nCLA: %02X INS: %02X P1: %02X P2: %02X Lc: %02X Le: %02X DATA: [%5u bytes]\n%s======================================================================\n",
+			       apdu->cla, apdu->ins, apdu->p1, apdu->p2,
+			       apdu->lc, apdu->le, apdu->datalen, buf);
+		} else {	/* apdu data field is empty */
+			sc_log(card->ctx,
+			       "\nAPDU before encode: ==================================================\nCLA: %02X INS: %02X P1: %02X P2: %02X Lc: %02X Le: %02X (NO DATA)\n======================================================================\n",
+			       apdu->cla, apdu->ins, apdu->p1, apdu->p2,
+			       apdu->lc, apdu->le);
+		}
+	} else {		/* apdu response */
+		buf = cwa_hexdump(apdu->resp, apdu->resplen);
+		sc_log(card->ctx,
+		       "\nAPDU response after decode: ==========================================\nSW1: %02X SW2: %02X RESP: [%5u bytes]\n%s======================================================================\n",
+		       apdu->sw1, apdu->sw2, apdu->resplen, buf);
+	}
+#endif
+
+}
+
+/**
+ * Increase send sequence counter SSC.
+ *
+ * @param card smart card info structure
+ * @param sm Secure Message session handling data structure
+ * @return SC_SUCCESS if ok; else error code
+ *
+ * TODO: to further study: what about using bignum arithmetics?
+ */
+static int cwa_increase_ssc(sc_card_t * card, cwa_sm_session_t * sm)
+{
+	int n;
+	/* preliminary checks */
+	if (!card || !card->ctx )
+		return SC_ERROR_INVALID_ARGUMENTS;
+	if (!sm )
+		return SC_ERROR_SM_NOT_INITIALIZED;
+	LOG_FUNC_CALLED(card->ctx);
+	/* u8 arithmetic; exit loop if no carry */
+	sc_log(card->ctx, "Curr SSC: '%s'", sc_dump_hex(sm->ssc, 8));
+	for (n = 7; n >= 0; n--) {
+		sm->ssc[n]++;
+		if ((sm->ssc[n]) != 0x00)
+			break;
+	}
+	sc_log(card->ctx, "Next SSC: '%s'", sc_dump_hex(sm->ssc, 8));
+	LOG_FUNC_RETURN(card->ctx, SC_SUCCESS);
+}
+
+/**
+ * ISO 7816 padding.
+ *
+ * Adds an 0x80 at the end of buffer and as many zeroes to get len 
+ * multiple of 8
+ * Buffer must be long enougth to store additional bytes
+ *
+ * @param buffer where to compose data
+ * @param len pointer to buffer length
+ */
+static void cwa_iso7816_padding(u8 * buf, size_t * buflen)
+{
+	buf[*buflen] = 0x80;
+	(*buflen)++;
+	for (; *buflen & 0x07; (*buflen)++)
+		buf[*buflen] = 0x00;
+}
+
+/**
+ * compose a BER-TLV data in provided buffer.
+ *
+ * Multybyte tag id are not supported
+ * Also multibyte id 0x84 is unhandled
+ *
+ * Notice that TLV is composed starting at offset lenght from
+ * the buffer. Consecutive calls to cwa_add_tlv, appends a new
+ * TLV at the end of the buffer
+ *
+ * @param card card info structure
+ * @param tag tag id
+ * @param len data length
+ * @param value data buffer
+ * @param out pointer to dest data
+ * @param outlen length of composed tlv data
+ * @return SC_SUCCESS if ok; else error
+ */
+static int cwa_compose_tlv(sc_card_t * card,
+			   u8 tag,
+			   size_t len, u8 * data, u8 ** out, size_t * outlen)
+{
+	u8 *pt;
+	size_t size;
+	sc_context_t *ctx;
+	/* preliminary checks */
+	if (!card || !card->ctx || !out || !outlen)
+		return SC_ERROR_INVALID_ARGUMENTS;
+	/* comodity vars */
+	ctx = card->ctx;
+
+	LOG_FUNC_CALLED(ctx);
+	pt = *out;
+	size = *outlen;
+
+	/* assume tag id is not multibyte */
+	*(pt + size++) = tag;
+	/* evaluate tag length value according iso7816-4 sect 5.2.2 */
+	if (len < 0x80) {
+		*(pt + size++) = len;
+	} else if (len < 0x00000100) {
+		*(pt + size++) = 0x81;
+		*(pt + size++) = 0xff & len;
+	} else if (len < 0x00010000) {
+		*(pt + size++) = 0x82;
+		*(pt + size++) = 0xff & (len >> 8);
+		*(pt + size++) = 0xff & len;
+	} else if (len < 0x01000000) {
+		*(pt + size++) = 0x83;
+		*(pt + size++) = 0xff & (len >> 16);
+		*(pt + size++) = 0xff & (len >> 8);
+		*(pt + size++) = 0xff & len;
+	} else {		/* do not handle tag length 0x84 */
+		LOG_FUNC_RETURN(ctx, SC_ERROR_INVALID_ARGUMENTS);
+	}
+	/* copy remaining data to buffer */
+	if (len != 0)
+		memcpy(pt + size, data, len);
+	size += len;
+	*outlen = size;
+	LOG_FUNC_RETURN(ctx, SC_SUCCESS);
+}
+
+/**
+ * Parse and APDU Response and extract specific BER-TLV data.
+ *
+ * NOTICE that iso7816 sect 5.2.2 states that Tag length may be 1 to n bytes
+ * length. In this code we'll assume allways tag lenght = 1 byte
+ *
+ * @param card card info structure
+ * @param data Buffer to look for tlv into
+ * @param datalen Buffer len
+ * @param tlv  array of TLV structure to store results into
+ * @return SC_SUCCESS if OK; else error code
+ */
+static int cwa_parse_tlv(sc_card_t * card,
+			 u8 * data, size_t datalen, cwa_tlv_t tlv_array[]
+    )
+{
+	size_t n = 0;
+	size_t next = 0;
+	sc_context_t *ctx = NULL;
+	u8 *buffer = NULL;
+
+	/* preliminary checks */
+	if (!card || !card->ctx)
+		return SC_ERROR_INVALID_ARGUMENTS;
+	/* comodity vars */
+	ctx = card->ctx;
+
+	LOG_FUNC_CALLED(ctx);
+	if (!data || !tlv_array)
+		LOG_FUNC_RETURN(ctx, SC_ERROR_INVALID_ARGUMENTS);
+
+	/* create buffer and copy data into */
+	buffer = calloc(datalen, sizeof(u8));
+	if (!buffer)
+		LOG_FUNC_RETURN(ctx, SC_ERROR_OUT_OF_MEMORY);
+	memcpy(buffer, data, datalen);
+	for (n = 0; n < datalen; n += next) {
+		cwa_tlv_t *tlv = NULL;	/* pointer to TLV structure to store info */
+		size_t j = 2;	/* TLV has at least two bytes */
+		switch (*(buffer + n)) {
+		case CWA_SM_PLAIN_TAG:
+			tlv = &tlv_array[0];
+			break;	/* 0x81 Plain  */
+		case CWA_SM_CRYPTO_TAG:
+			tlv = &tlv_array[1];
+			break;	/* 0x87 Crypto */
+		case CWA_SM_MAC_TAG:
+			tlv = &tlv_array[2];
+			break;	/* 0x8E MAC CC */
+		case CWA_SM_STATUS_TAG:
+			tlv = &tlv_array[3];
+			break;	/* 0x99 Status */
+		default:	/* CWA_SM_LE_TAG (0x97) is not valid here */
+			sc_log(ctx, "Invalid TLV Tag type: '0x%02X'",
+			       *(buffer + n));
+			LOG_FUNC_RETURN(ctx, SC_ERROR_INVALID_DATA);
+		}
+		tlv->buf = buffer + n;
+		tlv->tag = 0xff & *(buffer + n);
+		tlv->len = 0;	/* temporary */
+		/* evaluate len and start of data */
+		switch (0xff & *(buffer + n + 1)) {
+		case 0x84:
+			tlv->len = (0xff & *(buffer + n + j++));
+		case 0x83:
+			tlv->len =
+			    (tlv->len << 8) + (0xff & *(buffer + n + j++));
+		case 0x82:
+			tlv->len =
+			    (tlv->len << 8) + (0xff & *(buffer + n + j++));
+		case 0x81:
+			tlv->len =
+			    (tlv->len << 8) + (0xff & *(buffer + n + j++));
+			break;
+			/* case 0x80 is not standard, but official code uses it */
+		case 0x80:
+			tlv->len =
+			    (tlv->len << 8) + (0xff & *(buffer + n + j++));
+			break;
+		default:
+			if ((*(buffer + n + 1) & 0xff) < 0x80) {
+				tlv->len = 0xff & *(buffer + n + 1);
+			} else {
+				sc_log(ctx, "Invalid tag length indicator: %d",
+				       *(buffer + n + 1));
+				LOG_FUNC_RETURN(ctx, SC_ERROR_WRONG_LENGTH);
+			}
+		}
+		tlv->data = buffer + n + j;
+		tlv->buflen = j + tlv->len;;
+		sc_log(ctx, "Found Tag: '0x%02X': Length: '%d 'Value:\n%s",
+		       tlv->tag, tlv->len, sc_dump_hex(tlv->data, tlv->len));
+		/* set index to next Tag to jump to */
+		next = tlv->buflen;
+	}
+	LOG_FUNC_RETURN(ctx, SC_SUCCESS);	/* mark no error */
+}
+
+/*********************** authentication routines *******************/
+
+/**
+ * Verify certificates provided by card.
+ *
+ * This routine uses Root CA public key data From Annex III of manual
+ * to verify intermediate CA icc certificate provided by card
+ * if verify sucess, then extract public keys from intermediate CA
+ * and verify icc certificate
+ *
+ * @param card pointer to sc_card_contex
+ * @param sub_ca_cert icc intermediate CA certificate readed from card
+ * @param icc_ca icc certificate from card
+ * @return SC_SUCCESS if verification is ok; else error code
+ */
+static int cwa_verify_icc_certificates(sc_card_t * card,
+				       cwa_provider_t * provider,
+				       X509 * sub_ca_cert, X509 * icc_cert)
+{
+	char *msg;
+	int res = SC_SUCCESS;
+	EVP_PKEY *root_ca_key = NULL;
+	EVP_PKEY *sub_ca_key = NULL;
+	sc_context_t *ctx = NULL;
+
+	/* safety check */
+	if (!card || !card->ctx || !provider)
+		return SC_ERROR_INVALID_ARGUMENTS;
+	ctx = card->ctx;
+	LOG_FUNC_CALLED(ctx);
+	if (!sub_ca_cert || !icc_cert)	/* check received arguments */
+		LOG_FUNC_RETURN(ctx, SC_ERROR_INVALID_ARGUMENTS);
+
+	/* retrieve root ca pkey from provider */
+	res = provider->cwa_get_root_ca_pubkey(card, &root_ca_key);
+	if (res != SC_SUCCESS) {
+		msg = "Cannot get root CA public key";
+		res = SC_ERROR_INTERNAL;
+		goto verify_icc_certificates_end;
+	}
+
+	/* verify sub_ca_cert against root_ca_key */
+	res = X509_verify(sub_ca_cert, root_ca_key);
+	if (!res) {
+		msg = "Cannot verify icc Sub-CA certificate";
+		res = SC_ERROR_SM_AUTHENTICATION_FAILED;
+		goto verify_icc_certificates_end;
+	}
+
+	/* extract sub_ca_key from sub_ca_cert */
+	sub_ca_key = X509_get_pubkey(sub_ca_cert);
+
+	/* verify icc_cert against sub_ca_key */
+	res = X509_verify(icc_cert, sub_ca_key);
+	if (!res) {
+		msg = "Cannot verify icc certificate";
+		res = SC_ERROR_SM_AUTHENTICATION_FAILED;
+		goto verify_icc_certificates_end;
+	}
+
+	/* arriving here means certificate verification success */
+	res = SC_SUCCESS;
+ verify_icc_certificates_end:
+	if (root_ca_key)
+		EVP_PKEY_free(root_ca_key);
+	if (sub_ca_key)
+		EVP_PKEY_free(sub_ca_key);
+	if (res != SC_SUCCESS)
+		sc_log(ctx, msg);
+	LOG_FUNC_RETURN(ctx, res);
+}
+
+/**
+ * Verify CVC certificates in SM establishment process.
+ *
+ * This is done by mean of 00 2A 00 AE 
+ * (Perform Security Operation: Verify Certificate )
+ *
+ * @param card pointer to card data
+ * @param cert Certificate in CVC format
+ * @param len  length of CVC certificate
+ * @return SC_SUCCESS if ok; else error code
+ */
+static int cwa_verify_cvc_certificate(sc_card_t * card,
+				      const u8 * cert, size_t len)
+{
+	sc_apdu_t apdu;
+	int result = SC_SUCCESS;
+	sc_context_t *ctx = NULL;
+
+	/* safety check */
+	if (!card || !card->ctx)
+		return SC_ERROR_INVALID_ARGUMENTS;
+	ctx = card->ctx;
+	LOG_FUNC_CALLED(ctx);
+	if (!cert || (len <= 0))	/* check received arguments */
+		LOG_FUNC_RETURN(ctx, SC_ERROR_INVALID_ARGUMENTS);
+
+	/* compose apdu for Perform Security Operation (Verify cert) cmd */
+	sc_format_apdu(card, &apdu, SC_APDU_CASE_3_SHORT, 0x2A, 0x00, 0xAE);
+	apdu.data = cert;
+	apdu.datalen = len;
+	apdu.lc = len;
+	apdu.le = 0;
+	apdu.resplen = 0;
+	apdu.resp = NULL;
+
+	/* send composed apdu and parse result */
+	result = dnie_transmit_apdu(card, &apdu);
+	LOG_TEST_RET(ctx, result, "Verify CVC certificate failed");
+	result = sc_check_sw(card, apdu.sw1, apdu.sw2);
+	LOG_FUNC_RETURN(ctx, result);
+}
+
+/**
+ * Alternate implementation for set_security environment.
+ *
+ * Used to handle raw apdu data in set_security_env() on SM stblishment
+ * Standard set_securiy_env() method has sc_security_env->buffer limited
+ * to 8 bytes; so cannot send some of required SM commands.
+ *
+ * @param card pointer to card data 
+ * @param p1 apdu P1 parameter
+ * @param p2 apdu P2 parameter
+ * @param buffer raw data to be inserted in apdu
+ * @param length size of buffer
+ * @return SC_SUCCESS if ok; else error code
+ */
+static int cwa_set_security_env(sc_card_t * card,
+				u8 p1, u8 p2, u8 * buffer, size_t length)
+{
+	sc_apdu_t apdu;
+	int result = SC_SUCCESS;
+	sc_context_t *ctx = NULL;
+
+	/* safety check */
+	if (!card || !card->ctx)
+		return SC_ERROR_INVALID_ARGUMENTS;
+	ctx = card->ctx;
+	LOG_FUNC_CALLED(ctx);
+	if (!buffer || (length <= 0))	/* check received arguments */
+		LOG_FUNC_RETURN(ctx, SC_ERROR_INVALID_ARGUMENTS);
+
+	/* compose apdu for Manage Security Environment cmd */
+	sc_format_apdu(card, &apdu, SC_APDU_CASE_3_SHORT, 0x22, p1, p2);
+	apdu.data = buffer;
+	apdu.datalen = length;
+	apdu.lc = length;
+	apdu.resp = NULL;
+	apdu.resplen = 0;
+	apdu.le = 0;
+
+	/* send composed apdu and parse result */
+	result = dnie_transmit_apdu(card, &apdu);
+	LOG_TEST_RET(ctx, result, "SM Set Security Environment failed");
+	result = sc_check_sw(card, apdu.sw1, apdu.sw2);
+	LOG_FUNC_RETURN(ctx, result);
+}
+
+/**
+ * SM internal authenticate.
+ *
+ * Internal (Card) authentication (let the card verify sent ifd certs)
+ *
+ * @param card pointer to card data 
+ * @param sm   secure message data pointer
+ * @param data data to be sent in apdu
+ * @param datalen length of data to send
+ * @return SC_SUCCESS if OK: else error code
+ */
+static int cwa_internal_auth(sc_card_t * card,
+			     cwa_sm_status_t * sm, u8 * data, size_t datalen)
+{
+	sc_apdu_t apdu;
+	u8 rbuf[SC_MAX_APDU_BUFFER_SIZE];
+	int result = SC_SUCCESS;
+	sc_context_t *ctx = NULL;
+
+	/* safety check */
+	if (!card || !card->ctx)
+		return SC_ERROR_INVALID_ARGUMENTS;
+	ctx = card->ctx;
+	LOG_FUNC_CALLED(ctx);
+	if (!data || (datalen <= 0))	/* check received arguments */
+		LOG_FUNC_RETURN(ctx, SC_ERROR_INVALID_ARGUMENTS);
+
+	/* compose apdu for Internal Authenticate cmd */
+	sc_format_apdu(card, &apdu, SC_APDU_CASE_4_SHORT, 0x88, 0x00, 0x00);
+	apdu.data = data;
+	apdu.datalen = datalen;
+	apdu.lc = datalen;
+	apdu.le = 0x80;		/* expected 1024 bits response */
+	apdu.resp = rbuf;
+	apdu.resplen = sizeof(rbuf);
+
+	/* send composed apdu and parse result */
+	result = dnie_transmit_apdu(card, &apdu);
+	LOG_TEST_RET(ctx, result, "SM internal auth failed");
+
+	result = sc_check_sw(card, apdu.sw1, apdu.sw2);
+	LOG_TEST_RET(ctx, result, "SM internal auth invalid response");
+
+	if (apdu.resplen != sizeof(sm->sig))	/* invalid number of bytes received */
+		LOG_FUNC_RETURN(ctx, SC_ERROR_UNKNOWN_DATA_RECEIVED);
+	memcpy(sm->sig, apdu.resp, apdu.resplen);	/* copy result to buffer */
+	LOG_FUNC_RETURN(ctx, SC_SUCCESS);
+}
+
+/**
+ * Compose signature data for external auth according CWA-14890.
+ * 
+ * This code prepares data to be sent to ICC for external
+ * authentication procedure
+ *
+ * Store resulting data  into sm->sig
+ *
+ * @param card pointer to st_card_t card data information
+ * @param icc_pubkey public key of card
+ * @param ifd_privkey private RSA key of ifd
+ * @param sn_icc card serial number
+ * @param sm pointer to cwa_internal_t data
+ * @return SC_SUCCESS if ok; else errorcode
+ */
+static int cwa_prepare_external_auth(sc_card_t * card,
+				     RSA * icc_pubkey,
+				     RSA * ifd_privkey,
+				     u8 * sn_icc, cwa_sm_status_t * sm)
+{
+	/* we have to compose following message:
+	   data = E[PK.ICC.AUT](SIGMIN)
+	   SIGMIN = min ( SIG, N.IFD-SIG )
+	   SIG= DS[SK.IFD.AUT] (
+	   0x6A  || - padding according iso 9796-2
+	   PRND2 || - (74 bytes) random data to make buffer 128 bytes length
+	   Kifd  || - (32 bytes)- ifd random generated key
+	   sha1_hash(
+	   PRND2   ||  
+	   Kifd    || 
+	   RND.ICC || - (8 bytes) response to get_challenge() cmd
+	   SN.ICC  - (8 bytes) serial number from get_serialnr() cmd
+	   ) || 
+	   0xBC - iso 9796-2 padding
+	   ) - total: 128 bytes
+
+	   then, we should encrypt with our private key and then with icc pub key
+	   returning resulting data
+	 */
+	char *msg;		/* to store error messages */
+	int res = SC_SUCCESS;
+	u8 *buf1;		/* where to encrypt with icc pub key */
+	u8 *buf2;		/* where to encrypt with ifd pub key */
+	u8 *buf3;		/* where to compose message to be encrypted */
+	int len1, len2, len3;
+	u8 *sha_buf;		/* to compose message to be sha'd */
+	u8 *sha_data;		/* sha signature data */
+	BIGNUM *bn = NULL;
+	BIGNUM *bnsub = NULL;
+	BIGNUM *bnres = NULL;
+	sc_context_t *ctx = NULL;
+
+	/* safety check */
+	if (!card || !card->ctx)
+		return SC_ERROR_INVALID_ARGUMENTS;
+	ctx = card->ctx;
+	LOG_FUNC_CALLED(ctx);
+	/* check received arguments */
+	if (!icc_pubkey || !ifd_privkey || !sn_icc || !sm)
+		LOG_FUNC_RETURN(ctx, SC_ERROR_INVALID_ARGUMENTS);
+	buf1 = calloc(128, sizeof(u8));
+	buf2 = calloc(128, sizeof(u8));
+	buf3 = calloc(128, sizeof(u8));
+	sha_buf = calloc(74 + 32 + 8 + 8, sizeof(u8));
+	sha_data = calloc(SHA_DIGEST_LENGTH, sizeof(u8));
+	/* alloc() resources */
+	if (!buf1 || !buf2 || !buf3 || !sha_buf || !sha_data) {
+		msg = "prepare external auth: calloc error";
+		res = SC_ERROR_OUT_OF_MEMORY;
+		goto prepare_external_auth_end;
+	}
+
+	/* compose buffer data */
+	buf3[0] = 0x6A;		/* iso padding */
+	RAND_bytes(buf3 + 1, 74);	/* pRND */
+	RAND_bytes(sm->kifd, 32);	/* Kifd */
+	memcpy(buf3 + 1 + 74, sm->kifd, 32);	/* copy Kifd into buffer */
+	/* prepare data to be hashed */
+	memcpy(sha_buf, buf3 + 1, 74);	/* copy pRND into sha_buf */
+	memcpy(sha_buf + 74, buf3 + 1 + 74, 32);	/* copy kifd into sha_buf */
+	memcpy(sha_buf + 74 + 32, sm->rndicc, 8);	/* copy 8 byte icc challenge */
+	memcpy(sha_buf + 74 + 32 + 8, sn_icc, 8);	/* copy serialnr, 8 bytes */
+	SHA1(sha_buf, 74 + 32 + 8 + 8, sha_data);
+	/* copy hashed data into buffer */
+	memcpy(buf3 + 1 + 74 + 32, sha_data, SHA_DIGEST_LENGTH);
+	buf3[127] = 0xBC;	/* iso padding */
+
+	/* encrypt with ifd private key */
+	len2 =
+	    RSA_private_decrypt(128, buf3, buf2, ifd_privkey, RSA_NO_PADDING);
+	if (len2 < 0) {
+		msg = "Prepare external auth: ifd_privk encrypt failed";
+		res = SC_ERROR_SM_ENCRYPT_FAILED;
+		goto prepare_external_auth_end;
+	}
+
+	/* evaluate value of minsig and store into buf3 */
+	bn = BN_bin2bn(buf2, len2, NULL);
+	bnsub = BN_new();
+	if (!bn || !bnsub) {
+		msg = "Prepare external auth: BN creation failed";
+		res = SC_ERROR_INTERNAL;
+		goto prepare_external_auth_end;
+	}
+	res = BN_sub(bnsub, ifd_privkey->n, bn);	/* eval N.IFD-SIG */
+	if (res == 0) {		/* 1:success 0 fail */
+		msg = "Prepare external auth: BN sigmin evaluation failed";
+		res = SC_ERROR_INTERNAL;
+		goto prepare_external_auth_end;
+	}
+	bnres = (BN_cmp(bn, bnsub) < 0) ? bn : bnsub;	/* choose min(SIG,N.IFD-SIG) */
+	if (BN_num_bytes(bnres) > 128) {
+		msg = "Prepare external auth: BN sigmin result is too big";
+		res = SC_ERROR_INTERNAL;
+		goto prepare_external_auth_end;
+	}
+	len3 = BN_bn2bin(bnres, buf3);	/* convert result back into buf3 */
+	if (len3 <= 0) {
+		msg = "Prepare external auth: BN to buffer conversion failed";
+		res = SC_ERROR_INTERNAL;
+		goto prepare_external_auth_end;
+	}
+
+	/* re-encrypt result with icc public key */
+	len1 = RSA_public_encrypt(len3, buf3, buf1, icc_pubkey, RSA_NO_PADDING);
+	if (len1 <= 0) {
+		msg = "Prepare external auth: icc_pubk encrypt failed";
+		res = SC_ERROR_SM_ENCRYPT_FAILED;
+		goto prepare_external_auth_end;
+	}
+
+	/* process done: copy result into cwa_internal buffer and return success */
+	memcpy(sm->sig, buf1, len1);
+	res = SC_SUCCESS;
+
+ prepare_external_auth_end:
+	if (bn)
+		BN_free(bn);
+	if (bnsub)
+		BN_free(bnsub);
+	if (buf1) {
+		memset(buf1, 0, 128);
+		free(buf1);
+	}
+	if (buf2) {
+		memset(buf2, 0, 128);
+		free(buf2);
+	}
+	if (buf3) {
+		memset(buf3, 0, 128);
+		free(buf3);
+	}
+	if (sha_buf) {
+		memset(sha_buf, 0, 74 + 32 + 8 + 1 + 7);
+		free(sha_buf);
+	}
+	if (sha_data) {
+		memset(sha_data, 0, SHA_DIGEST_LENGTH);
+		free(sha_data);
+	}
+
+	if (res != SC_SUCCESS)
+		sc_log(ctx, msg);
+	LOG_FUNC_RETURN(ctx, res);
+}
+
+/**
+ * SM external authenticate.
+ *
+ * Perform external (IFD) authenticate procedure (8.4.1.2)
+ *
+ * @param data apdu signature content
+ * @param datalen signature length (128)
+ * @return SC_SUCCESS if OK: else error code
+ */
+static int cwa_external_auth(sc_card_t * card, cwa_sm_status_t * sm)
+{
+	sc_apdu_t apdu;
+	int result = SC_SUCCESS;
+	sc_context_t *ctx = NULL;
+
+	/* safety check */
+	if (!card || !card->ctx)
+		return SC_ERROR_INVALID_ARGUMENTS;
+	ctx = card->ctx;
+	LOG_FUNC_CALLED(ctx);
+
+	/* compose apdu for External Authenticate cmd */
+	sc_format_apdu(card, &apdu, SC_APDU_CASE_3_SHORT, 0x82, 0x00, 0x00);
+	apdu.data = sm->sig;
+	apdu.datalen = sizeof(sm->sig);
+	apdu.lc = sizeof(sm->sig);
+	apdu.le = 0;
+	apdu.resp = NULL;
+	apdu.resplen = 0;
+
+	/* send composed apdu and parse result */
+	result = dnie_transmit_apdu(card, &apdu);
+	LOG_TEST_RET(ctx, result, "SM external auth failed");
+	result = sc_check_sw(card, apdu.sw1, apdu.sw2);
+	LOG_TEST_RET(ctx, result, "SM external auth invalid response");
+	LOG_FUNC_RETURN(ctx, SC_SUCCESS);
+}
+
+/**
+ * SM creation of session keys.
+ *
+ * Compute Kenc,Kmac, and SSC  and store it into sm data
+ *
+ * @param card pointer to sc_card_t data
+ * @param sm pointer to cwa_internal_t data
+ * @return SC_SUCCESS if ok; else error code
+ */
+static int cwa_compute_session_keys(sc_card_t * card, cwa_sm_status_t * sm)
+{
+
+	char *msg = NULL;
+	int n = 0;
+	int res = SC_SUCCESS;
+	u8 *kseed;		/* to compose kifd ^ kicc */
+	u8 *data;		/* to compose kenc and kmac to be hashed */
+	u8 *sha_data;		/* to store hash result */
+	u8 kenc[4] = { 0x00, 0x00, 0x00, 0x01 };
+	u8 kmac[4] = { 0x00, 0x00, 0x00, 0x02 };
+	sc_context_t *ctx = NULL;
+
+	/* safety check */
+	if (!card || !card->ctx)
+		return SC_ERROR_INVALID_ARGUMENTS;
+	ctx = card->ctx;
+	LOG_FUNC_CALLED(ctx);
+	/* Just a literal transcription of cwa14890-1 sections 8.7.2 to 8.9 */
+	kseed = calloc(32, sizeof(u8));
+	data = calloc(32 + 4, sizeof(u8));
+	sha_data = calloc(SHA_DIGEST_LENGTH, sizeof(u8));
+	if (!kseed || !data || !sha_data) {
+		msg = "Compute Session Keys: calloc() failed";
+		res = SC_ERROR_OUT_OF_MEMORY;
+		goto compute_session_keys_end;
+	}
+	/* compose kseed  (cwa-14890-1 sect 8.7.2) */
+	for (n = 0; n < 32; n++)
+		*(kseed + n) = sm->kicc[n] ^ sm->kifd[n];
+
+	/* evaluate kenc (cwa-14890-1 sect 8.8) */
+	memcpy(data, kseed, 32);
+	memcpy(data + 32, kenc, 4);
+	SHA1(data, 32 + 4, sha_data);
+	memcpy(sm->session.kenc, sha_data, 16);	/* kenc=16 fsb sha((kifd^kicc)||00000001) */
+
+	/* evaluate kmac */
+	memset(data, 0, 32 + 4);
+	memset(sha_data, 0, SHA_DIGEST_LENGTH);	/* clear buffers */
+
+	memcpy(data, kseed, 32);
+	memcpy(data + 32, kmac, 4);
+	SHA1(data, 32 + 4, sha_data);
+	memcpy(sm->session.kmac, sha_data, 16);	/* kmac=16 fsb sha((kifd^kicc)||00000002) */
+
+	/* evaluate send sequence counter  (cwa-14890-1 sect 8.9 & 9.6 */
+	memcpy(sm->session.ssc, sm->rndicc + 4, 4);	/* 4 least significant bytes of rndicc */
+	memcpy(sm->session.ssc + 4, sm->rndifd + 4, 4);	/* 4 least significant bytes of rndifd */
+
+	/* arriving here means process ok */
+	res = SC_SUCCESS;
+
+ compute_session_keys_end:
+	if (kseed) {
+		memset(kseed, 0, 32);
+		free(kseed);
+	}
+	if (data) {
+		memset(data, 0, 32 + 4);
+		free(data);
+	}
+	if (sha_data) {
+		memset(sha_data, 0, SHA_DIGEST_LENGTH);
+		free(sha_data);
+	}
+	if (res != SC_SUCCESS)
+		sc_log(ctx, msg);
+	else {
+		sc_log(ctx, "Kenc: %s", sc_dump_hex(sm->session.kenc, 16));
+		sc_log(ctx, "Kmac: %s", sc_dump_hex(sm->session.kmac, 16));
+		sc_log(ctx, "SSC:  %s", sc_dump_hex(sm->session.ssc, 8));
+	}
+	LOG_FUNC_RETURN(ctx, res);
+}
+
+/*
+ * Compare signature for internal auth procedure.
+ *
+ * @param data Received data to be checked
+ * @param dlen data length
+ * @param expected results
+ * @return SC_SUCCESS or error code
+ */
+static int cwa_compare_signature(u8 * data, size_t dlen, u8 * ifd_data)
+{
+	u8 *buf = calloc(74 + 32 + 32, sizeof(u8));
+	u8 *sha = calloc(SHA_DIGEST_LENGTH, sizeof(u8));
+	int res = SC_SUCCESS;
+	if (!buf || !sha) {
+		res = SC_ERROR_OUT_OF_MEMORY;
+		goto compare_signature_end;
+	}
+	res = SC_ERROR_INVALID_DATA;
+	if (dlen != 128)
+		goto compare_signature_end;	/* check length */
+	if (data[0] != 0x6a)
+		goto compare_signature_end;	/* iso 9796-2 padding */
+	if (data[127] != 0xBC)
+		goto compare_signature_end;	/* iso 9796-2 padding */
+	memcpy(buf, data + 1, 74 + 32);
+	memcpy(buf + 74 + 32, ifd_data, 16);
+	SHA1(buf, 74 + 32 + 16, sha);
+	if (memcmp(data + 127 - SHA_DIGEST_LENGTH, sha, SHA_DIGEST_LENGTH) == 0)
+		res = SC_SUCCESS;
+ compare_signature_end:
+	if (buf)
+		free(buf);
+	if (sha)
+		free(sha);
+	return res;
+}
+
+/** 
+ * check the result of internal_authenticate operation.
+ *
+ * Checks icc received data from internal auth procedure against
+ * expected results
+ *
+ * @param card Pointer to sc_card_t data
+ * @param icc_pubkey icc public key
+ * @param ifd_privkey ifd private key
+ * @param ifdbuf buffer containing ( RND.IFD || SN.IFD )
+ * @param ifdlen buffer length; should be 16
+ * @param sm secure messaging internal data
+ * @return SC_SUCCESS if ok; else error code
+ */
+static int cwa_verify_internal_auth(sc_card_t * card,
+				    RSA * icc_pubkey,
+				    RSA * ifd_privkey,
+				    u8 * ifdbuf,
+				    size_t ifdlen, cwa_sm_status_t * sm)
+{
+	int res = SC_SUCCESS;
+	char *msg = NULL;
+	u8 *buf1 = NULL;	/* to decrypt with our private key */
+	u8 *buf2 = NULL;	/* to try SIGNUM==SIG */
+	u8 *buf3 = NULL;	/* to try SIGNUM==N.ICC-SIG */
+	int len1 = 0;
+	int len2 = 0;
+	int len3 = 0;
+	BIGNUM *bn = NULL;
+	BIGNUM *sigbn = NULL;
+	sc_context_t *ctx = NULL;
+
+	if (!card || !card->ctx)
+		return SC_ERROR_INVALID_ARGUMENTS;
+	ctx = card->ctx;
+	LOG_FUNC_CALLED(ctx);
+	if (!ifdbuf || (ifdlen != 16)) {
+		res = SC_ERROR_INVALID_ARGUMENTS;
+		msg = "Null buffers received as parameters";
+		goto verify_internal_done;
+	}
+	if (!icc_pubkey || !ifd_privkey) {
+		res = SC_ERROR_SM_NO_SESSION_KEYS;
+		msg = "Either provided icc_pubk or ifd_privk are null";
+		goto verify_internal_done;
+	}
+	buf1 = (u8 *) calloc(128, sizeof(u8));	/* 128: RSA key len in bytes */
+	buf2 = (u8 *) calloc(128, sizeof(u8));
+	buf3 = (u8 *) calloc(128, sizeof(u8));
+	if (!buf1 || !buf2 || !buf3) {
+		msg = "Verify Signature: calloc() error";
+		res = SC_ERROR_OUT_OF_MEMORY;
+		goto verify_internal_done;
+	}
+
+	/* 
+	   We have received data with this format:
+	   sigbuf = E[PK.IFD.AUT](SIGMIN)
+	   SIGMIN = min ( SIG, N.ICC-SIG )
+	   SIG= DS[SK.ICC.AUT] (
+	   0x6A  ||
+	   PRND1 ||
+	   Kicc  ||
+	   sha1_hash(PRND1 || Kicc || RND.IFD || SN.IFD) ||
+	   0xBC 
+	   )
+	   So we should reverse the process and try to get valid results
+	 */
+
+	/* decrypt data with our ifd priv key */
+	len1 =
+	    RSA_private_decrypt(sizeof(sm->sig), sm->sig, buf1, ifd_privkey,
+				RSA_NO_PADDING);
+	if (len1 <= 0) {
+		msg = "Verify Signature: decrypt with ifd privk failed";
+		res = SC_ERROR_SM_ENCRYPT_FAILED;
+		goto verify_internal_done;
+	}
+
+	/* OK: now we have SIGMIN in buf1 */
+	/* check if SIGMIN data matches SIG or N.ICC-SIG */
+	/* evaluate DS[SK.ICC.AUTH](SIG) trying to decrypt with icc pubk */
+	len3 = RSA_public_encrypt(len1, buf1, buf3, icc_pubkey, RSA_NO_PADDING);
+	if (len3 <= 0)
+		goto verify_nicc_sig;	/* evaluate N.ICC-SIG and retry */
+	res = cwa_compare_signature(buf3, len3, ifdbuf);
+	if (res == SC_SUCCESS)
+		goto verify_internal_ok;
+
+ verify_nicc_sig:
+	/* 
+	 * Arriving here means need to evaluate N.ICC-SIG 
+	 * So convert buffers to bignums to operate
+	 */
+	bn = BN_bin2bn(buf1, len1, NULL);	/* create BN data */
+	sigbn = BN_new();
+	if (!bn || !sigbn) {
+		msg = "Verify Signature: cannot bignums creation error";
+		res = SC_ERROR_OUT_OF_MEMORY;
+		goto verify_internal_done;
+	}
+	res = BN_sub(sigbn, icc_pubkey->n, bn);	/* eval N.ICC-SIG */
+	if (!res) {
+		msg = "Verify Signature: evaluation of N.ICC-SIG failed";
+		res = SC_ERROR_INTERNAL;
+		goto verify_internal_done;
+	}
+	len2 = BN_bn2bin(sigbn, buf2);	/* copy result to buffer */
+	if (len2 <= 0) {
+		msg = "Verify Signature: cannot conver bignum to buffer";
+		res = SC_ERROR_INTERNAL;
+		goto verify_internal_done;
+	}
+	/* ok: check again with new data */
+	/* evaluate DS[SK.ICC.AUTH](I.ICC-SIG) trying to decrypt with icc pubk */
+	len3 = RSA_public_encrypt(len2, buf2, buf3, icc_pubkey, RSA_NO_PADDING);
+	if (len3 <= 0) {
+		msg = "Verify Signature: cannot get valid SIG data";
+		res = SC_ERROR_INVALID_DATA;
+		goto verify_internal_done;
+	}
+	res = cwa_compare_signature(buf3, len3, ifdbuf);
+	if (res != SC_SUCCESS) {
+		msg = "Verify Signature: cannot get valid SIG data";
+		res = SC_ERROR_INVALID_DATA;
+		goto verify_internal_done;
+	}
+	/* arriving here means OK: complete data structures */
+ verify_internal_ok:
+	memcpy(sm->kicc, buf3 + 1 + 74, 32);	/* extract Kicc from buf3 */
+	res = SC_SUCCESS;
+ verify_internal_done:
+	if (buf1)
+		free(buf1);
+	if (buf2)
+		free(buf2);
+	if (buf3)
+		free(buf3);
+	if (bn)
+		BN_free(bn);
+	if (sigbn)
+		BN_free(sigbn);
+	if (res != SC_SUCCESS)
+		sc_log(ctx, msg);
+	LOG_FUNC_RETURN(ctx, res);
+}
+
+/**
+ * Create Secure Messaging channel.
+ *
+ * This is the main entry point for CWA14890 SM chanel creation.
+ * It closely follows cwa standard, with a minor modification:
+ * - ICC serial number is taken at the begining of SM creation
+ * - ICC and IFD certificate agreement process is reversed, to allow
+ * card to retain key references on further proccess (this behavior
+ * is also defined in standard)
+ *
+ * Based on Several documents:
+ * - "Understanding the DNIe"
+ * - "Manual de comandos del DNIe"
+ * - ISO7816-4 and CWA14890-{1,2}
+ *
+ * @param card card info structure
+ * @param provider cwa14890 info provider
+ * @param flag requested init method ( OFF, COLD, WARM )
+ * @return SC_SUCCESS if OK; else error code
+ */
+int cwa_create_secure_channel(sc_card_t * card,
+			      cwa_provider_t * provider, int flag)
+{
+	u8 *cert;
+	size_t certlen;
+
+	int res = SC_SUCCESS;
+	char *msg = "Success";
+
+	u8 *sn_icc;
+
+	/* data to get and parse certificates */
+	X509 *icc_cert = NULL;
+	X509 *ca_cert = NULL;
+	EVP_PKEY *icc_pubkey = NULL;
+	EVP_PKEY *ifd_privkey = NULL;
+	sc_context_t *ctx = NULL;
+	cwa_sm_status_t *sm = NULL;
+
+	/* several buffer and buffer pointers */
+	u8 *buffer;
+	size_t bufferlen;
+	u8 *tlv = NULL;		/* buffer to compose TLV messages */
+	size_t tlvlen = 0;
+	u8 *rndbuf=NULL;
+
+	/* preliminary checks */
+	if (!card || !card->ctx )
+		return SC_ERROR_INVALID_ARGUMENTS;
+	if (!provider)
+		return SC_ERROR_SM_NOT_INITIALIZED;
+	/* comodity vars */
+	ctx = card->ctx;
+	sm = &(provider->status);
+
+	LOG_FUNC_CALLED(ctx);
+
+	/* check requested initialization method */
+	switch (flag) {
+	case CWA_SM_OFF:	/* disable SM */
+		provider->status.session.state = CWA_SM_NONE;	/* just mark channel inactive */
+		sc_log(ctx, "Setting CWA SM status to none");
+		LOG_FUNC_RETURN(ctx, SC_SUCCESS);
+	case CWA_SM_WARM:	/* only initialize if not already done */
+		if (provider->status.session.state != CWA_SM_NONE) {
+			sc_log(ctx,
+			       "Warm CWA SM requested: already in SM state");
+			LOG_FUNC_RETURN(ctx, SC_SUCCESS);
+		}
+	case CWA_SM_COLD:	/* force sm initialization process */
+		sc_log(ctx, "CWA SM initialization requested");
+		break;
+	default:
+		sc_log(ctx, "Invalid provided SM initialization flag");
+		LOG_FUNC_RETURN(ctx, SC_ERROR_INVALID_ARGUMENTS);
+	}
+
+	/* OK: lets start process */
+
+	/* reset card (warm reset, do not unpower card) */
+	sc_log(ctx, "Resseting card");
+	sc_reset(card, 0);
+
+	/* mark SM status as in progress */
+	provider->status.session.state = CWA_SM_INPROGRESS;
+
+	/* call provider pre-operation method */
+	sc_log(ctx, "CreateSecureChannel pre-operations");
+	if (provider->cwa_create_pre_ops) {
+		res = provider->cwa_create_pre_ops(card, provider);
+		if (res != SC_SUCCESS) {
+			msg = "Create SM: provider pre_ops() failed";
+			sc_log(ctx, msg);
+			goto csc_end;
+		}
+	}
+
+	/* retrieve icc serial number */
+	sc_log(ctx, "Retrieve ICC serial number");
+	if (provider->cwa_get_sn_icc) {
+		res = provider->cwa_get_sn_icc(card, &sn_icc);
+		if (res != SC_SUCCESS) {
+			msg = "Retrieve ICC failed";
+			sc_log(ctx, msg);
+			goto csc_end;
+		}
+	} else {
+		msg = "Don't know how to obtain ICC serial number";
+		sc_log(ctx, msg);
+		res = SC_ERROR_INTERNAL;
+		goto csc_end;
+	}
+
+	/* 
+	 * Notice that this code inverts ICC and IFD certificate standard
+	 * checking sequence.
+	 */
+
+	/* Read Intermediate CA from card */
+	if (!provider->cwa_get_icc_intermediate_ca_cert) {
+		sc_log(ctx,
+		       "Step 8.4.1.6: Skip Retrieveing ICC intermediate CA");
+		ca_cert = NULL;
+	} else {
+		sc_log(ctx, "Step 8.4.1.7: Retrieving ICC intermediate CA");
+		res =
+		    provider->cwa_get_icc_intermediate_ca_cert(card, &ca_cert);
+		if (res != SC_SUCCESS) {
+			msg =
+			    "Cannot get ICC intermediate CA certificate from provider";
+			goto csc_end;
+		}
+	}
+
+	/* Read ICC certificate from card */
+	sc_log(ctx, "Step 8.4.1.8: Retrieve ICC certificate");
+	res = provider->cwa_get_icc_cert(card, &icc_cert);
+	if (res != SC_SUCCESS) {
+		msg = "Cannot get ICC certificate from provider";
+		goto csc_end;
+	}
+
+	/* Verify icc Card certificate chain */
+	/* Notice that Some implementations doesn't verify cert chain
+	 * but simply verifies that icc_cert is a valid certificate */
+	if (ca_cert) {
+		sc_log(ctx, "Verifying ICC certificate chain");
+		res =
+		    cwa_verify_icc_certificates(card, provider, ca_cert,
+						icc_cert);
+		if (res != SC_SUCCESS) {
+			res = SC_ERROR_SM_AUTHENTICATION_FAILED;
+			msg = "Icc Certificates verification failed";
+			goto csc_end;
+		}
+	} else {
+		sc_log(ctx, "Cannot verify Certificate chain. skip step");
+	}
+
+	/* Extract public key from ICC certificate */
+	icc_pubkey = X509_get_pubkey(icc_cert);
+
+	/* Select Root CA in card for ifd certificate verification */
+	sc_log(ctx,
+	       "Step 8.4.1.2: Select Root CA in card for IFD cert verification");
+	res = provider->cwa_get_root_ca_pubkey_ref(card, &buffer, &bufferlen);
+	if (res != SC_SUCCESS) {
+		msg = "Cannot get Root CA key reference from provider";
+		goto csc_end;
+	}
+	tlvlen = 0;
+	tlv = calloc(10 + bufferlen, sizeof(u8));
+	if (!tlv) {
+		msg = "calloc error";
+		res = SC_ERROR_OUT_OF_MEMORY;
+		goto csc_end;
+	}
+	res = cwa_compose_tlv(card, 0x83, bufferlen, buffer, &tlv, &tlvlen);
+	if (res != SC_SUCCESS) {
+		msg = "Cannot compose tlv for setting Root CA key reference";
+		goto csc_end;
+	}
+	res = cwa_set_security_env(card, 0x81, 0xB6, tlv, tlvlen);
+	if (res != SC_SUCCESS) {
+		msg = "Select Root CA key ref failed";
+		goto csc_end;
+	}
+
+	/* Send IFD intermediate CA in CVC format C_CV_CA */
+	sc_log(ctx,
+	       "Step 8.4.1.3: Send CVC IFD intermediate CA Cert for ICC verification");
+	res = provider->cwa_get_cvc_ca_cert(card, &cert, &certlen);
+	if (res != SC_SUCCESS) {
+		msg = "Get CVC CA cert from provider failed";
+		goto csc_end;
+	}
+	res = cwa_verify_cvc_certificate(card, cert, certlen);
+	if (res != SC_SUCCESS) {
+		msg = "Verify CVC CA failed";
+		goto csc_end;
+	}
+
+	/* select public key reference for sent IFD intermediate CA certificate */
+	sc_log(ctx,
+	       "Step 8.4.1.4: Select Intermediate CA pubkey ref for ICC verification");
+	res =
+	    provider->cwa_get_intermediate_ca_pubkey_ref(card, &buffer,
+							 &bufferlen);
+	if (res != SC_SUCCESS) {
+		msg = "Cannot get intermediate CA key reference from provider";
+		goto csc_end;
+	}
+	tlvlen = 0;
+	free(tlv);
+	tlv = calloc(10 + bufferlen, sizeof(u8));
+	if (!tlv) {
+		msg = "calloc error";
+		res = SC_ERROR_OUT_OF_MEMORY;
+		goto csc_end;
+	}
+	res = cwa_compose_tlv(card, 0x83, bufferlen, buffer, &tlv, &tlvlen);
+	if (res != SC_SUCCESS) {
+		msg =
+		    "Cannot compose tlv for setting intermeditate CA key reference";
+		goto csc_end;
+	}
+	res = cwa_set_security_env(card, 0x81, 0xB6, tlv, tlvlen);
+	if (res != SC_SUCCESS) {
+		msg = "Select CVC CA pubk failed";
+		goto csc_end;
+	}
+
+	/* Send IFD certiticate in CVC format C_CV_IFD */
+	sc_log(ctx,
+	       "Step 8.4.1.5: Send CVC IFD Certificate for ICC verification");
+	res = provider->cwa_get_cvc_ifd_cert(card, &cert, &certlen);
+	if (res != SC_SUCCESS) {
+		msg = "Get CVC IFD cert from provider failed";
+		goto csc_end;
+	}
+	res = cwa_verify_cvc_certificate(card, cert, certlen);
+	if (res != SC_SUCCESS) {
+		msg = "Verify CVC IFD failed";
+		goto csc_end;
+	}
+
+	/* remember that this code changes IFD and ICC Cert verification steps */
+
+	/* select public key of ifd certificate and icc private key */
+	sc_log(ctx,
+	       "Step 8.4.1.9: Send IFD pubk and ICC privk key references for Internal Auth");
+	res = provider->cwa_get_ifd_pubkey_ref(card, &buffer, &bufferlen);
+	if (res != SC_SUCCESS) {
+		msg = "Cannot get ifd public key reference from provider";
+		goto csc_end;
+	}
+	tlvlen = 0;
+	free(tlv);
+	tlv = calloc(10 + bufferlen, sizeof(u8));
+	if (!tlv) {
+		msg = "calloc error";
+		res = SC_ERROR_OUT_OF_MEMORY;
+		goto csc_end;
+	}
+	res = cwa_compose_tlv(card, 0x83, bufferlen, buffer, &tlv, &tlvlen);
+	if (res != SC_SUCCESS) {
+		msg = "Cannot compose tlv for setting ifd pubkey reference";
+		goto csc_end;
+	}
+	res = provider->cwa_get_icc_privkey_ref(card, &buffer, &bufferlen);
+	if (res != SC_SUCCESS) {
+		msg = "Cannot get icc private key reference from provider";
+		goto csc_end;
+	}
+	/* add this tlv to old one; do not call calloc */
+	res = cwa_compose_tlv(card, 0x84, bufferlen, buffer, &tlv, &tlvlen);
+	if (res != SC_SUCCESS) {
+		msg = "Cannot compose tlv for setting ifd pubkey reference";
+		goto csc_end;
+	}
+
+	res = cwa_set_security_env(card, 0xC1, 0xA4, tlv, tlvlen);
+	if (res != SC_SUCCESS) {
+		msg = "Select CVC IFD pubk failed";
+		goto csc_end;
+	}
+
+	/* Internal (Card) authentication (let the card verify sent ifd certs) 
+	   SN.IFD equals 8 lsb bytes of ifd.pubk ref according cwa14890 sec 8.4.1 */
+	sc_log(ctx, "Step 8.4.1.10: Perform Internal authentication");
+	res = provider->cwa_get_sn_ifd(card, &buffer);
+	if (res != SC_SUCCESS) {
+		msg = "Cannot get ifd serial number from provider";
+		goto csc_end;
+	}
+	rndbuf = calloc(8 /*RND.IFD */  + 8 /*SN.IFD */ , sizeof(u8));
+	if (!rndbuf) {
+		msg = "Cannot calloc for RND.IFD+SN.IFD";
+		res = SC_ERROR_OUT_OF_MEMORY;
+		goto csc_end;
+	}
+	RAND_bytes(sm->rndifd, 8);	/* generate 8 random bytes */
+	memcpy(rndbuf, sm->rndifd, 8);	/* insert RND.IFD into rndbuf */
+	memcpy(rndbuf + 8, buffer, 8);	/* insert SN.IFD into rndbuf */
+	res = cwa_internal_auth(card, sm, rndbuf, 16);
+	if (res != SC_SUCCESS) {
+		msg = "Internal auth cmd failed";
+		goto csc_end;
+	}
+
+	/* retrieve ifd private key from provider */
+	res = provider->cwa_get_ifd_privkey(card, &ifd_privkey);
+	if (res != SC_SUCCESS) {
+		msg = "Cannot retrieve IFD private key from provider";
+		res = SC_ERROR_SM_NO_SESSION_KEYS;
+		goto csc_end;
+	}
+
+	/* verify received signature */
+	sc_log(ctx, "Verify Internal Auth command response");
+	res = cwa_verify_internal_auth(card, icc_pubkey->pkey.rsa,	/* evaluated icc public key */
+				       ifd_privkey->pkey.rsa,	/* evaluated from DGP's Manual Annex 3 Data */
+				       rndbuf,	/* RND.IFD || SN.IFD */
+				       16,	/* rndbuf length; should be 16 */
+				       sm	/* sm data */
+	    );
+	if (res != SC_SUCCESS) {
+		msg = "Internal Auth Verify failed";
+		goto csc_end;
+	}
+
+	/* get challenge: retrieve 8 random bytes from card */
+	sc_log(ctx, "Step 8.4.1.11: Prepare External Auth: Get Challenge");
+	res = card->ops->get_challenge(card, sm->rndicc, sizeof(sm->rndicc));
+	if (res != SC_SUCCESS) {
+		msg = "Get Challenge failed";
+		goto csc_end;
+	}
+
+	/* compose signature data for external auth */
+	res = cwa_prepare_external_auth(card,
+					icc_pubkey->pkey.rsa,
+					ifd_privkey->pkey.rsa, sn_icc, sm);
+	if (res != SC_SUCCESS) {
+		msg = "Prepare external auth failed";
+		goto csc_end;
+	}
+
+	/* External (IFD)  authentication */
+	sc_log(ctx, "Step 8.4.1.12: Perform External (IFD) Authentication");
+	res = cwa_external_auth(card, sm);
+	if (res != SC_SUCCESS) {
+		msg = "External auth cmd failed";
+		goto csc_end;
+	}
+
+	/* Session key generation */
+	sc_log(ctx, "Step 8.4.2: Compute Session Keys");
+	res = cwa_compute_session_keys(card, sm);
+	if (res != SC_SUCCESS) {
+		msg = "Session Key generation failed";
+		goto csc_end;
+	}
+
+	/* call provider post-operation method */
+	sc_log(ctx, "CreateSecureChannel post-operations");
+	if (provider->cwa_create_post_ops) {
+		res = provider->cwa_create_post_ops(card, provider);
+		if (res != SC_SUCCESS) {
+			sc_log(ctx, "Create SM: provider post_ops() failed");
+			goto csc_end;
+		}
+	}
+
+	/* arriving here means ok: cleanup */
+	res = SC_SUCCESS;
+ csc_end:
+	if (icc_pubkey)
+		EVP_PKEY_free(icc_pubkey);
+	if (ifd_privkey)
+		EVP_PKEY_free(ifd_privkey);
+	/* setup SM state according result */
+	if (res != SC_SUCCESS) {
+		sc_log(ctx, msg);
+		provider->status.session.state = CWA_SM_NONE;
+	} else {
+		provider->status.session.state = CWA_SM_ACTIVE;
+	}
+	LOG_FUNC_RETURN(ctx, res);
+}
+
+/******************* SM internal APDU encoding / decoding functions ******/
+
+/**
+ * Encode an APDU.
+ *
+ * Calling this functions means that It's has been verified
+ * That source apdu needs encoding
+ * Based on section 9 of CWA-14890 and Sect 6 of iso7816-4 standards
+ * And DNIe's manual
+ *
+ * @param card card info structure
+ * @param sm Secure Messaging state information
+ * @param from APDU to be encoded
+ * @param to where to store encoded apdu
+ * @return SC_SUCCESS if ok; else error code
+ */
+int cwa_encode_apdu(sc_card_t * card,
+		    cwa_provider_t * provider, sc_apdu_t * from, sc_apdu_t * to)
+{
+	u8 *apdubuf;		/* to store resulting apdu */
+	size_t apdulen;
+	u8 *ccbuf;		/* where to store data to eval cryptographic checksum CC */
+	size_t cclen = 0;
+	u8 macbuf[8];		/* to store and compute CC */
+	DES_key_schedule k1;
+	DES_key_schedule k2;
+	char *msg = NULL;
+
+	size_t i, j;		/* for xor loops */
+	int res = SC_SUCCESS;
+	sc_context_t *ctx = NULL;
+	cwa_sm_session_t *sm_session = NULL;
+	u8 *msgbuf = NULL;	/* to encrypt apdu data */
+	u8 *cryptbuf = NULL;
+
+	/* reserve extra bytes for padding and tlv header */
+	msgbuf = calloc(12 + from->lc, sizeof(u8));	/* to encrypt apdu data */
+	cryptbuf = calloc(12 + from->lc, sizeof(u8));
+
+	/* mandatory check */
+	if (!card || !card->ctx || !provider)
+		return SC_ERROR_INVALID_ARGUMENTS;
+	ctx = card->ctx;
+	sm_session = &(provider->status.session);
+
+	LOG_FUNC_CALLED(ctx);
+	/* check remaining arguments */
+	if (!from || !to || !sm_session)
+		LOG_FUNC_RETURN(ctx, SC_ERROR_SM_NOT_INITIALIZED);
+	if (sm_session->state != CWA_SM_ACTIVE)
+		LOG_FUNC_RETURN(ctx, SC_ERROR_SM_INVALID_LEVEL);
+	if (!msgbuf || !cryptbuf)
+		LOG_FUNC_RETURN(ctx, SC_ERROR_OUT_OF_MEMORY);
+
+	/* check if APDU is already encoded */
+	if ((from->cla & 0x0C) != 0) {
+		memcpy(to, from, sizeof(sc_apdu_t));
+		return SC_SUCCESS;	/* already encoded */
+	}
+	if (from->ins == 0xC0) {
+		memcpy(to, from, sizeof(sc_apdu_t));
+		return SC_SUCCESS;	/* dont encode GET Response cmd */
+	}
+#if 0
+	/* For testing results according DNIe manual */
+	u8 kenc[16] =
+	    { 0x59, 0x8f, 0x26, 0xe3, 0x6e, 0x11, 0xa8, 0xec, 0x14, 0xb8, 0x1e,
+	  0x19, 0xbd, 0xa2, 0x23, 0xca };
+	u8 kmac[16] =
+	    { 0x5d, 0xe2, 0x93, 0x9a, 0x1e, 0xa0, 0x3a, 0x93, 0x0b, 0x88, 0x20,
+	  0x6d, 0x8f, 0x73, 0xe8, 0xa7 };
+	u8 ssc[8] = { 0xd3, 0x1a, 0xc8, 0xec, 0x7b, 0xa0, 0xfe, 0x74 };
+	memcpy(sm->kenc, kenc, 16);
+	memcpy(sm->kmac, kmac, 16);
+	memcpy(sm->ssc, ssc, 16);
+	from->le = 0;
+	/* para debugging end */
+#endif
+
+	/* call provider pre-operation method */
+	if (provider->cwa_encode_pre_ops) {
+		res = provider->cwa_encode_pre_ops(card, provider, from, to);
+		if (res != SC_SUCCESS) {
+			msg = "Encode APDU: provider pre_ops() failed";
+			goto encode_end;
+		}
+	}
+
+	/* trace APDU before encoding process */
+	cwa_trace_apdu(card, from, 0);
+
+	/* reserve enougth space for apdulen+tlv bytes 
+	 * to-be-crypted buffer and result apdu buffer */
+	apdubuf =
+	    calloc(MAX(SC_MAX_APDU_BUFFER_SIZE, 20 + from->datalen),
+		   sizeof(u8));
+	ccbuf =
+	    calloc(MAX(SC_MAX_APDU_BUFFER_SIZE, 20 + from->datalen),
+		   sizeof(u8));
+	if (!apdubuf || !ccbuf)
+		LOG_FUNC_RETURN(ctx, SC_ERROR_OUT_OF_MEMORY);
+
+	/* set up data on destination apdu */
+	to->cse = SC_APDU_CASE_3_SHORT;
+	to->cla = from->cla | 0x0C;	/* mark apdu as encoded */
+	to->ins = from->ins;
+	to->p1 = from->p1;
+	to->p2 = from->p2;
+	to->le = from->le;
+	to->lc = 0;		/* to be evaluated */
+	/* fill buffer with header info */
+	*(ccbuf + cclen++) = to->cla;
+	*(ccbuf + cclen++) = to->ins;
+	*(ccbuf + cclen++) = to->p1;
+	*(ccbuf + cclen++) = to->p2;
+	cwa_iso7816_padding(ccbuf, &cclen);	/* pad header (4 bytes pad) */
+
+	/* if no data, skip data encryption step */
+	if (from->lc != 0) {
+		size_t dlen = from->lc;
+
+		/* prepare keys */
+		DES_cblock iv = { 0, 0, 0, 0, 0, 0, 0, 0 };
+		DES_set_key_unchecked((const_DES_cblock *) & (sm_session->kenc[0]),
+				      &k1);
+		DES_set_key_unchecked((const_DES_cblock *) & (sm_session->kenc[8]),
+				      &k2);
+
+		/* pad message */
+		memcpy(msgbuf, from->data, dlen);
+		cwa_iso7816_padding(msgbuf, &dlen);
+
+		/* start kriptbuff with iso padding indicator */
+		*cryptbuf = 0x01;
+		/* aply TDES + CBC with kenc and iv=(0,..,0) */
+		DES_ede3_cbc_encrypt(msgbuf, cryptbuf + 1, dlen, &k1, &k2, &k1,
+				     &iv, DES_ENCRYPT);
+		/* compose data TLV and add to result buffer */
+		res =
+		    cwa_compose_tlv(card, 0x87, dlen + 1, cryptbuf, &ccbuf,
+				    &cclen);
+		if (res != SC_SUCCESS) {
+			msg = "Error in compose tag 8x87 TLV";
+			goto encode_end;
+		}
+	}
+
+	/* if le byte is declared, compose and add Le TLV */
+	/* TODO: study why original driver checks for le>=256? */
+	if (from->le > 0) {
+		u8 le = 0xff & from->le;
+		res = cwa_compose_tlv(card, 0x97, 1, &le, &ccbuf, &cclen);
+		if (res != SC_SUCCESS) {
+			msg = "Encode APDU compose_tlv(0x97) failed";
+			goto encode_end;
+		}
+	}
+	/* copy current data to apdu buffer (skip header and header padding) */
+	memcpy(apdubuf, ccbuf + 8, cclen - 8);
+	apdulen = cclen - 8;
+	/* pad again ccbuffer to compute CC */
+	cwa_iso7816_padding(ccbuf, &cclen);
+
+	/* sc_log(ctx,"data to compose mac: %s",sc_dump_hex(ccbuf,cclen)); */
+	/* compute MAC Cryptographic Checksum using kmac and increased SSC */
+	res = cwa_increase_ssc(card, sm_session); /* increase send sequence counter */
+	if (res != SC_SUCCESS) {
+		msg = "Error in computing SSC";
+		goto encode_end;
+	}
+	/* set up keys for mac computing */
+	DES_set_key_unchecked((const_DES_cblock *) & (sm_session->kmac[0]),&k1);
+	DES_set_key_unchecked((const_DES_cblock *) & (sm_session->kmac[8]),&k2);
+
+	memcpy(macbuf, sm_session->ssc, 8);	/* start with computed SSC */
+	for (i = 0; i < cclen; i += 8) {	/* divide data in 8 byte blocks */
+		/* compute DES */
+		DES_ecb_encrypt((const_DES_cblock *) macbuf,
+				(DES_cblock *) macbuf, &k1, DES_ENCRYPT);
+		/* XOR with next data and repeat */
+		for (j = 0; j < 8; j++)
+			macbuf[j] ^= ccbuf[i + j];
+	}
+	/* and apply 3DES to result */
+	DES_ecb2_encrypt((const_DES_cblock *) macbuf, (DES_cblock *) macbuf,
+			 &k1, &k2, DES_ENCRYPT);
+
+	/* compose and add computed MAC TLV to result buffer */
+	res = cwa_compose_tlv(card, 0x8E, 4, macbuf, &apdubuf, &apdulen);
+	if (res != SC_SUCCESS) {
+		msg = "Encode APDU compose_tlv(0x87) failed";
+		goto encode_end;
+	}
+
+	/* rewrite resulting header */
+	to->lc = apdulen;
+	to->data = apdubuf;
+	to->datalen = apdulen;
+
+	/* call provider post-operation method */
+	if (provider->cwa_encode_post_ops) {
+		res = provider->cwa_encode_post_ops(card, provider, from, to);
+		if (res != SC_SUCCESS) {
+			msg = "Encode APDU: provider post_ops() failed";
+			goto encode_end;
+		}
+	}
+	/* that's all folks */
+	res = SC_SUCCESS;
+
+ encode_end:
+	if (msg)
+		sc_log(ctx, msg);
+	LOG_FUNC_RETURN(ctx, res);
+}
+
+/**
+ * Decode an APDU response.
+ *
+ * Calling this functions means that It's has been verified
+ * That apdu response comes in TLV encoded format and needs decoding
+ * Based on section 9 of CWA-14890 and Sect 6 of iso7816-4 standards
+ * And DNIe's manual
+ *
+ * @param card card info structure
+ * @param sm Secure Messaging state information
+ * @param from APDU with response to be decoded
+ * @param to where to store decoded apdu
+ * @return SC_SUCCESS if ok; else error code
+ */
+int cwa_decode_response(sc_card_t * card,
+			cwa_provider_t * provider,
+			sc_apdu_t * from, sc_apdu_t * to)
+{
+	size_t i, j;
+	cwa_tlv_t tlv_array[4];
+	cwa_tlv_t *p_tlv = &tlv_array[0];	/* to store plain data (Tag 0x81) */
+	cwa_tlv_t *e_tlv = &tlv_array[1];	/* to store pad encoded data (Tag 0x87) */
+	cwa_tlv_t *m_tlv = &tlv_array[2];	/* to store mac CC (Tag 0x8E) */
+	cwa_tlv_t *s_tlv = &tlv_array[3];	/* to store sw1-sw2 status (Tag 0x99) */
+	u8 *ccbuf = NULL;	/* buffer for mac CC calculation */
+	size_t cclen = 0;	/* ccbuf len */
+	u8 macbuf[8];		/* where to calculate mac */
+	size_t resplen = 0;	/* respbuf length */
+	DES_key_schedule k1;
+	DES_key_schedule k2;
+	int res = SC_SUCCESS;
+	char *msg = NULL;	/* to store error messages */
+	sc_context_t *ctx = NULL;
+	cwa_sm_session_t *sm_session = NULL;
+
+	/* mandatory check */
+	if (!card || !card->ctx || !provider)
+		return SC_ERROR_INVALID_ARGUMENTS;
+	ctx = card->ctx;
+	sm_session = &(provider->status.session);
+
+	LOG_FUNC_CALLED(ctx);
+	/* check remaining arguments */
+	if ((from == NULL) || (to == NULL) || (sm_session == NULL))
+		LOG_FUNC_RETURN(ctx, SC_ERROR_SM_NOT_INITIALIZED);
+	if (sm_session->state != CWA_SM_ACTIVE)
+		LOG_FUNC_RETURN(ctx, SC_ERROR_SM_INVALID_LEVEL);
+
+	/* cwa14890 sect 9.3: check SW1 or SW2 for SM related errors */
+	if (from->sw1 == 0x69) {
+		if ((from->sw2 == 0x88) || (from->sw2 == 0x87)) {
+			msg = "SM related errors in APDU response";
+			res = SC_ERROR_SM_ENCRYPT_FAILED;	/* tell driver to restart SM */
+			goto response_decode_end;
+		}
+	}
+	/* if response is null/empty assume unencoded apdu */
+	if (!from->resp || (from->resplen == 0)) {
+		sc_log(ctx, "Empty APDU response: assume not cwa encoded");
+		memcpy(to, from, sizeof(sc_apdu_t));
+		return SC_SUCCESS;
+	}
+	/* checks if apdu response needs decoding by checking tags in response */
+	switch (*from->resp) {
+	case CWA_SM_PLAIN_TAG:
+	case CWA_SM_CRYPTO_TAG:
+	case CWA_SM_MAC_TAG:
+	case CWA_SM_LE_TAG:
+	case CWA_SM_STATUS_TAG:
+		break;		/* cwa tags found: continue decoding */
+	default:		/* else apdu response seems not to be cwa encoded */
+		sc_log(card->ctx, "APDU Response seems not to be cwa encoded");
+		memcpy(to, from, sizeof(sc_apdu_t));
+		return SC_SUCCESS;	/* let process continue */
+	}
+
+	/* call provider pre-operation method */
+	if (provider->cwa_decode_pre_ops) {
+		res = provider->cwa_decode_pre_ops(card, provider, from, to);
+		if (res != SC_SUCCESS) {
+			sc_log(ctx, "Decode APDU: provider pre_ops() failed");
+			LOG_FUNC_RETURN(ctx, res);
+		}
+	}
+
+	/* parse response to find TLV's data and check results */
+	memset(tlv_array, 0, 4 * sizeof(cwa_tlv_t));
+
+	res = cwa_parse_tlv(card, from->resp, from->resplen, tlv_array);
+	if (res != SC_SUCCESS) {
+		msg = "Error in TLV parsing";
+		goto response_decode_end;
+	}
+
+	/* check consistency of received TLV's */
+	if (p_tlv->buf && e_tlv->buf) {
+		msg =
+		    "Plain and Encoded data are mutually exclusive in apdu response";
+		res = SC_ERROR_INVALID_DATA;
+		goto response_decode_end;
+	}
+	if (!m_tlv->buf) {
+		msg = "No MAC TAG found in apdu response";
+		res = SC_ERROR_INVALID_DATA;
+		goto response_decode_end;
+	}
+	if (m_tlv->len != 4) {
+		msg = "Invalid MAC TAG Length";
+		res = SC_ERROR_INVALID_DATA;
+		goto response_decode_end;
+	}
+
+	/* compose buffer to evaluate mac */
+
+	/* reserve enought space for data+status+padding */
+	ccbuf =
+	    calloc(e_tlv->buflen + s_tlv->buflen + p_tlv->buflen + 8,
+		   sizeof(u8));
+	if (!ccbuf) {
+		msg = "Cannot allocate space for mac checking";
+		res = SC_ERROR_OUT_OF_MEMORY;
+		goto response_decode_end;
+	}
+	/* copy data into buffer */
+	cclen = 0;
+	if (e_tlv->buf) {	/* encoded data */
+		memcpy(ccbuf, e_tlv->buf, e_tlv->buflen);
+		cclen = e_tlv->buflen;
+	}
+	if (p_tlv->buf) {	/* plain data */
+		memcpy(ccbuf, p_tlv->buf, p_tlv->buflen);
+		cclen += p_tlv->buflen;
+	}
+	if (s_tlv->buf) {	/* response status */
+		if (s_tlv->len != 2) {
+			msg = "Invalid SW TAG length";
+			res = SC_ERROR_INVALID_DATA;
+			goto response_decode_end;
+		}
+		memcpy(ccbuf + cclen, s_tlv->buf, s_tlv->buflen);
+		cclen += s_tlv->buflen;
+		to->sw1 = s_tlv->data[0];
+		to->sw2 = s_tlv->data[1];
+	} else {		/* if no response status tag, use sw1 and sw2 from apdu */
+		to->sw1 = from->sw1;
+		to->sw2 = from->sw2;
+	}
+	/* add iso7816 padding */
+	cwa_iso7816_padding(ccbuf, &cclen);
+
+	/* evaluate mac by mean of kmac and increased SendSequence Counter SSC */
+
+	/* increase SSC */
+	res = cwa_increase_ssc(card, sm_session);	/* increase send sequence counter */
+	if (res != SC_SUCCESS) {
+		msg = "Error in computing SSC";
+		goto response_decode_end;
+	}
+	/* set up keys for mac computing */
+	DES_set_key_unchecked((const_DES_cblock *) & (sm_session->kmac[0]), &k1);
+	DES_set_key_unchecked((const_DES_cblock *) & (sm_session->kmac[8]), &k2);
+
+	memcpy(macbuf, sm_session->ssc, 8);	/* start with computed SSC */
+	for (i = 0; i < cclen; i += 8) {	/* divide data in 8 byte blocks */
+		/* compute DES */
+		DES_ecb_encrypt((const_DES_cblock *) macbuf,
+				(DES_cblock *) macbuf, &k1, DES_ENCRYPT);
+		/* XOR with data and repeat */
+		for (j = 0; j < 8; j++)
+			macbuf[j] ^= ccbuf[i + j];
+	}
+	/* finally apply 3DES to result */
+	DES_ecb2_encrypt((const_DES_cblock *) macbuf, (DES_cblock *) macbuf,
+			 &k1, &k2, DES_ENCRYPT);
+
+	/* check evaluated mac with provided by apdu response */
+
+	res = memcmp(m_tlv->data, macbuf, 4);	/* check first 4 bytes */
+	if (res != 0) {
+		msg = "Error in MAC CC checking: value doesn't match";
+		res = SC_ERROR_SM_ENCRYPT_FAILED;
+		goto response_decode_end;
+	}
+
+	/* allocate response buffer */
+	resplen = 10 + MAX(p_tlv->len, e_tlv->len);	/* estimate response buflen */
+	if (to->resp) {		/* if response apdu provides buffer, try to use it */
+		if (to->resplen < resplen) {
+			msg =
+			    "Provided buffer has not enought size to store response";
+			res = SC_ERROR_OUT_OF_MEMORY;
+			goto response_decode_end;
+		}
+	} else {		/* buffer not provided: create and assing to response apdu */
+		to->resp = calloc(resplen, sizeof(u8));
+		if (!to->resp) {
+			msg = "Cannot allocate buffer to store response";
+			res = SC_ERROR_OUT_OF_MEMORY;
+			goto response_decode_end;
+		}
+	}
+	to->resplen = resplen;
+
+	/* fill destination response apdu buffer with data */
+
+	/* if plain data, just copy TLV data into apdu response */
+	if (p_tlv->buf) {	/* plain data */
+		memcpy(to->resp, p_tlv->data, p_tlv->len);
+		to->resplen = p_tlv->len;
+	}
+
+	/* if encoded data, decode and store into apdu response */
+	else if (e_tlv->buf) {	/* encoded data */
+		DES_cblock iv = { 0, 0, 0, 0, 0, 0, 0, 0 };
+		/* check data len */
+		if ((e_tlv->len < 9) || ((e_tlv->len - 1) % 8) != 0) {
+			msg = "Invalid length for Encoded data TLV";
+			res = SC_ERROR_INVALID_DATA;
+			goto response_decode_end;
+		}
+		/* first byte is padding info; check value */
+		if (e_tlv->data[0] != 0x01) {
+			msg = "Encoded TLV: Invalid padding info value";
+			res = SC_ERROR_INVALID_DATA;
+			goto response_decode_end;
+		}
+		/* prepare keys to decode */
+		DES_set_key_unchecked((const_DES_cblock *) & (sm_session->kenc[0]),
+				      &k1);
+		DES_set_key_unchecked((const_DES_cblock *) & (sm_session->kenc[8]),
+				      &k2);
+		/* decrypt into response buffer
+		 * by using 3DES CBC by mean of kenc and iv={0,...0} */
+		DES_ede3_cbc_encrypt(&e_tlv->data[1], to->resp, e_tlv->len - 1,
+				     &k1, &k2, &k1, &iv, DES_DECRYPT);
+		to->resplen = e_tlv->len - 1;
+		/* remove iso padding from response length */
+		for (; (to->resplen > 0) && *(to->resp + to->resplen - 1) == 0x00; to->resplen--) ;	/* empty loop */
+
+		if (*(to->resp + to->resplen - 1) != 0x80) {	/* check padding byte */
+			msg =
+			    "Decrypted TLV has no 0x80 iso padding indicator!";
+			res = SC_ERROR_INVALID_DATA;
+			goto response_decode_end;
+		}
+		/* everything ok: remove ending 0x80 from response */
+		to->resplen--;
+	}
+
+	else
+		to->resplen = 0;	/* neither plain, nor encoded data */
+
+	/* call provider post-operation method */
+	if (provider->cwa_decode_post_ops) {
+		res = provider->cwa_decode_post_ops(card, provider, from, to);
+		if (res != SC_SUCCESS) {
+			sc_log(ctx, "Decode APDU: provider post_ops() failed");
+			LOG_FUNC_RETURN(ctx, res);
+		}
+	}
+
+	/* that's all folks */
+	res = SC_SUCCESS;
+
+ response_decode_end:
+	if (ccbuf)
+		free(ccbuf);
+	if (msg) {
+		sc_log(ctx, msg);
+	} else {
+		cwa_trace_apdu(card, to, 1);
+	}			/* trace apdu response */
+	LOG_FUNC_RETURN(ctx, res);
+}
+
+/********************* default provider for cwa14890 ****************/
+
+/* pre and post operations */
+
+static int default_create_pre_ops(sc_card_t * card, cwa_provider_t * provider)
+{
+	return SC_SUCCESS;
+}
+
+static int default_create_post_ops(sc_card_t * card, cwa_provider_t * provider)
+{
+	return SC_SUCCESS;
+}
+
+static int default_get_root_ca_pubkey(sc_card_t * card, EVP_PKEY ** root_ca_key)
+{
+	return SC_ERROR_NOT_SUPPORTED;
+}
+
+/* retrieve CVC intermediate CA certificate and length */
+static int default_get_cvc_ca_cert(sc_card_t * card, u8 ** cert,
+				   size_t * length)
+{
+	return SC_ERROR_NOT_SUPPORTED;
+}
+
+/* retrieve CVC IFD certificate and length */
+static int default_get_cvc_ifd_cert(sc_card_t * card, u8 ** cert,
+				    size_t * length)
+{
+	return SC_ERROR_NOT_SUPPORTED;
+}
+
+static int default_get_ifd_privkey(sc_card_t * card, EVP_PKEY ** ifd_privkey)
+{
+	return SC_ERROR_NOT_SUPPORTED;
+}
+
+/* get ICC intermediate CA  path */
+static int default_get_icc_intermediate_ca_cert(sc_card_t * card, X509 ** cert)
+{
+	return SC_ERROR_NOT_SUPPORTED;
+}
+
+/* get ICC certificate path */
+static int default_get_icc_cert(sc_card_t * card, X509 ** cert)
+{
+	return SC_ERROR_NOT_SUPPORTED;
+}
+
+/* Retrieve key reference for Root CA to validate CVC intermediate CA certs */
+static int default_get_root_ca_pubkey_ref(sc_card_t * card, u8 ** buf,
+					  size_t * len)
+{
+	return SC_ERROR_NOT_SUPPORTED;
+}
+
+/* Retrieve key reference for intermediate CA to validate IFD certs */
+static int default_get_intermediate_ca_pubkey_ref(sc_card_t * card, u8 ** buf,
+						  size_t * len)
+{
+	return SC_ERROR_NOT_SUPPORTED;
+}
+
+/* Retrieve key reference for IFD certificate */
+static int default_get_ifd_pubkey_ref(sc_card_t * card, u8 ** buf, size_t * len)
+{
+	return SC_ERROR_NOT_SUPPORTED;
+}
+
+/* Retrieve key reference for ICC privkey */
+static int default_get_icc_privkey_ref(sc_card_t * card, u8 ** buf,
+				       size_t * len)
+{
+	return SC_ERROR_NOT_SUPPORTED;
+}
+
+/* Retrieve SN.IFD (8 bytes left padded with zeroes if needed) */
+static int default_get_sn_ifd(sc_card_t * card, u8 ** buf)
+{
+	return SC_ERROR_NOT_SUPPORTED;
+}
+
+/* Retrieve SN.ICC (8 bytes left padded with zeroes if needed) */
+static int default_get_sn_icc(sc_card_t * card, u8 ** buf)
+{
+	return SC_ERROR_NOT_SUPPORTED;
+}
+
+/************** operations related with APDU encoding ******************/
+
+/* pre and post operations */
+static int default_encode_pre_ops(sc_card_t * card, cwa_provider_t * provider,
+				  sc_apdu_t * from, sc_apdu_t * to)
+{
+	return SC_SUCCESS;
+}
+
+static int default_encode_post_ops(sc_card_t * card, cwa_provider_t * provider,
+				   sc_apdu_t * from, sc_apdu_t * to)
+{
+	return SC_SUCCESS;
+}
+
+/************** operations related APDU response decoding **************/
+
+/* pre and post operations */
+static int default_decode_pre_ops(sc_card_t * card, cwa_provider_t * provider,
+				  sc_apdu_t * from, sc_apdu_t * to)
+{
+	return SC_SUCCESS;
+}
+
+static int default_decode_post_ops(sc_card_t * card, cwa_provider_t * provider,
+				   sc_apdu_t * from, sc_apdu_t * to)
+{
+	return SC_SUCCESS;
+}
+
+static cwa_provider_t default_cwa_provider = {
+
+    /************ data related with SM operations *************************/
+	{
+	 {			/* KICC */
+	  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	 {			/* KIFD */
+	  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	 {			/* RND.ICC */
+	  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	 {			/* RND.IFD */
+	  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	 {			/* SigBuf */
+	  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	 { /* sm session */
+	  CWA_SM_NONE,		/* state */
+	  {			/* Kenc */
+	   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	  {			/* Kmac */
+	   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	  {			/* SSC Send Sequence counter */
+	   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
+	  }
+	 },
+
+    /************ operations related with secure channel creation *********/
+
+	/* pre and post operations */
+	default_create_pre_ops,
+	default_create_post_ops,
+
+	/* Get ICC intermediate CA  path */
+	default_get_icc_intermediate_ca_cert,
+	/* Get ICC certificate path */
+	default_get_icc_cert,
+
+	/* Obtain RSA public key from RootCA */
+	default_get_root_ca_pubkey,
+	/* Obtain RSA IFD private key */
+	default_get_ifd_privkey,
+
+	/* Retrieve CVC intermediate CA certificate and length */
+	default_get_cvc_ca_cert,
+	/* Retrieve CVC IFD certificate and length */
+	default_get_cvc_ifd_cert,
+
+	/* Get public key references for Root CA to validate intermediate CA cert */
+	default_get_root_ca_pubkey_ref,
+
+	/* Get public key reference for IFD intermediate CA certificate */
+	default_get_intermediate_ca_pubkey_ref,
+
+	/* Get public key reference for IFD CVC certificate */
+	default_get_ifd_pubkey_ref,
+
+	/* Get ICC private key reference */
+	default_get_icc_privkey_ref,
+
+	/* Get IFD Serial Number */
+	default_get_sn_ifd,
+
+	/* Get ICC Serial Number */
+	default_get_sn_icc,
+
+    /************** operations related with APDU encoding ******************/
+
+	/* pre and post operations */
+	default_encode_pre_ops,
+	default_encode_post_ops,
+
+    /************** operations related APDU response decoding **************/
+
+	/* pre and post operations */
+	default_decode_pre_ops,
+	default_decode_post_ops,
+};
+
+/**
+ * Get a copy of default cwa provider.
+ *
+ * @param card pointer to card info structure
+ * @return copy of default provider or null on error
+ */
+cwa_provider_t *cwa_get_default_provider(sc_card_t * card)
+{
+	cwa_provider_t *res = NULL;
+	if (!card || !card->ctx)
+		return NULL;
+	LOG_FUNC_CALLED(card->ctx);
+	res = calloc(1, sizeof(cwa_provider_t));
+	if (!res) {
+		sc_log(card->ctx, "Cannot allocate space for cwa_provider");
+		return NULL;
+	}
+	memcpy(res, &default_cwa_provider, sizeof(cwa_provider_t));
+	return res;
+}
+
+/* end of cwa14890.c */
+#undef __CWA14890_C__
+
+#endif				/* ENABLE_OPENSSL */
diff --git a/src/libopensc/cwa14890.h b/src/libopensc/cwa14890.h
new file mode 100644
index 0000000..10a0e0e
--- /dev/null
+++ b/src/libopensc/cwa14890.h
@@ -0,0 +1,415 @@
+/**
+ * cwa14890.h: Defines, Typedefs and prototype functions for SM Messaging according CWA-14890 standard.
+ *
+ * Copyright (C) 2010 Juan Antonio Martinez <jonsito at terra.es>
+ *
+ * This work is derived from many sources at OpenSC Project site,
+ * (see references), and the information made public for Spanish 
+ * Direccion General de la Policia y de la Guardia Civil
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+#ifndef __CWA14890_H__
+#define __CWA14890_H__
+
+#ifdef ENABLE_OPENSSL
+
+/* Secure Messaging state indicator */
+#define CWA_SM_NONE       0x00	/** No SM channel defined */
+#define CWA_SM_INPROGRESS 0x01	/** SM channel is being created: don't use */
+#define CWA_SM_ACTIVE     0x02	/** SM channel is active */
+
+/* Flags for setting SM status */
+#define CWA_SM_OFF        0x00	/** Disable SM channel */
+#define CWA_SM_COLD       0x01	/** force creation of a new SM channel */
+#define CWA_SM_WARM       0x02	/** Create new SM channel only if state is NONE */
+
+/* TAGS for encoded APDU's */
+#define CWA_SM_PLAIN_TAG  0x81	/** Plain value (to be protected by CC) */
+#define CWA_SM_CRYPTO_TAG 0x87	/** Padding-content + cryptogram */
+#define CWA_SM_MAC_TAG    0x8E	/** Cryptographic checksum (MAC) */
+#define CWA_SM_LE_TAG     0x97	/** Le (to be protected by CC ) */
+#define CWA_SM_STATUS_TAG 0x99	/** Processing status (SW1-SW2 mac protected ) */
+
+/*************** data structures for CWA14890 SM handling **************/
+
+#include "libopensc/types.h"
+
+#include <openssl/x509.h>
+#include <openssl/des.h>
+
+/**
+ * Structure used to compose BER-TLV encoded data
+ * according to iso7816-4 sect 5.2.2.
+ *
+ * Notice that current implementation does not handle properly
+ * multibyte tag id. Just asume that tag is 1-byte lenght
+ * Also, encodings for data lenght longer than 0x01000000 bytes
+ * are not supported (tag 0x84)
+ */
+typedef struct cwa_tlv_st {
+	u8 *buf;		/** local copy of TLV byte array */
+	size_t buflen;		/** lengt of buffer */
+	unsigned int tag;	/** tag ID */
+	size_t len;		/** lenght of data field */
+	u8 *data;		/** pointer to start of data in buf buffer */
+} cwa_tlv_t;
+
+/**
+ * Structure used to handle keys and sequence counter once SM session
+ * is stablished
+ */
+typedef struct cwa_sm_session_st {
+	/* variables used once SM is started */
+	int state;	/** one of NONE, INPROGRESS, or ACTIVE */
+	u8 kenc[16];	/** key used for data encoding */
+	u8 kmac[16];	/** key for mac checksum calculation */
+	u8 ssc[8];	/** send sequence counter */
+} cwa_sm_session_t;
+
+/**
+ * Estructure used to compose and store variables related to SM setting
+ * and encode/decode apdu messages.
+ */
+typedef struct cwa_sm_status_st {
+	/* variables used in SM establishment */
+	u8 kicc[32];
+	u8 kifd[32];
+	u8 rndicc[8];	/** 8 bytes random number generated by card */
+	u8 rndifd[8];	/** 8 bytes random number generated by application */
+	u8 sig[128];	/** buffer to store & compute signatures (1024 bits) */
+	cwa_sm_session_t session; /** current session data */
+} cwa_sm_status_t;
+
+/**
+ * Data and function pointers to provide information to create and handle
+ * Secure Channel.
+ */
+typedef struct cwa_provider_st {
+    /************ data related with SM operations *************************/
+
+	cwa_sm_status_t status; /** sm status for this provider */
+
+    /************ operations related with secure channel creation *********/
+
+	/* pre and post operations */
+
+	/** 
+ 	* CWA-14890 SM stablisment pre-operations.
+	*
+	* This code is called before any operation required in
+	* standard cwa14890 SM stablisment process. It's usually
+	* used for adquiring/initialize data to be used in the
+	* process (i.e: retrieve card serial number), to make sure
+	* that no extra apdu is sent during the SM stablishment procedure
+	*
+	* @param card pointer to card driver structure
+	* @param provider pointer to SM data provider for DNIe
+	* @return SC_SUCCESS if OK. else error code
+	*/
+	int (*cwa_create_pre_ops) (sc_card_t * card,
+				   struct cwa_provider_st * provider);
+
+	/** 
+ 	* CWA-14890 SM stablisment post-operations.
+	*
+	* This code is called after sucessfull SM chanel stablishment
+	* procedure, and before returning from create_sm_chanel() function
+	* May be use for store data, trace, logs and so
+	*
+	* @param card pointer to card driver structure
+	* @param provider pointer to SM data provider for DNIe
+	* @return SC_SUCCESS if OK. else error code
+	*/
+	int (*cwa_create_post_ops) (sc_card_t * card,
+				    struct cwa_provider_st * provider);
+
+	/**
+	* Get ICC (card) intermediate CA Certificate.
+	*
+	* @param card Pointer to card driver structure
+	* @param cert where to store resulting certificate
+	* @return SC_SUCCESS if ok; else error code
+	*/
+	int (*cwa_get_icc_intermediate_ca_cert) (sc_card_t * card,
+						 X509 ** cert);
+
+	/**
+	* Get ICC (card) certificate.
+	*
+	* @param card Pointer to card driver structure
+	* @param cert where to store resulting certificate
+	* @return SC_SUCCESS if ok; else error code
+	*/
+	int (*cwa_get_icc_cert) (sc_card_t * card, X509 ** cert);
+
+	/** 
+	* Obtain RSA public key from RootCA.
+	*
+	* @param root_ca_key pointer to resulting returned key
+	* @return SC_SUCCESS if ok; else error code
+	*/
+	int (*cwa_get_root_ca_pubkey) (sc_card_t * card, EVP_PKEY ** key);
+
+	/**
+	* Get RSA IFD (Terminal) private key data.
+	* 
+	* Notice that resulting data should be keept in memory as little 
+	* as possible Erasing them once used
+	*
+	* @param card pointer to card driver structure
+	* @param ifd_privkey where to store IFD private key
+	* @return SC_SUCCESS if ok; else error code
+	*/
+	int (*cwa_get_ifd_privkey) (sc_card_t * card, EVP_PKEY ** key);
+
+	/* TODO:
+	 * CVC handling routines should be grouped in just retrieve CVC
+	 * certificate. The key reference, as stated by CWA should be
+	 * extracted from CVC...
+	 *
+	 * But to do this, an special OpenSSL with PACE extensions is
+	 * needed. In the meantime, let's use binary buffers to get
+	 * CVC and key references, until an CV_CERT hancling API 
+	 * become available in standard OpenSSL
+	 *
+	 *@see http://openpace.sourceforge.net
+	 */
+
+	/**
+ 	* Retrieve IFD (application) CVC intermediate CA certificate and length.
+	*
+	* Returns a byte array with the intermediate CA certificate
+	* (in CardVerifiable Certificate format) to be sent to the
+	* card in External Authentication process
+	*
+	* @param card Pointer to card driver Certificate
+	* @param cert Where to store resulting byte array
+	* @param length len of returned byte array
+	* @return SC_SUCCESS if ok; else error code
+	*/
+	int (*cwa_get_cvc_ca_cert) (sc_card_t * card, u8 ** cert,
+				    size_t * lenght);
+
+	/**
+	* Retrieve IFD (application) CVC certificate and length.
+	*
+	* Returns a byte array with the application's certificate
+	* (in CardVerifiable Certificate format) to be sent to the
+	* card in External Authentication process
+	*
+	* @param card Pointer to card driver Certificate
+	* @param cert Where to store resulting byte array
+	* @param length len of returned byte array
+	* @return SC_SUCCESS if ok; else error code
+	*/
+	int (*cwa_get_cvc_ifd_cert) (sc_card_t * card, u8 ** cert,
+				     size_t * lenght);
+
+	/**
+	* Retrieve public key reference for Root CA to validate CVC intermediate CA certs.
+	*
+	* This is required in the process of On card external authenticate
+	* @param card Pointer to card driver structure
+	* @param buf where to store resulting key reference
+	* @param len where to store buffer length
+	* @return SC_SUCCESS if ok; else error code
+	*/
+	int (*cwa_get_root_ca_pubkey_ref) (sc_card_t * card, u8 ** buf,
+					   size_t * len);
+
+	/**
+	* Get public key reference for intermediate CA to validate IFD cert.
+	*
+	* This is required in the process of On card external authenticate
+	*
+	* @param card Pointer to card driver structure
+	* @param buf where to store resulting key reference
+	* @param len where to store buffer length
+	* @return SC_SUCCESS if ok; else error code
+	*/
+	int (*cwa_get_intermediate_ca_pubkey_ref) (sc_card_t * card, u8 ** buf,
+						   size_t * len);
+
+	/**
+	*  Retrieve public key reference for IFD certificate.
+	*
+	* This tells the card with in memory key reference is to be used
+	* when CVC cert is sent for external auth procedure
+	*
+	* @param card pointer to card driver structure
+	* @param buf where to store data to be sent
+	* @param len where to store data length
+	* @return SC_SUCCESS if ok; else error code
+	*/
+	int (*cwa_get_ifd_pubkey_ref) (sc_card_t * card, u8 ** buf,
+				       size_t * len);
+
+	/**
+	* Retrieve key reference for ICC private key.
+	* 
+	* @param card pointer to card driver structure
+	* @param buf where to store data
+	* @param len where to store data length
+	* @return SC_SUCCESS if ok; else error
+	*/
+	int (*cwa_get_icc_privkey_ref) (sc_card_t * card, u8 ** buf,
+					size_t * len);
+
+	/**
+	* Retrieve SN.IFD - Terminal Serial Number.
+	*
+	* Result SN is 8 bytes long left padded with zeroes if required.
+	*
+	* @param card pointer to card structure
+	* @param buf where to store result (8 bytes)
+	* @return SC_SUCCESS if ok; else error
+	*/
+	int (*cwa_get_sn_ifd) (sc_card_t * card, u8 ** buf);
+
+	/**
+	*  Get SN.ICC - Card Serial Number.
+	*  
+	*  Result value is 8 bytes long left padded with zeroes if needed)
+	*
+	* @param card pointer to card structure
+	* @param buf where to store result (8 bytes)
+	* @return SC_SUCCESS if ok; else error
+	*/
+	int (*cwa_get_sn_icc) (sc_card_t * card, u8 ** buf);
+
+    /************** operations related with APDU encoding ******************/
+
+	/**
+ 	* Operation to be done before any APDU encode procedure.
+ 	*
+ 	* @param card Pointer to card driver data structure
+ 	* @param provider pointer to cwa1890 SM provider
+ 	* @param from APDU to be encoded
+ 	* @param to resulting APDU to be sent to encode procedure
+ 	* @return SC_SUCCESS if OK, else error code
+ 	*/
+	int (*cwa_encode_pre_ops) (sc_card_t * card,
+				   struct cwa_provider_st * provider,
+				   sc_apdu_t * from, sc_apdu_t * to);
+
+	/**
+ 	* Operation to be done after APDU encode process finished ok.
+ 	*
+ 	* @param card Pointer to card driver data structure
+ 	* @param provider pointer to cwa1890 SM provider
+ 	* @param from encoded APDU
+ 	* @param to resulting encoded APDU to be returned to libopensc
+ 	* @return SC_SUCCESS if OK, else error code
+ 	*/
+	int (*cwa_encode_post_ops) (sc_card_t * card,
+				    struct cwa_provider_st * provider,
+				    sc_apdu_t * from, sc_apdu_t * to);
+
+    /************** operations related APDU response decoding **************/
+
+	/**
+ 	* Operation to be done before any APDU Response decode procedure.
+ 	*
+ 	* @param card Pointer to card driver data structure
+ 	* @param provider pointer to cwa1890 SM provider
+ 	* @param from APDU Response to be decoded
+ 	* @param to resulting APDU response to be sent to decode procedure
+ 	* @return SC_SUCCESS if OK, else error code
+ 	*/
+	int (*cwa_decode_pre_ops) (sc_card_t * card,
+				   struct cwa_provider_st * provider,
+				   sc_apdu_t * from, sc_apdu_t * to);
+
+	/**
+ 	* Operation to be done after APDU Response decode process finished ok.
+ 	*
+ 	* @param card Pointer to card driver data structure
+ 	* @param provider pointer to cwa1890 SM provider
+ 	* @param from decoded APDU Response
+ 	* @param to resulting APDU Response to be returned to libopensc
+ 	* @return SC_SUCCESS if OK, else error code
+ 	*/
+	int (*cwa_decode_post_ops) (sc_card_t * card,
+				    struct cwa_provider_st * provider,
+				    sc_apdu_t * from, sc_apdu_t * to);
+} cwa_provider_t;
+
+/************************** external function prototypes ******************/
+
+/**
+ * Create Secure channel.
+ *
+ * Based on Several documents:
+ * - "Understanding the DNIe"
+ * - "Manual de comandos del DNIe"
+ * - ISO7816-4 and CWA14890-{1,2}
+ *
+ * @param card card info structure
+ * @param provider pointer to cwa provider
+ * @param flag Requested SM final state (OFF,COLD,WARM)
+ * @return SC_SUCCESS if OK; else error code
+ */
+extern int cwa_create_secure_channel(sc_card_t * card,
+				     cwa_provider_t * provider, int flag);
+
+/**
+ * Decode an APDU response.
+ *
+ * Calling this functions means that It's has been verified
+ * That apdu response comes in TLV encoded format and needs decoding
+ * Based on section 9 of CWA-14890 and Sect 6 of iso7816-4 standards
+ * And DNIe's manual
+ *
+ * @param card card info structure
+ * @param provider cwa provider data to handle SM channel
+ * @param from apdu to be decoded
+ * @param to   where to store decoded apdu
+ * @return SC_SUCCESS if ok; else error code
+ */
+extern int cwa_decode_response(sc_card_t * card,
+			       cwa_provider_t * provider,
+			       sc_apdu_t * from, sc_apdu_t * to);
+
+/**
+ * Encode an APDU.
+ *
+ * Calling this functions means that It's has been verified
+ * That source apdu needs encoding
+ * Based on section 9 of CWA-14890 and Sect 6 of iso7816-4 standards
+ * And DNIe's manual
+ *
+ * @param card card info structure
+ * @param provider cwa provider data to handle SM channel
+ * @param from apdu to be encoded
+ * @param to Where to store encoded apdu
+ * @return SC_SUCCESS if ok; else error code
+ */
+extern int cwa_encode_apdu(sc_card_t * card,
+			   cwa_provider_t * provider,
+			   sc_apdu_t * from, sc_apdu_t * to);
+
+/**
+ * Gets a default cwa_provider structure.
+ *
+ * @param card Pointer to card driver information
+ * @return default cwa_provider data, or null on error
+ */
+extern cwa_provider_t *cwa_get_default_provider(sc_card_t * card);
+
+#endif				/* ENABLE_OPENSSL */
+
+#endif
diff --git a/src/libopensc/ef-atr.c b/src/libopensc/ef-atr.c
index 1318db1..ff9d5f6 100644
--- a/src/libopensc/ef-atr.c
+++ b/src/libopensc/ef-atr.c
@@ -132,6 +132,7 @@ int sc_parse_ef_atr(struct sc_card *card)
 	struct sc_file *file;
 	int rv;
 	unsigned char *buf = NULL;
+	size_t size;
 
 	LOG_FUNC_CALLED(ctx);
 
@@ -139,13 +140,18 @@ int sc_parse_ef_atr(struct sc_card *card)
 	rv = sc_select_file(card, &path, &file);
 	LOG_TEST_RET(ctx, rv, "Cannot select EF(ATR) file");
 
-	buf = malloc(file->size);
+	if (file->size) {
+		size = file->size;
+	} else {
+		size = 1024;
+	}
+	buf = malloc(size);
 	if (!buf)
 		LOG_TEST_RET(ctx, SC_ERROR_OUT_OF_MEMORY, "Memory allocation error");
-	rv = sc_read_binary(card, 0, buf, file->size, 0);
+	rv = sc_read_binary(card, 0, buf, size, 0);
 	LOG_TEST_RET(ctx, rv, "Cannot read EF(ATR) file");
 	
-	rv = sc_parse_ef_atr_content(card, buf, file->size);
+	rv = sc_parse_ef_atr_content(card, buf, rv);
 	LOG_TEST_RET(ctx, rv, "EF(ATR) parse error");
 
 	free(buf);
diff --git a/src/libopensc/errors.c b/src/libopensc/errors.c
index 9098b35..adc55b8 100644
--- a/src/libopensc/errors.c
+++ b/src/libopensc/errors.c
@@ -120,7 +120,6 @@ const char *sc_strerror(int error)
 	};
 	const int p15i_base = -SC_ERROR_PKCS15INIT;
 
-	const int sm_base = -SC_ERROR_SM;
 	const char *sm_errors[] = {
 		"Generic Secure Messaging error",
 		"Data enciphering error",
@@ -131,9 +130,12 @@ const char *sc_strerror(int error)
 		"Cannot authenticate card",
 		"Random generation error",
 		"Secure messaging keyset not found",
-		"IFD data missing"
+		"IFD data missing",
+		"SM not applied",
+		"SM session already active",
+		"Invalid checksum"
 	};
-
+	const int sm_base = -SC_ERROR_SM;
 
 	const char *misc_errors[] = {
 		"Unknown error",
diff --git a/src/libopensc/errors.h b/src/libopensc/errors.h
index 579de68..183b075 100644
--- a/src/libopensc/errors.h
+++ b/src/libopensc/errors.h
@@ -110,18 +110,19 @@ extern "C" {
 #define SC_ERROR_FILE_TOO_SMALL			-1510
 
 /* Related to secure messaging */
-#define SC_ERROR_SM                             -1600
-#define SC_ERROR_SM_ENCRYPT_FAILED              -1601
-#define SC_ERROR_SM_INVALID_LEVEL               -1602
-#define SC_ERROR_SM_NO_SESSION_KEYS             -1603
-#define SC_ERROR_SM_INVALID_SESSION_KEY         -1604
-#define SC_ERROR_SM_NOT_INITIALIZED             -1605
-#define SC_ERROR_SM_AUTHENTICATION_FAILED       -1606
-#define SC_ERROR_SM_RAND_FAILED                 -1607
-#define SC_ERROR_SM_KEYSET_NOT_FOUND            -1608
-#define SC_ERROR_SM_IFD_DATA_MISSING            -1609
-#define SC_ERROR_SM_NOT_APPLIED                 -1610
-
+#define SC_ERROR_SM				-1600
+#define SC_ERROR_SM_ENCRYPT_FAILED		-1601
+#define SC_ERROR_SM_INVALID_LEVEL		-1602
+#define SC_ERROR_SM_NO_SESSION_KEYS		-1603
+#define SC_ERROR_SM_INVALID_SESSION_KEY		-1604
+#define SC_ERROR_SM_NOT_INITIALIZED		-1605
+#define SC_ERROR_SM_AUTHENTICATION_FAILED	-1606
+#define SC_ERROR_SM_RAND_FAILED			-1607
+#define SC_ERROR_SM_KEYSET_NOT_FOUND		-1608
+#define SC_ERROR_SM_IFD_DATA_MISSING		-1609
+#define SC_ERROR_SM_NOT_APPLIED			-1610
+#define SC_ERROR_SM_SESSION_ALREADY_ACTIVE	-1611
+#define SC_ERROR_SM_INVALID_CHECKSUM		-1612
 
 /* Errors that do not fit the categories above */
 #define SC_ERROR_UNKNOWN			-1900
diff --git a/src/libopensc/iasecc-sdo.c b/src/libopensc/iasecc-sdo.c
index 8a3e39b..ea5aa97 100644
--- a/src/libopensc/iasecc-sdo.c
+++ b/src/libopensc/iasecc-sdo.c
@@ -763,7 +763,7 @@ iasecc_sdo_allocate_and_parse(struct sc_card *card, unsigned char *data, size_t
 
 	sdo = calloc(1, sizeof(struct iasecc_sdo));
 	if (!sdo)
-		return SC_ERROR_MEMORY_FAILURE;
+		return SC_ERROR_OUT_OF_MEMORY;
 
 	sdo->sdo_class = *(data + 1) & 0x7F;
 	sdo->sdo_ref = *(data + 2) & 0x3F;
@@ -823,7 +823,7 @@ iasecc_update_blob(struct sc_context *ctx, struct iasecc_extended_tlv *tlv,
 
 	pp = realloc(*blob, *blob_size + sz);
 	if (!pp)
-		LOG_FUNC_RETURN(ctx, SC_ERROR_MEMORY_FAILURE);
+		LOG_FUNC_RETURN(ctx, SC_ERROR_OUT_OF_MEMORY);
 
 	if (tlv->tag > 0xFF)
 		*(pp + *blob_size + offs++) = (tlv->tag >> 8) & 0xFF;
diff --git a/src/libopensc/iasecc-sm.c b/src/libopensc/iasecc-sm.c
index f47ac2d..7fdffbd 100644
--- a/src/libopensc/iasecc-sm.c
+++ b/src/libopensc/iasecc-sm.c
@@ -26,16 +26,13 @@
 #include "asn1.h"
 #include "cardctl.h"
 
-#ifndef ENABLE_OPENSSL
-#error "Need OpenSSL"
-#endif
-
 #include "sm.h"
 #include "iasecc.h"
 #include "authentic.h"
 
 
 #ifdef ENABLE_SM
+
 static int
 sm_save_sc_context (struct sc_card *card, struct sm_info *sm_info)
 {
@@ -82,14 +79,12 @@ sm_restore_sc_context(struct sc_card *card, struct sm_info *sm_info)
 
 	return rv;
 }
-#endif
 
 static int
 iasecc_sm_transmit_apdus(struct sc_card *card, struct sc_remote_data *rdata,
 		unsigned char *out, size_t *out_len)
 {
 	struct sc_context *ctx = card->ctx;
-#ifdef ENABLE_SM
 	struct sc_remote_apdu *rapdu = rdata->data;
 	int rv = SC_SUCCESS, offs = 0;
 
@@ -119,10 +114,6 @@ iasecc_sm_transmit_apdus(struct sc_card *card, struct sc_remote_data *rdata,
 		*out_len = offs;
 
 	LOG_FUNC_RETURN(ctx, rv);
-#else
-	LOG_TEST_RET(ctx, SC_ERROR_NOT_SUPPORTED, "built without support of SM and External Authentication");
-	return SC_ERROR_NOT_SUPPORTED;
-#endif
 }
 
 
@@ -132,7 +123,6 @@ sm_release (struct sc_card *card, struct sc_remote_data *rdata,
 		unsigned char *out, size_t out_len)
 {
 	struct sc_context *ctx = card->ctx;
-#ifdef ENABLE_SM
 	struct sm_info *sm_info = &card->sm_ctx.info;
 	int rv;
 
@@ -144,11 +134,8 @@ sm_release (struct sc_card *card, struct sc_remote_data *rdata,
 
 	sm_restore_sc_context(card, sm_info);
 	LOG_FUNC_RETURN(ctx, rv);
-#else
-	LOG_TEST_RET(ctx, SC_ERROR_NOT_SUPPORTED, "built without support of SM and External Authentication");
-	return SC_ERROR_NOT_SUPPORTED;
-#endif
 }
+#endif
 
 
 int
@@ -221,11 +208,11 @@ iasecc_sm_external_authentication(struct sc_card *card, unsigned skey_ref, int *
 }
 
 
+#ifdef ENABLE_SM
 static int
 iasecc_sm_se_mutual_authentication(struct sc_card *card, unsigned se_num)
 {
 	struct sc_context *ctx = card->ctx;
-#ifdef ENABLE_SM
 	struct sm_info *sm_info = &card->sm_ctx.info;
 	struct iasecc_se_info se;
 	struct sc_crt *crt =  &sm_info->session.cwa.params.crt_at;
@@ -268,10 +255,6 @@ iasecc_sm_se_mutual_authentication(struct sc_card *card, unsigned se_num)
 	LOG_TEST_RET(ctx, rv, "SM set SE mutual auth.: set SE error");
 
 	LOG_FUNC_RETURN(ctx, rv);
-#else
-	LOG_TEST_RET(ctx, SC_ERROR_NOT_SUPPORTED, "built without support of Secure-Messaging");
-	return SC_ERROR_NOT_SUPPORTED;
-#endif
 }
 
 
@@ -298,6 +281,7 @@ iasecc_sm_get_challenge(struct sc_card *card, unsigned char *out, size_t len)
 
 	LOG_FUNC_RETURN(ctx, apdu.resplen);
 }
+#endif
 
 
 int
@@ -363,13 +347,13 @@ iasecc_sm_initialize(struct sc_card *card, unsigned se_num, unsigned cmd)
 }
 
 
+#ifdef ENABLE_SM
 static int
 iasecc_sm_cmd(struct sc_card *card, struct sc_remote_data *rdata)
 {
 #define AUTH_SM_APDUS_MAX 12
 #define ENCODED_APDUS_MAX_LENGTH (AUTH_SM_APDUS_MAX * (SC_MAX_APDU_BUFFER_SIZE * 2 + 64) + 32)
 	struct sc_context *ctx = card->ctx;
-#ifdef ENABLE_SM
 	struct sm_info *sm_info = &card->sm_ctx.info;
 	struct sm_cwa_session *session = &sm_info->session.cwa;
 	struct sc_remote_apdu *rapdu = NULL;
@@ -404,11 +388,8 @@ iasecc_sm_cmd(struct sc_card *card, struct sc_remote_data *rdata)
 	}
 
 	LOG_FUNC_RETURN(ctx, rv);
-#else
-	LOG_TEST_RET(ctx, SC_ERROR_NOT_SUPPORTED, "built without support of Secure-Messaging");
-	return SC_ERROR_NOT_SUPPORTED;
-#endif
 }
+#endif
 
 
 int
diff --git a/src/libopensc/iasecc.h b/src/libopensc/iasecc.h
index 59befa4..53ba14e 100644
--- a/src/libopensc/iasecc.h
+++ b/src/libopensc/iasecc.h
@@ -134,9 +134,4 @@ struct iasecc_private_data {
 
 	struct iasecc_se_info *se_info;
 };
-
-
-int sm_iasecc_rsa_generate(struct sc_card *card, unsigned security_condition, 
-		struct iasecc_sdo *sdo);
-
 #endif
diff --git a/src/libopensc/internal-winscard.h b/src/libopensc/internal-winscard.h
index 1dfd1a8..7d0b6fd 100644
--- a/src/libopensc/internal-winscard.h
+++ b/src/libopensc/internal-winscard.h
@@ -240,7 +240,13 @@ typedef struct
 	uint8_t bMsgIndex; /**< Message index (should be 00) */
 	uint8_t bTeoPrologue[3]; /**< T=1 block prologue field to use (fill with 00) */
 	uint32_t ulDataLength; /**< length of Data to be sent to the ICC */
-	uint8_t abData[1]; /**< Data to send to the ICC */
+	uint8_t abData
+#if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)
+	[] /* valid C99 code */
+#else
+	[0] /* non-standard, but usually working code */
+#endif
+	; /**< Data to send to the ICC */
 } PIN_VERIFY_STRUCTURE;
 
 /** structure used with \ref FEATURE_MODIFY_PIN_DIRECT */
@@ -273,7 +279,13 @@ typedef struct
 	uint8_t bMsgIndex3; /**< index of 3d prompting message */
 	uint8_t bTeoPrologue[3]; /**< T=1 block prologue field to use (fill with 00) */
 	uint32_t ulDataLength; /**< length of Data to be sent to the ICC */
-	uint8_t abData[1]; /**< Data to send to the ICC */
+	uint8_t abData
+#if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)
+	[] /* valid C99 code */
+#else
+	[0] /* non-standard, but usually working code */
+#endif
+	; /**< Data to send to the ICC */
 } PIN_MODIFY_STRUCTURE;
 
 /* PIN_PROPERTIES as defined (in/up to?) PC/SC 2.02.05 */
diff --git a/src/libopensc/internal.h b/src/libopensc/internal.h
index f0270be..4edad3d 100644
--- a/src/libopensc/internal.h
+++ b/src/libopensc/internal.h
@@ -127,10 +127,10 @@ int _sc_card_add_ec_alg(struct sc_card *card, unsigned int key_length,
 /*                 pkcs1 padding/encoding functions                 */
 /********************************************************************/
 
-int sc_pkcs1_strip_01_padding(const u8 *in_dat, size_t in_len, u8 *out_dat,
-			      size_t *out_len);
-int sc_pkcs1_strip_02_padding(const u8 *data, size_t len, u8 *out_dat,
-			      size_t *out_len);
+int sc_pkcs1_strip_01_padding(struct sc_context *ctx, const u8 *in_dat, size_t in_len,
+		u8 *out_dat, size_t *out_len);
+int sc_pkcs1_strip_02_padding(struct sc_context *ctx, const u8 *data, size_t len,
+		u8 *out_dat, size_t *out_len);
 int sc_pkcs1_strip_digest_info_prefix(unsigned int *algorithm,
 		const u8 *in_dat, size_t in_len, u8 *out_dat, size_t *out_len);
 
@@ -140,7 +140,7 @@ int sc_pkcs1_strip_digest_info_prefix(unsigned int *algorithm,
  * @param  flags   IN  the algorithm to use
  * @param  in      IN  input buffer
  * @param  inlen   IN  length of the input
- * @param  out     OUT output buffer (in == out is allowed) 
+ * @param  out     OUT output buffer (in == out is allowed)
  * @param  outlen  OUT length of the output buffer
  * @param  modlen  IN  length of the modulus in bytes
  * @return SC_SUCCESS on success and an error code otherwise
diff --git a/src/libopensc/iso7816.c b/src/libopensc/iso7816.c
index a0ce040..c9a1de8 100644
--- a/src/libopensc/iso7816.c
+++ b/src/libopensc/iso7816.c
@@ -30,14 +30,14 @@
 #include "iso7816.h"
 
 static const struct sc_card_error iso7816_errors[] = {
-	{ 0x6200, SC_ERROR_MEMORY_FAILURE,	"State of non-volatile memory unchanged" },
+	{ 0x6200, SC_ERROR_CARD_CMD_FAILED,	"Warning: no information given, non-volatile memory is unchanged" },
 	{ 0x6281, SC_ERROR_CORRUPTED_DATA,	"Part of returned data may be corrupted" },
 	{ 0x6282, SC_ERROR_FILE_END_REACHED,	"End of file/record reached before reading Le bytes" },
 	{ 0x6283, SC_ERROR_CARD_CMD_FAILED,	"Selected file invalidated" },
 	{ 0x6284, SC_ERROR_CARD_CMD_FAILED,	"FCI not formatted according to ISO 7816-4" },
 
-	{ 0x6300, SC_ERROR_MEMORY_FAILURE,	"State of non-volatile memory changed" },
-	{ 0x6381, SC_ERROR_CARD_CMD_FAILED,	"File filled up by last write" },
+	{ 0x6300, SC_ERROR_CARD_CMD_FAILED,	"Warning: no information given, non-volatile memory has changed" },
+	{ 0x6381, SC_ERROR_CARD_CMD_FAILED,	"Warning: file filled up by last write" },
 
 	{ 0x6581, SC_ERROR_MEMORY_FAILURE,	"Memory failure" },
 
@@ -67,57 +67,58 @@ static const struct sc_card_error iso7816_errors[] = {
 	{ 0x6A86, SC_ERROR_INCORRECT_PARAMETERS,"Incorrect parameters P1-P2" },
 	{ 0x6A87, SC_ERROR_INCORRECT_PARAMETERS,"Lc inconsistent with P1-P2" },
 	{ 0x6A88, SC_ERROR_DATA_OBJECT_NOT_FOUND,"Referenced data not found" },
+	{ 0x6A89, SC_ERROR_FILE_ALREADY_EXISTS,  "File already exists"},
+	{ 0x6A8A, SC_ERROR_FILE_ALREADY_EXISTS,  "DF name already exists"},	
 
 	{ 0x6B00, SC_ERROR_INCORRECT_PARAMETERS,"Wrong parameter(s) P1-P2" },
 	{ 0x6D00, SC_ERROR_INS_NOT_SUPPORTED,	"Instruction code not supported or invalid" },
 	{ 0x6E00, SC_ERROR_CLASS_NOT_SUPPORTED,	"Class not supported" },
 	{ 0x6F00, SC_ERROR_CARD_CMD_FAILED,	"No precise diagnosis" },
 
-	/* Possibly TCOS / Micardo specific errors */
-	{ 0x6600, SC_ERROR_INCORRECT_PARAMETERS, "Error setting the security env"},
-	{ 0x66F0, SC_ERROR_INCORRECT_PARAMETERS, "No space left for padding"},
-	{ 0x69F0, SC_ERROR_NOT_ALLOWED,          "Command not allowed"},
-	{ 0x6A89, SC_ERROR_FILE_ALREADY_EXISTS,  "Files exists"},
-	{ 0x6A8A, SC_ERROR_FILE_ALREADY_EXISTS,  "Application exists"},
+
+
 };
 
-static int iso7816_check_sw(sc_card_t *card, unsigned int sw1, unsigned int sw2)
+
+static int
+iso7816_check_sw(struct sc_card *card, unsigned int sw1, unsigned int sw2)
 {
 	const int err_count = sizeof(iso7816_errors)/sizeof(iso7816_errors[0]);
 	int i;
-	
+
 	/* Handle special cases here */
 	if (sw1 == 0x6C) {
-		sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL, "Wrong length; correct length is %d", sw2);
+		sc_log(card->ctx, "Wrong length; correct length is %d", sw2);
 		return SC_ERROR_WRONG_LENGTH;
 	}
 	if (sw1 == 0x90)
 		return SC_SUCCESS;
         if (sw1 == 0x63U && (sw2 & ~0x0fU) == 0xc0U ) {
-             sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL, "Verification failed (remaining tries: %d)",
-                   (sw2 & 0x0f));
+             sc_log(card->ctx, "Verification failed (remaining tries: %d)", (sw2 & 0x0f));
              return SC_ERROR_PIN_CODE_INCORRECT;
         }
-	for (i = 0; i < err_count; i++)
+	for (i = 0; i < err_count; i++)   {
 		if (iso7816_errors[i].SWs == ((sw1 << 8) | sw2)) {
-			sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL, "%s", iso7816_errors[i].errorstr);
+			sc_log(card->ctx, "%s", iso7816_errors[i].errorstr);
 			return iso7816_errors[i].errorno;
 		}
-	sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL, "Unknown SWs; SW1=%02X, SW2=%02X", sw1, sw2);
+	}
+
+	sc_log(card->ctx, "Unknown SWs; SW1=%02X, SW2=%02X", sw1, sw2);
 	return SC_ERROR_CARD_CMD_FAILED;
 }
 
-static int iso7816_read_binary(sc_card_t *card,
-			       unsigned int idx, u8 *buf, size_t count,
-			       unsigned long flags)
+
+static int
+iso7816_read_binary(struct sc_card *card, unsigned int idx, u8 *buf, size_t count, unsigned long flags)
 {
-	sc_context_t *ctx = card->ctx;
-	sc_apdu_t apdu;
+	struct sc_context *ctx = card->ctx;
+	struct sc_apdu apdu;
 	u8 recvbuf[SC_MAX_APDU_BUFFER_SIZE];
 	int r;
 
 	if (idx > 0x7fff) {
-		sc_debug(ctx, SC_LOG_DEBUG_NORMAL, "invalid EF offset: 0x%X > 0x7FFF", idx);
+		sc_log(ctx, "invalid EF offset: 0x%X > 0x7FFF", idx);
 		return SC_ERROR_OFFSET_TOO_LARGE;
 	}
 
@@ -128,33 +129,34 @@ static int iso7816_read_binary(sc_card_t *card,
 	apdu.resp = recvbuf;
 
 	r = sc_transmit_apdu(card, &apdu);
-	SC_TEST_RET(ctx, SC_LOG_DEBUG_NORMAL, r, "APDU transmit failed");
+	LOG_TEST_RET(ctx, r, "APDU transmit failed");
 	if (apdu.resplen == 0)
-		SC_FUNC_RETURN(ctx, SC_LOG_DEBUG_VERBOSE, sc_check_sw(card, apdu.sw1, apdu.sw2));
+		LOG_FUNC_RETURN(ctx, sc_check_sw(card, apdu.sw1, apdu.sw2));
 	memcpy(buf, recvbuf, apdu.resplen);
 
 	r =  sc_check_sw(card, apdu.sw1, apdu.sw2);
 	if (r == SC_ERROR_FILE_END_REACHED)
-		SC_FUNC_RETURN(ctx, SC_LOG_DEBUG_VERBOSE, apdu.resplen);
-	SC_TEST_RET(ctx, SC_LOG_DEBUG_NORMAL, r, "Check SW error");
+		LOG_FUNC_RETURN(ctx, apdu.resplen);
+	LOG_TEST_RET(ctx, r, "Check SW error");
 
 	if (apdu.resplen < count)   {
 		r = iso7816_read_binary(card, idx + apdu.resplen, buf + apdu.resplen, count - apdu.resplen, flags);
 		/* Ignore all but 'corrupted data' errors */
 		if (r == SC_ERROR_CORRUPTED_DATA)
-			SC_FUNC_RETURN(ctx, SC_LOG_DEBUG_NORMAL, SC_ERROR_CORRUPTED_DATA);
+			LOG_FUNC_RETURN(ctx, SC_ERROR_CORRUPTED_DATA);
 		else if (r > 0)
 			apdu.resplen += r;
 	}
 
-	SC_FUNC_RETURN(ctx, SC_LOG_DEBUG_VERBOSE, apdu.resplen);
+	LOG_FUNC_RETURN(ctx, apdu.resplen);
 }
 
-static int iso7816_read_record(sc_card_t *card,
-			       unsigned int rec_nr, u8 *buf, size_t count,
-			       unsigned long flags)
+
+static int
+iso7816_read_record(struct sc_card *card,
+		unsigned int rec_nr, u8 *buf, size_t count, unsigned long flags)
 {
-	sc_apdu_t apdu;
+	struct sc_apdu apdu;
 	u8 recvbuf[SC_MAX_APDU_BUFFER_SIZE];
 	int r;
 
@@ -162,110 +164,119 @@ static int iso7816_read_record(sc_card_t *card,
 	apdu.p2 = (flags & SC_RECORD_EF_ID_MASK) << 3;
 	if (flags & SC_RECORD_BY_REC_NR)
 		apdu.p2 |= 0x04;
-	
+
 	apdu.le = count;
 	apdu.resplen = count;
 	apdu.resp = recvbuf;
 
 	r = sc_transmit_apdu(card, &apdu);
-	SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, r, "APDU transmit failed");
+	LOG_TEST_RET(card->ctx, r, "APDU transmit failed");
 	if (apdu.resplen == 0)
-		SC_FUNC_RETURN(card->ctx, SC_LOG_DEBUG_VERBOSE, sc_check_sw(card, apdu.sw1, apdu.sw2));
+		LOG_FUNC_RETURN(card->ctx, sc_check_sw(card, apdu.sw1, apdu.sw2));
 	memcpy(buf, recvbuf, apdu.resplen);
 
-	SC_FUNC_RETURN(card->ctx, SC_LOG_DEBUG_VERBOSE, apdu.resplen);
+	LOG_FUNC_RETURN(card->ctx, apdu.resplen);
 }
 
-static int iso7816_write_record(sc_card_t *card, unsigned int rec_nr,
-			        const u8 *buf, size_t count,
-			        unsigned long flags)
+
+static int
+iso7816_write_record(struct sc_card *card, unsigned int rec_nr,
+		const u8 *buf, size_t count, unsigned long flags)
 {
-	sc_apdu_t apdu;
+	struct sc_apdu apdu;
 	int r;
 
 	if (count > 256) {
-		sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL, "Trying to send too many bytes");
+		sc_log(card->ctx, "Trying to send too many bytes");
 		return SC_ERROR_INVALID_ARGUMENTS;
 	}
+
 	sc_format_apdu(card, &apdu, SC_APDU_CASE_3_SHORT, 0xD2, rec_nr, 0);
 	apdu.p2 = (flags & SC_RECORD_EF_ID_MASK) << 3;
 	if (flags & SC_RECORD_BY_REC_NR)
 		apdu.p2 |= 0x04;
-	
+
 	apdu.lc = count;
 	apdu.datalen = count;
 	apdu.data = buf;
 
 	r = sc_transmit_apdu(card, &apdu);
-	SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, r, "APDU transmit failed");
-	SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, sc_check_sw(card, apdu.sw1, apdu.sw2),
-		    "Card returned error");
-	SC_FUNC_RETURN(card->ctx, SC_LOG_DEBUG_VERBOSE, count);
+	LOG_TEST_RET(card->ctx, r, "APDU transmit failed");
+	r = sc_check_sw(card, apdu.sw1, apdu.sw2);
+	LOG_TEST_RET(card->ctx, r, "Card returned error");
+
+	LOG_FUNC_RETURN(card->ctx, count);
 }
 
-static int iso7816_append_record(sc_card_t *card,
-				 const u8 *buf, size_t count,
-				 unsigned long flags)
+
+static int
+iso7816_append_record(struct sc_card *card,
+		const u8 *buf, size_t count, unsigned long flags)
 {
-	sc_apdu_t apdu;
+	struct sc_apdu apdu;
 	int r;
 
 	if (count > 256) {
-		sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL, "Trying to send too many bytes");
+		sc_log(card->ctx, "Trying to send too many bytes");
 		return SC_ERROR_INVALID_ARGUMENTS;
 	}
+
 	sc_format_apdu(card, &apdu, SC_APDU_CASE_3_SHORT, 0xE2, 0, 0);
 	apdu.p2 = (flags & SC_RECORD_EF_ID_MASK) << 3;
-	
+
 	apdu.lc = count;
 	apdu.datalen = count;
 	apdu.data = buf;
 
 	r = sc_transmit_apdu(card, &apdu);
-	SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, r, "APDU transmit failed");
-	SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, sc_check_sw(card, apdu.sw1, apdu.sw2),
-		    "Card returned error");
-	SC_FUNC_RETURN(card->ctx, SC_LOG_DEBUG_VERBOSE, count);
+	LOG_TEST_RET(card->ctx, r, "APDU transmit failed");
+	r = sc_check_sw(card, apdu.sw1, apdu.sw2);
+	LOG_TEST_RET(card->ctx, r, "Card returned error");
+
+	LOG_FUNC_RETURN(card->ctx, count);
 }
 
-static int iso7816_update_record(sc_card_t *card, unsigned int rec_nr,
-				 const u8 *buf, size_t count,
-				 unsigned long flags)
+
+static int
+iso7816_update_record(struct sc_card *card, unsigned int rec_nr,
+		const u8 *buf, size_t count, unsigned long flags)
 {
-	sc_apdu_t apdu;
+	struct sc_apdu apdu;
 	int r;
 
 	if (count > 256) {
-		sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL, "Trying to send too many bytes");
+		sc_log(card->ctx, "Trying to send too many bytes");
 		return SC_ERROR_INVALID_ARGUMENTS;
 	}
 	sc_format_apdu(card, &apdu, SC_APDU_CASE_3_SHORT, 0xDC, rec_nr, 0);
 	apdu.p2 = (flags & SC_RECORD_EF_ID_MASK) << 3;
 	if (flags & SC_RECORD_BY_REC_NR)
 		apdu.p2 |= 0x04;
-	
+
 	apdu.lc = count;
 	apdu.datalen = count;
 	apdu.data = buf;
 
 	r = sc_transmit_apdu(card, &apdu);
-	SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, r, "APDU transmit failed");
-	SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, sc_check_sw(card, apdu.sw1, apdu.sw2),
-		    "Card returned error");
-	SC_FUNC_RETURN(card->ctx, SC_LOG_DEBUG_VERBOSE, count);
+	LOG_TEST_RET(card->ctx, r, "APDU transmit failed");
+	r = sc_check_sw(card, apdu.sw1, apdu.sw2);
+	LOG_TEST_RET(card->ctx, r, "Card returned error");
+
+	LOG_FUNC_RETURN(card->ctx, count);
 }
 
-static int iso7816_write_binary(sc_card_t *card,
-				unsigned int idx, const u8 *buf,
-				size_t count, unsigned long flags)
+
+static int
+iso7816_write_binary(struct sc_card *card,
+		unsigned int idx, const u8 *buf, size_t count, unsigned long flags)
 {
-	sc_apdu_t apdu;
+	struct sc_apdu apdu;
 	int r;
 
 	assert(count <= (card->max_send_size > 0 ? card->max_send_size : 255));
 
 	if (idx > 0x7fff) {
-		sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL, "invalid EF offset: 0x%X > 0x7FFF", idx);
+		sc_log(card->ctx, "invalid EF offset: 0x%X > 0x7FFF", idx);
 		return SC_ERROR_OFFSET_TOO_LARGE;
 	}
 
@@ -276,37 +287,39 @@ static int iso7816_write_binary(sc_card_t *card,
 	apdu.data = buf;
 
 	r = sc_transmit_apdu(card, &apdu);
-	SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, r, "APDU transmit failed");
-	SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, sc_check_sw(card, apdu.sw1, apdu.sw2),
-		    "Card returned error");
-	SC_FUNC_RETURN(card->ctx, SC_LOG_DEBUG_VERBOSE, count);
+	LOG_TEST_RET(card->ctx, r, "APDU transmit failed");
+	r = sc_check_sw(card, apdu.sw1, apdu.sw2);
+	LOG_TEST_RET(card->ctx, r, "Card returned error");
+
+	LOG_FUNC_RETURN(card->ctx, count);
 }
 
-static int iso7816_update_binary(sc_card_t *card,
-				 unsigned int idx, const u8 *buf,
-				size_t count, unsigned long flags)
+
+static int
+iso7816_update_binary(struct sc_card *card,
+		unsigned int idx, const u8 *buf, size_t count, unsigned long flags)
 {
-	sc_apdu_t apdu;
+	struct sc_apdu apdu;
 	int r;
 
 	assert(count <= (card->max_send_size > 0 ? card->max_send_size : 255));
 
 	if (idx > 0x7fff) {
-		sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL, "invalid EF offset: 0x%X > 0x7FFF", idx);
+		sc_log(card->ctx, "invalid EF offset: 0x%X > 0x7FFF", idx);
 		return SC_ERROR_OFFSET_TOO_LARGE;
 	}
 
-	sc_format_apdu(card, &apdu, SC_APDU_CASE_3_SHORT, 0xD6,
-		       (idx >> 8) & 0x7F, idx & 0xFF);
+	sc_format_apdu(card, &apdu, SC_APDU_CASE_3_SHORT, 0xD6, (idx >> 8) & 0x7F, idx & 0xFF);
 	apdu.lc = count;
 	apdu.datalen = count;
 	apdu.data = buf;
 
 	r = sc_transmit_apdu(card, &apdu);
-	SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, r, "APDU transmit failed");
-	SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, sc_check_sw(card, apdu.sw1, apdu.sw2),
-		    "Card returned error");
-	SC_FUNC_RETURN(card->ctx, SC_LOG_DEBUG_VERBOSE, count);
+	LOG_TEST_RET(card->ctx, r, "APDU transmit failed");
+	r = sc_check_sw(card, apdu.sw1, apdu.sw2);
+	LOG_TEST_RET(card->ctx, r, "Card returned error");
+
+	LOG_FUNC_RETURN(card->ctx, count);
 }
 
 
@@ -324,21 +337,20 @@ iso7816_process_fci(struct sc_card *card, struct sc_file *file,
 		file->id = (tag[0] << 8) | tag[1];
 		sc_log(ctx, "  file identifier: 0x%02X%02X", tag[0], tag[1]);
 	}
+
 	tag = sc_asn1_find_tag(ctx, p, len, 0x80, &taglen);
+	if (tag == NULL) {
+		tag = sc_asn1_find_tag(ctx, p, len, 0x81, &taglen);
+	}
 	if (tag != NULL && taglen > 0 && taglen < 3) {
 		file->size = tag[0];
 		if (taglen == 2)
 			file->size = (file->size << 8) + tag[1];
 		sc_log(ctx, "  bytes in file: %d", file->size);
+	} else {
+		file->size = 0;
 	}
-	if (tag == NULL) {
-		tag = sc_asn1_find_tag(ctx, p, len, 0x81, &taglen);
-		if (tag != NULL && taglen >= 2) {
-			int bytes = (tag[0] << 8) + tag[1];
-			sc_log(ctx, "  bytes in file: %d", bytes);
-			file->size = bytes;
-		}
-	}
+
 	tag = sc_asn1_find_tag(ctx, p, len, 0x82, &taglen);
 	if (tag != NULL) {
 		if (taglen > 0) {
@@ -369,9 +381,11 @@ iso7816_process_fci(struct sc_card *card, struct sc_file *file,
 			sc_log(ctx, "  EF structure: %d", byte & 0x07);
 		}
 	}
+
 	tag = sc_asn1_find_tag(ctx, p, len, 0x84, &taglen);
 	if (tag != NULL && taglen > 0 && taglen <= 16) {
 		char tbuf[128];
+
 		memcpy(file->name, tag, taglen);
 		file->namelen = taglen;
 
@@ -404,8 +418,8 @@ iso7816_process_fci(struct sc_card *card, struct sc_file *file,
 		else if (tag[0] == 0x06 || tag[0] == 0x04)
 			file->status = SC_FILE_STATUS_INVALIDATED;
 	}
-	file->magic = SC_FILE_MAGIC;
 
+	file->magic = SC_FILE_MAGIC;
 	return SC_SUCCESS;
 }
 
@@ -499,7 +513,7 @@ iso7816_select_file(struct sc_card *card, const struct sc_path *in_path, struct
 	case ISO7816_TAG_FCP:
 		file = sc_file_new();
 		if (file == NULL)
-			LOG_FUNC_RETURN(ctx,SC_ERROR_OUT_OF_MEMORY);
+			LOG_FUNC_RETURN(ctx, SC_ERROR_OUT_OF_MEMORY);
 		file->path = *in_path;
 		if (card->ops->process_fci == NULL) {
 			sc_file_free(file);
@@ -514,40 +528,44 @@ iso7816_select_file(struct sc_card *card, const struct sc_path *in_path, struct
 	default:
 		LOG_FUNC_RETURN(ctx, SC_ERROR_UNKNOWN_DATA_RECEIVED);
 	}
+
 	return SC_SUCCESS;
 }
 
-static int iso7816_get_challenge(sc_card_t *card, u8 *rnd, size_t len)
+
+static int
+iso7816_get_challenge(struct sc_card *card, u8 *rnd, size_t len)
 {
 	int r;
-	sc_apdu_t apdu;
+	struct sc_apdu apdu;
 	u8 buf[10];
 
 	if (!rnd && len)
 		return SC_ERROR_INVALID_ARGUMENTS;
 
-	sc_format_apdu(card, &apdu, SC_APDU_CASE_2_SHORT,
-		       0x84, 0x00, 0x00);
+	sc_format_apdu(card, &apdu, SC_APDU_CASE_2_SHORT, 0x84, 0x00, 0x00);
 	apdu.le = 8;
 	apdu.resp = buf;
 	apdu.resplen = 8;	/* include SW's */
 
 	while (len > 0) {
 		size_t n = len > 8 ? 8 : len;
-		
+
 		r = sc_transmit_apdu(card, &apdu);
-		SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, r, "APDU transmit failed");
+		LOG_TEST_RET(card->ctx, r, "APDU transmit failed");
 		if (apdu.resplen != 8)
 			return sc_check_sw(card, apdu.sw1, apdu.sw2);
 		memcpy(rnd, apdu.resp, n);
 		len -= n;
 		rnd += n;
-	}	
+	}
 	return 0;
 }
 
-static int iso7816_construct_fci(sc_card_t *card, const sc_file_t *file,
-	u8 *out, size_t *outlen)
+
+static int
+iso7816_construct_fci(struct sc_card *card, const sc_file_t *file,
+		u8 *out, size_t *outlen)
 {
 	u8 *p = out;
 	u8 buf[64];
@@ -556,7 +574,7 @@ static int iso7816_construct_fci(sc_card_t *card, const sc_file_t *file,
 		return SC_ERROR_BUFFER_TOO_SMALL;
 	*p++ = 0x6F;
 	p++;
-	
+
 	buf[0] = (file->size >> 8) & 0xFF;
 	buf[1] = file->size & 0xFF;
 	sc_asn1_put_tag(0x81, buf, 2, p, *outlen - (p - out), &p);
@@ -604,33 +622,40 @@ static int iso7816_construct_fci(sc_card_t *card, const sc_file_t *file,
 	return 0;
 }
 
-static int iso7816_create_file(sc_card_t *card, sc_file_t *file)
+
+static int
+iso7816_create_file(struct sc_card *card, sc_file_t *file)
 {
 	int r;
 	size_t len;
 	u8 sbuf[SC_MAX_APDU_BUFFER_SIZE];
-	sc_apdu_t apdu;
+	struct sc_apdu apdu;
 
 	len = SC_MAX_APDU_BUFFER_SIZE;
 
 	if (card->ops->construct_fci == NULL)
-		SC_FUNC_RETURN(card->ctx, SC_LOG_DEBUG_VERBOSE, SC_ERROR_NOT_SUPPORTED);
+		LOG_FUNC_RETURN(card->ctx, SC_ERROR_NOT_SUPPORTED);
 	r = card->ops->construct_fci(card, file, sbuf, &len);
-	SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, r, "construct_fci() failed");
-	
+	LOG_TEST_RET(card->ctx, r, "construct_fci() failed");
+
 	sc_format_apdu(card, &apdu, SC_APDU_CASE_3_SHORT, 0xE0, 0x00, 0x00);
 	apdu.lc = len;
 	apdu.datalen = len;
 	apdu.data = sbuf;
 
 	r = sc_transmit_apdu(card, &apdu);
-	SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, r, "APDU transmit failed");
-	return sc_check_sw(card, apdu.sw1, apdu.sw2);
+	LOG_TEST_RET(card->ctx, r, "APDU transmit failed");
+	r = sc_check_sw(card, apdu.sw1, apdu.sw2);
+	LOG_TEST_RET(card->ctx, r, "Card returned error");
+
+	return r;
 }
 
-static int iso7816_get_response(sc_card_t *card, size_t *count, u8 *buf)
+
+static int
+iso7816_get_response(struct sc_card *card, size_t *count, u8 *buf)
 {
-	sc_apdu_t apdu;
+	struct sc_apdu apdu;
 	int r;
 	size_t rlen;
 
@@ -648,9 +673,9 @@ static int iso7816_get_response(sc_card_t *card, size_t *count, u8 *buf)
 	apdu.flags  |= SC_APDU_FLAGS_NO_GET_RESP;
 
 	r = sc_transmit_apdu(card, &apdu);
-	SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, r, "APDU transmit failed");
+	LOG_TEST_RET(card->ctx, r, "APDU transmit failed");
 	if (apdu.resplen == 0)
-		SC_FUNC_RETURN(card->ctx, SC_LOG_DEBUG_VERBOSE, sc_check_sw(card, apdu.sw1, apdu.sw2));
+		LOG_FUNC_RETURN(card->ctx, sc_check_sw(card, apdu.sw1, apdu.sw2));
 
 	*count = apdu.resplen;
 
@@ -666,15 +691,17 @@ static int iso7816_get_response(sc_card_t *card, size_t *count, u8 *buf)
 	return r;
 }
 
-static int iso7816_delete_file(sc_card_t *card, const sc_path_t *path)
+
+static int
+iso7816_delete_file(struct sc_card *card, const sc_path_t *path)
 {
 	int r;
 	u8 sbuf[2];
-	sc_apdu_t apdu;
+	struct sc_apdu apdu;
 
 	SC_FUNC_CALLED(card->ctx, SC_LOG_DEBUG_VERBOSE);
 	if (path->type != SC_PATH_TYPE_FILE_ID || (path->len != 0 && path->len != 2)) {
-		sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL, "File type has to be SC_PATH_TYPE_FILE_ID");
+		sc_log(card->ctx, "File type has to be SC_PATH_TYPE_FILE_ID");
 		SC_FUNC_RETURN(card->ctx, SC_LOG_DEBUG_NORMAL, SC_ERROR_INVALID_ARGUMENTS);
 	}
 
@@ -686,19 +713,25 @@ static int iso7816_delete_file(sc_card_t *card, const sc_path_t *path)
 		apdu.datalen = 2;
 		apdu.data = sbuf;
 	}
-	else /* No file ID given: means currently selected file */
+	else   {
+		/* No file ID given: means currently selected file */
 		sc_format_apdu(card, &apdu, SC_APDU_CASE_1, 0xE4, 0x00, 0x00);
-	
+	}
+
 	r = sc_transmit_apdu(card, &apdu);
-	SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, r, "APDU transmit failed");
-	return sc_check_sw(card, apdu.sw1, apdu.sw2);
+	LOG_TEST_RET(card->ctx, r, "APDU transmit failed");
+	r = sc_check_sw(card, apdu.sw1, apdu.sw2);
+	LOG_TEST_RET(card->ctx, r, "Card returned error");
+
+	return r;
 }
 
-static int iso7816_set_security_env(sc_card_t *card,
-				    const sc_security_env_t *env,
-				    int se_num)
+
+static int
+iso7816_set_security_env(struct sc_card *card,
+		const struct sc_security_env *env, int se_num)
 {
-	sc_apdu_t apdu;
+	struct sc_apdu apdu;
 	u8 sbuf[SC_MAX_APDU_BUFFER_SIZE];
 	u8 *p;
 	int r, locked = 0;
@@ -744,20 +777,18 @@ static int iso7816_set_security_env(sc_card_t *card,
 	apdu.data = sbuf;
 	if (se_num > 0) {
 		r = sc_lock(card);
-		SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, r, "sc_lock() failed");
+		LOG_TEST_RET(card->ctx, r, "sc_lock() failed");
 		locked = 1;
 	}
 	if (apdu.datalen != 0) {
 		r = sc_transmit_apdu(card, &apdu);
 		if (r) {
-			sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL,
-				"%s: APDU transmit failed", sc_strerror(r));
+			sc_log(card->ctx, "%s: APDU transmit failed", sc_strerror(r));
 			goto err;
 		}
 		r = sc_check_sw(card, apdu.sw1, apdu.sw2);
 		if (r) {
-			sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL,
-				"%s: Card returned error", sc_strerror(r));
+			sc_log(card->ctx, "%s: Card returned error", sc_strerror(r));
 			goto err;
 		}
 	}
@@ -766,7 +797,8 @@ static int iso7816_set_security_env(sc_card_t *card,
 	sc_format_apdu(card, &apdu, SC_APDU_CASE_3_SHORT, 0x22, 0xF2, se_num);
 	r = sc_transmit_apdu(card, &apdu);
 	sc_unlock(card);
-	SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, r, "APDU transmit failed");
+	LOG_TEST_RET(card->ctx, r, "APDU transmit failed");
+
 	return sc_check_sw(card, apdu.sw1, apdu.sw2);
 err:
 	if (locked)
@@ -774,37 +806,44 @@ err:
 	return r;
 }
 
-static int iso7816_restore_security_env(sc_card_t *card, int se_num)
+
+static int
+iso7816_restore_security_env(struct sc_card *card, int se_num)
 {
-	sc_apdu_t apdu;
+	struct sc_apdu apdu;
 	int r;
-	
+
 	assert(card != NULL);
 
 	sc_format_apdu(card, &apdu, SC_APDU_CASE_1, 0x22, 0xF3, se_num);
+
 	r = sc_transmit_apdu(card, &apdu);
-	SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, r, "APDU transmit failed");
-	return sc_check_sw(card, apdu.sw1, apdu.sw2);
+	LOG_TEST_RET(card->ctx, r, "APDU transmit failed");
+	r = sc_check_sw(card, apdu.sw1, apdu.sw2);
+	LOG_TEST_RET(card->ctx, r, "Card returned error");
+
+	return r;
 }
 
-static int iso7816_compute_signature(sc_card_t *card,
-				     const u8 * data, size_t datalen,
-				     u8 * out, size_t outlen)
+
+static int
+iso7816_compute_signature(struct sc_card *card,
+		const u8 * data, size_t datalen,
+		u8 * out, size_t outlen)
 {
 	int r;
-	sc_apdu_t apdu;
+	struct sc_apdu apdu;
 	u8 rbuf[SC_MAX_APDU_BUFFER_SIZE];
 	u8 sbuf[SC_MAX_APDU_BUFFER_SIZE];
 
 	assert(card != NULL && data != NULL && out != NULL);
 	if (datalen > 255)
-		SC_FUNC_RETURN(card->ctx, SC_LOG_DEBUG_VERBOSE, SC_ERROR_INVALID_ARGUMENTS);
+		LOG_FUNC_RETURN(card->ctx, SC_ERROR_INVALID_ARGUMENTS);
 
 	/* INS: 0x2A  PERFORM SECURITY OPERATION
 	 * P1:  0x9E  Resp: Digital Signature
 	 * P2:  0x9A  Cmd: Input for Digital Signature */
-	sc_format_apdu(card, &apdu, SC_APDU_CASE_4_SHORT, 0x2A, 0x9E,
-		       0x9A);
+	sc_format_apdu(card, &apdu, SC_APDU_CASE_4_SHORT, 0x2A, 0x9E, 0x9A);
 	apdu.resp = rbuf;
 	apdu.resplen = sizeof(rbuf); /* FIXME */
 	apdu.le = 256;
@@ -814,22 +853,28 @@ static int iso7816_compute_signature(sc_card_t *card,
 	apdu.lc = datalen;
 	apdu.datalen = datalen;
 	r = sc_transmit_apdu(card, &apdu);
-	SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, r, "APDU transmit failed");
+	LOG_TEST_RET(card->ctx, r, "APDU transmit failed");
 	if (apdu.sw1 == 0x90 && apdu.sw2 == 0x00) {
 		size_t len = apdu.resplen > outlen ? outlen : apdu.resplen;
 
 		memcpy(out, apdu.resp, len);
-		SC_FUNC_RETURN(card->ctx, SC_LOG_DEBUG_VERBOSE, len);
+		LOG_FUNC_RETURN(card->ctx, len);
 	}
-	SC_FUNC_RETURN(card->ctx, SC_LOG_DEBUG_VERBOSE, sc_check_sw(card, apdu.sw1, apdu.sw2));
+
+	r = sc_check_sw(card, apdu.sw1, apdu.sw2);
+	LOG_TEST_RET(card->ctx, r, "Card returned error");
+
+	LOG_FUNC_RETURN(card->ctx, r);
 }
 
-static int iso7816_decipher(sc_card_t *card,
-			    const u8 * crgram, size_t crgram_len,
-			    u8 * out, size_t outlen)
+
+static int
+iso7816_decipher(struct sc_card *card,
+		const u8 * crgram, size_t crgram_len,
+		u8 * out, size_t outlen)
 {
 	int       r;
-	sc_apdu_t apdu;
+	struct sc_apdu apdu;
 	u8        *sbuf = NULL;
 
 	assert(card != NULL && crgram != NULL && out != NULL);
@@ -852,7 +897,7 @@ static int iso7816_decipher(sc_card_t *card,
 	/* Use APDU chaining with 2048bit RSA keys if the card does not do extended APDU-s */
 	if ((crgram_len+1 > 255) && !(card->caps & SC_CARD_CAP_APDU_EXT))
 		apdu.flags |= SC_APDU_FLAGS_CHAINING;
-	
+
 	sbuf[0] = 0; /* padding indicator byte, 0x00 = No further indication */
 	memcpy(sbuf + 1, crgram, crgram_len);
 	apdu.data = sbuf;
@@ -861,18 +906,21 @@ static int iso7816_decipher(sc_card_t *card,
 	r = sc_transmit_apdu(card, &apdu);
 	sc_mem_clear(sbuf, crgram_len + 1);
 	free(sbuf);
-	SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, r, "APDU transmit failed");
+	LOG_TEST_RET(card->ctx, r, "APDU transmit failed");
+
 	if (apdu.sw1 == 0x90 && apdu.sw2 == 0x00)
-		SC_FUNC_RETURN(card->ctx, SC_LOG_DEBUG_VERBOSE, apdu.resplen);
+		LOG_FUNC_RETURN(card->ctx, apdu.resplen);
 	else
-		SC_FUNC_RETURN(card->ctx, SC_LOG_DEBUG_VERBOSE, sc_check_sw(card, apdu.sw1, apdu.sw2));
+		LOG_FUNC_RETURN(card->ctx, sc_check_sw(card, apdu.sw1, apdu.sw2));
 }
 
-static int iso7816_build_pin_apdu(sc_card_t *card, sc_apdu_t *apdu,
+
+static int
+iso7816_build_pin_apdu(struct sc_card *card, struct sc_apdu *apdu,
 		struct sc_pin_cmd_data *data, u8 *buf, size_t buf_len)
 {
 	int r, len = 0, pad = 0, use_pin_pad = 0, ins, p1 = 0;
-	
+
 	switch (data->pin_type) {
 	case SC_AC_CHV:
 		break;
@@ -900,7 +948,8 @@ static int iso7816_build_pin_apdu(sc_card_t *card, sc_apdu_t *apdu,
 			if ((r = sc_build_pin(buf, buf_len, &data->pin1, pad)) < 0)
 				return r;
 			len += r;
-		} else {
+		}
+		else {
 			/* implicit test */
 			p1 = 1;
 		}
@@ -908,6 +957,14 @@ static int iso7816_build_pin_apdu(sc_card_t *card, sc_apdu_t *apdu,
 		data->pin2.offset = data->pin1.offset + len;
 		if ((r = sc_build_pin(buf+len, buf_len-len, &data->pin2, pad)) < 0)
 			return r;
+		/* Special case - where provided the old PIN on the command line
+		 * but expect the new one to be entered on the keypad.
+		 */
+		if (data->pin1.len && data->pin2.len == 0) {
+			sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL,
+				"Special case - initial pin provided - but new pin asked on keypad");
+			data->flags |= SC_PIN_CMD_IMPLICIT_CHANGE;
+		};
 		len += r;
 		break;
 	case SC_PIN_CMD_UNBLOCK:
@@ -933,9 +990,7 @@ static int iso7816_build_pin_apdu(sc_card_t *card, sc_apdu_t *apdu,
 		return SC_ERROR_NOT_SUPPORTED;
 	}
 
-	sc_format_apdu(card, apdu, SC_APDU_CASE_3_SHORT,
-				ins, p1, data->pin_reference);
-
+	sc_format_apdu(card, apdu, SC_APDU_CASE_3_SHORT, ins, p1, data->pin_reference);
 	apdu->lc = len;
 	apdu->datalen = len;
 	apdu->data = buf;
@@ -944,10 +999,11 @@ static int iso7816_build_pin_apdu(sc_card_t *card, sc_apdu_t *apdu,
 	return 0;
 }
 
-static int iso7816_pin_cmd(sc_card_t *card, struct sc_pin_cmd_data *data,
-			   int *tries_left)
+
+static int
+iso7816_pin_cmd(struct sc_card *card, struct sc_pin_cmd_data *data, int *tries_left)
 {
-	sc_apdu_t local_apdu, *apdu;
+	struct sc_apdu local_apdu, *apdu;
 	int r;
 	u8  sbuf[SC_MAX_APDU_BUFFER_SIZE];
 
@@ -973,23 +1029,21 @@ static int iso7816_pin_cmd(sc_card_t *card, struct sc_pin_cmd_data *data,
 
 		/* Clear the buffer - it may contain pins */
 		sc_mem_clear(sbuf, sizeof(sbuf));
-	} else {
+	}
+	else {
 		/* Call the reader driver to collect
 		 * the PIN and pass on the APDU to the card */
 		if (data->pin1.offset == 0) {
-			sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL,
-				"Card driver didn't set PIN offset");
+			sc_log(card->ctx, "Card driver didn't set PIN offset");
 			return SC_ERROR_INVALID_ARGUMENTS;
 		}
-		if (card->reader
-		 && card->reader->ops
-		 && card->reader->ops->perform_verify) {
+		if (card->reader && card->reader->ops && card->reader->ops->perform_verify) {
 			r = card->reader->ops->perform_verify(card->reader, data);
 			/* sw1/sw2 filled in by reader driver */
-		} else {
-			sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL,
-				"Card reader driver does not support "
-				"PIN entry through reader key pad");
+		}
+		else {
+			sc_log(card->ctx, "Card reader driver does not support "
+					"PIN entry through reader key pad");
 			r = SC_ERROR_NOT_SUPPORTED;
 		}
 	}
@@ -998,7 +1052,7 @@ static int iso7816_pin_cmd(sc_card_t *card, struct sc_pin_cmd_data *data,
 	if (data->apdu == &local_apdu)
 		data->apdu = NULL;
 
-	SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, r, "APDU transmit failed");
+	LOG_TEST_RET(card->ctx, r, "APDU transmit failed");
 	if (apdu->sw1 == 0x63) {
 		if ((apdu->sw2 & 0xF0) == 0xC0 && tries_left != NULL)
 			*tries_left = apdu->sw2 & 0x0F;
@@ -1007,14 +1061,26 @@ static int iso7816_pin_cmd(sc_card_t *card, struct sc_pin_cmd_data *data,
 	return sc_check_sw(card, apdu->sw1, apdu->sw2);
 }
 
-static int no_match(sc_card_t *card)
+
+static int
+iso7816_init(struct sc_card *card)
+{
+#if ENABLE_SM
+	memset(&card->sm_ctx, 0, sizeof card->sm_ctx);
+#endif
+	return SC_SUCCESS;
+}
+
+
+static int
+no_match(struct sc_card *card)
 {
 	return 0;
 }
 
 static struct sc_card_operations iso_ops = {
 	no_match,
-	NULL,			/* init   */
+	iso7816_init,	/* init   */
 	NULL,			/* finish */
 	iso7816_read_binary,
 	iso7816_write_binary,
diff --git a/src/libopensc/iso7816.h b/src/libopensc/iso7816.h
index 839da42..6b6f9cc 100644
--- a/src/libopensc/iso7816.h
+++ b/src/libopensc/iso7816.h
@@ -12,15 +12,19 @@ extern "C" {
 #define ISO7816_FILE_TYPE_TRANSPARENT_EF	0x01
 #define ISO7816_FILE_TYPE_DF			0x38
 
-#define ISO7816_TAG_FCI		0x6F
-
-#define ISO7816_TAG_FCP		0x62
-#define ISO7816_TAG_FCP_SIZE	0x80
-#define ISO7816_TAG_FCP_TYPE	0x82
-#define ISO7816_TAG_FCP_ID	0x83
-#define ISO7816_TAG_FCP_ACLS	0x86
-
-/* ISO7816 interindustry data tags */	
+#define ISO7816_TAG_FCI			0x6F
+
+#define ISO7816_TAG_FCP			0x62
+#define ISO7816_TAG_FCP_SIZE		0x80
+#define ISO7816_TAG_FCP_SIZE_FULL	0x81
+#define ISO7816_TAG_FCP_TYPE		0x82
+#define ISO7816_TAG_FCP_FID		0x83
+#define ISO7816_TAG_FCP_DF_NAME		0x84
+#define ISO7816_TAG_FCP_PROP_INFO	0x85
+#define ISO7816_TAG_FCP_ACLS		0x86
+#define ISO7816_TAG_FCP_LCS		0x8A
+
+/* ISO7816 interindustry data tags */
 #define ISO7816_II_CATEGORY_TLV		0x80
 #define ISO7816_II_CATEGORY_NOT_TLV	0x00
 
diff --git a/src/libopensc/libopensc.exports b/src/libopensc/libopensc.exports
index fe11801..c23bd38 100644
--- a/src/libopensc/libopensc.exports
+++ b/src/libopensc/libopensc.exports
@@ -97,6 +97,7 @@ sc_file_new
 sc_file_set_prop_attr
 sc_file_set_sec_attr
 sc_file_set_type_attr
+sc_file_set_content
 sc_file_valid
 sc_format_apdu
 sc_bytes2apdu
@@ -123,6 +124,7 @@ sc_logout
 sc_make_cache_dir
 sc_mem_clear
 sc_mem_reverse
+sc_match_atr_block
 sc_path_print
 sc_path_set
 sc_pin_cmd
@@ -163,6 +165,7 @@ sc_pkcs15_encode_pubkey_dsa
 sc_pkcs15_encode_pubkey_rsa
 sc_pkcs15_encode_pubkey_ec
 sc_pkcs15_encode_pubkey_gostr3410
+sc_pkcs15_encode_pubkey_as_spki
 sc_pkcs15_encode_pukdf_entry
 sc_pkcs15_encode_tokeninfo
 sc_pkcs15_encode_unusedspace
@@ -195,11 +198,12 @@ sc_pkcs15_free_prkey_info
 sc_pkcs15_free_pubkey
 sc_pkcs15_free_pubkey_info
 sc_pkcs15_get_application_by_type
-sc_pkcs15_get_guid
+sc_pkcs15_get_object_guid
 sc_pkcs15_get_object_id
 sc_pkcs15_get_objects
 sc_pkcs15_get_objects_cond
 sc_pkcs15_get_lastupdate
+sc_pkcs15_serialize_guid
 sc_pkcs15_hex_string_to_id
 sc_pkcs15_is_emulation_only
 sc_pkcs15_make_absolute_path
@@ -300,13 +304,16 @@ sc_pkcs15init_verify_secret
 sc_pkcs15init_sanity_check
 sc_pkcs15init_finalize_profile
 sc_card_find_rsa_alg
+sc_check_apdu
 sc_print_cache
 sc_find_app
 sc_remote_data_init
 sc_crc32
 sc_pkcs15_convert_prkey
 sc_pkcs15_convert_pubkey
-iasecc_sdo_encode_update_field
+sc_sm_parse_answer
+sc_sm_update_apdu_response
+sc_sm_single_transmit
 iasecc_sm_create_file
 iasecc_sm_delete_file
 iasecc_sm_external_authentication
@@ -317,3 +324,4 @@ iasecc_sm_rsa_generate
 iasecc_sm_rsa_update
 iasecc_sm_update_binary
 iasecc_sm_sdo_update
+iasecc_sdo_encode_update_field
diff --git a/src/libopensc/log.c b/src/libopensc/log.c
index fbb0294..70b6782 100644
--- a/src/libopensc/log.c
+++ b/src/libopensc/log.c
@@ -60,7 +60,7 @@ void sc_do_log_noframe(sc_context_t *ctx, int level, const char *format, va_list
 
 static void sc_do_log_va(sc_context_t *ctx, int level, const char *file, int line, const char *func, const char *format, va_list args)
 {
-	char	buf[1836], *p;
+	char	buf[4096], *p;
 	int	r;
 	size_t	left;
 #ifdef _WIN32
@@ -113,8 +113,11 @@ static void sc_do_log_va(sc_context_t *ctx, int level, const char *file, int lin
 		return;
 
 #ifdef _WIN32
-	if (ctx->debug_filename)
-		sc_ctx_log_to_file(ctx, ctx->debug_filename);
+	if (ctx->debug_filename)   {
+		r = sc_ctx_log_to_file(ctx, ctx->debug_filename);
+		if (r < 0)
+			return;
+	}
 #endif
 
 	outf = ctx->debug_file;
@@ -129,8 +132,10 @@ static void sc_do_log_va(sc_context_t *ctx, int level, const char *file, int lin
 
 #ifdef _WIN32
 	if (ctx->debug_filename)   {
-		fclose(ctx->debug_file);
-		ctx->debug_file = NULL;
+		if (ctx->debug_file && (ctx->debug_file != stderr && ctx->debug_file != stdout))   {
+			fclose(ctx->debug_file);
+			ctx->debug_file = NULL;
+		}
 	}
 #endif
 
@@ -167,7 +172,7 @@ void sc_hex_dump(struct sc_context *ctx, int level, const u8 * in, size_t count,
 	if (ctx->debug < level)
 		return;
 
-	assert(buf != NULL && in != NULL);
+	assert(buf != NULL && (in != NULL || count == 0));
 	buf[0] = 0;
 	if ((count * 5) > len)
 		return;
@@ -203,29 +208,30 @@ sc_dump_hex(const u8 * in, size_t count)
 {
 	static char dump_buf[0x1000];
 	size_t ii, size = sizeof(dump_buf) - 0x10;
-    	size_t offs = 0;
+	size_t offs = 0;
 
 	memset(dump_buf, 0, sizeof(dump_buf));
 	if (in == NULL)
-        	return dump_buf;
+		return dump_buf;
 
 	for (ii=0; ii<count; ii++) {
-		if (!(ii%16))   {
+		if (ii && !(ii%16))   {
 			if (!(ii%48))
 				snprintf(dump_buf + offs, size - offs, "\n");
 			else
 				snprintf(dump_buf + offs, size - offs, " ");
+			offs = strlen(dump_buf);
 		}
 
 		snprintf(dump_buf + offs, size - offs, "%02X", *(in + ii));
-		offs = strlen(dump_buf);
+		offs += 2;
 
 		if (offs > size)
-            		break;
-    	}
+			break;
+	}
 
-    	if (ii<count)
-        	snprintf(dump_buf + offs, sizeof(dump_buf) - offs, "....\n");
+	if (ii<count)
+		snprintf(dump_buf + offs, sizeof(dump_buf) - offs, "....\n");
 
 	return dump_buf;
 }
diff --git a/src/libopensc/opensc.h b/src/libopensc/opensc.h
index ad61b4a..d250fe9 100644
--- a/src/libopensc/opensc.h
+++ b/src/libopensc/opensc.h
@@ -166,7 +166,7 @@ typedef struct sc_security_env {
 
 	unsigned int algorithm_ref;
 	struct sc_path file_ref;
-	u8 key_ref[8];
+	unsigned char key_ref[8];
 	size_t key_ref_len;
 
 	struct sc_supported_algo_info supported_algos[SC_MAX_SUPPORTED_ALGORITHMS];
@@ -276,10 +276,10 @@ struct sc_reader_driver {
 /* reader capabilities */
 #define SC_READER_CAP_DISPLAY	0x00000001
 #define SC_READER_CAP_PIN_PAD	0x00000002
-#define SC_READER_CAP_PACE_GENERIC         0x00000003
 #define SC_READER_CAP_PACE_EID             0x00000004
 #define SC_READER_CAP_PACE_ESIGN           0x00000008
 #define SC_READER_CAP_PACE_DESTROY_CHANNEL 0x00000010
+#define SC_READER_CAP_PACE_GENERIC         0x00000020
 
 typedef struct sc_reader {
 	struct sc_context *ctx;
@@ -693,6 +693,7 @@ typedef struct sc_context {
 	char *app_name;
 	int debug;
 	int paranoid_memory;
+	int enable_default_driver;
 
 	FILE *debug_file;
 	char *debug_filename;
@@ -719,10 +720,11 @@ typedef struct sc_context {
  *  @param  apdu  sc_apdu_t object of the APDU to be send
  *  @return SC_SUCCESS on succcess and an error code otherwise
  */
-int sc_transmit_apdu(struct sc_card *card, sc_apdu_t *apdu);
+int sc_transmit_apdu(struct sc_card *, struct sc_apdu *);
 
-void sc_format_apdu(struct sc_card *card, sc_apdu_t *apdu, int cse, int ins,
-		    int p1, int p2);
+void sc_format_apdu(struct sc_card *, struct sc_apdu *, int, int, int, int);
+
+int sc_check_apdu(struct sc_card *, const struct sc_apdu *);
 
 /** Transforms an APDU from binary to its @c sc_apdu_t representation
  *  @param  ctx     sc_context_t object (used for logging)
@@ -1137,6 +1139,8 @@ int sc_file_set_prop_attr(sc_file_t *file, const u8 *prop_attr,
 			  size_t prop_attr_len);
 int sc_file_set_type_attr(sc_file_t *file, const u8 *type_attr,
 			  size_t type_attr_len);
+int sc_file_set_content(sc_file_t *file, const u8 *content,
+			  size_t content_len);
 
 
 /********************************************************************/
@@ -1281,6 +1285,7 @@ struct sc_algorithm_info * sc_card_find_ec_alg(struct sc_card *card,
 struct sc_algorithm_info * sc_card_find_gostr3410_alg(struct sc_card *card,
 		unsigned int key_length);
 
+scconf_block *sc_match_atr_block(sc_context_t *ctx, struct sc_card_driver *driver, struct sc_atr *atr);
 /**
  * Get CRC-32 digest
  * @param value pointer to data used for CRC calculation
diff --git a/src/libopensc/padding.c b/src/libopensc/padding.c
index 9ba7bdd..21a5609 100644
--- a/src/libopensc/padding.c
+++ b/src/libopensc/padding.c
@@ -103,8 +103,9 @@ static int sc_pkcs1_add_01_padding(const u8 *in, size_t in_len,
 	return SC_SUCCESS;
 }
 
-int sc_pkcs1_strip_01_padding(const u8 *in_dat, size_t in_len,
-	u8 *out, size_t *out_len)
+int
+sc_pkcs1_strip_01_padding(struct sc_context *ctx, const u8 *in_dat, size_t in_len,
+		u8 *out, size_t *out_len)
 {
 	const u8 *tmp = in_dat;
 	size_t    len;
@@ -134,37 +135,44 @@ int sc_pkcs1_strip_01_padding(const u8 *in_dat, size_t in_len,
 	return SC_SUCCESS;
 }
 
+
 /* remove pkcs1 BT02 padding (adding BT02 padding is currently not
  * needed/implemented) */
-int sc_pkcs1_strip_02_padding(const u8 *data, size_t len, u8 *out,
-	size_t *out_len)
+int
+sc_pkcs1_strip_02_padding(sc_context_t *ctx, const u8 *data, size_t len, u8 *out, size_t *out_len)
 {
 	unsigned int	n = 0;
 
+	LOG_FUNC_CALLED(ctx);
 	if (data == NULL || len < 3)
-		return SC_ERROR_INTERNAL;
+		LOG_FUNC_RETURN(ctx, SC_ERROR_INTERNAL);
+
 	/* skip leading zero byte */
 	if (*data == 0) {
 		data++;
 		len--;
 	}
 	if (data[0] != 0x02)
-		return SC_ERROR_WRONG_PADDING;
+		LOG_FUNC_RETURN(ctx, SC_ERROR_WRONG_PADDING);
 	/* skip over padding bytes */
 	for (n = 1; n < len && data[n]; n++)
 		;
 	/* Must be at least 8 pad bytes */
 	if (n >= len || n < 9)
-		return SC_ERROR_WRONG_PADDING;
+		LOG_FUNC_RETURN(ctx, SC_ERROR_WRONG_PADDING);
 	n++;
 	if (out == NULL)
 		/* just check the padding */
-		return SC_SUCCESS;
+		LOG_FUNC_RETURN(ctx, SC_SUCCESS);
+
 	/* Now move decrypted contents to head of buffer */
-	if (*out_len < len -  n)
-		return SC_ERROR_INTERNAL;
-	memmove(out, data + n, len - n);
-	return len - n;
+	if (*out_len < len - n)
+		LOG_FUNC_RETURN(ctx, SC_ERROR_INTERNAL);
+	*out_len = len - n;
+	memmove(out, data + n, *out_len);
+
+	sc_log(ctx, "stripped output(%i): %s", len - n, sc_dump_hex(out, len - n));
+	LOG_FUNC_RETURN(ctx, len - n);
 }
 
 /* add/remove DigestInfo prefix */
diff --git a/src/libopensc/pkcs15-algo.c b/src/libopensc/pkcs15-algo.c
index 9a9d93e..ce06f4e 100644
--- a/src/libopensc/pkcs15-algo.c
+++ b/src/libopensc/pkcs15-algo.c
@@ -281,14 +281,18 @@ asn1_decode_ec_params(sc_context_t *ctx, void **paramp,
 	sc_format_asn1_entry(asn1_ec_params + 1, &curve, 0, 0);
 
 	/* Some signature algorithms will not have any data */
-	if (buflen == 0 || buf == NULL ) 
+	if (buflen == 0 || buf == NULL) {
+		free(ecp);
 		return 0;
+	}
 
 	r = sc_asn1_decode_choice(ctx, asn1_ec_params, buf, buflen, NULL, NULL);
 	/* r = index into asn1_ec_params */
-sc_debug(ctx, SC_LOG_DEBUG_ASN1, "DEE - asn1_decode_ec_params r=%d", r);
-	if (r < 0)
+	sc_debug(ctx, SC_LOG_DEBUG_ASN1, "DEE - asn1_decode_ec_params r=%d", r);
+	if (r < 0) {
+		free(ecp);
 		return r;
+	}
 	if (r <= 1) {
 		ecp->der = malloc(buflen);
 
@@ -297,7 +301,7 @@ sc_debug(ctx, SC_LOG_DEBUG_ASN1, "DEE - asn1_decode_ec_params r=%d", r);
 
 		ecp->der_len = buflen;
 
-sc_debug(ctx, SC_LOG_DEBUG_ASN1, "DEE - asn1_decode_ec_params paramp=%p %p:%d %d",
+		sc_debug(ctx, SC_LOG_DEBUG_ASN1, "DEE - asn1_decode_ec_params paramp=%p %p:%d %d",
 		ecp, ecp->der, ecp->der_len, ecp->type);
 		memcpy(ecp->der, buf, buflen); /* copy der parameters */
 	} else 
@@ -311,13 +315,23 @@ static int
 asn1_encode_ec_params(sc_context_t *ctx, void *params,
 u8 **buf, size_t *buflen, int depth) 
 {
-	int r;
-	/* TODO: -DEE EC paramameters are DER so is there anything to do? */
-	/* I have not needed this yet */
+	 struct sc_ec_params * ecp = (struct sc_ec_params *) params;
+
+	/* Only handle named curves. They may be absent too */
 	sc_debug(ctx, SC_LOG_DEBUG_ASN1, "DEE - asn1_encode_ec_params");
-	r = SC_ERROR_NOT_IMPLEMENTED;
+	*buf = NULL;
+	*buflen = 0;
+	if (ecp && ecp->type == 1 && ecp->der) { /* named curve */
+		*buf = malloc(ecp->der_len);
+		if (*buf == NULL)
+			return SC_ERROR_OUT_OF_MEMORY;
 
-	return r;
+		memcpy(*buf, ecp->der, ecp->der_len);
+		*buflen = ecp->der_len;
+	} else
+		sc_debug(ctx, SC_LOG_DEBUG_ASN1, "DEE - Not named curve");
+
+	return 0;
 }
 
 static void
diff --git a/src/libopensc/pkcs15-cert.c b/src/libopensc/pkcs15-cert.c
index 86bea25..a930311 100644
--- a/src/libopensc/pkcs15-cert.c
+++ b/src/libopensc/pkcs15-cert.c
@@ -34,13 +34,13 @@
 #include "pkcs15.h"
 
 static int
-parse_x509_cert(sc_context_t *ctx, const u8 *buf, size_t buflen, struct sc_pkcs15_cert *cert)
+parse_x509_cert(sc_context_t *ctx, struct sc_pkcs15_der *der, struct sc_pkcs15_cert *cert)
 {
 	int r;
 	struct sc_algorithm_id sig_alg;
-	struct sc_pkcs15_pubkey  * pubkey = NULL;
-	u8 *serial = NULL;
-	size_t serial_len = 0;
+	struct sc_pkcs15_pubkey *pubkey = NULL;
+	unsigned char *serial = NULL, *issuer = NULL, *subject = NULL, *buf =  der->value;
+	size_t serial_len = 0, issuer_len = 0, subject_len = 0, data_len = 0, buflen = der->len;
 	struct sc_asn1_entry asn1_version[] = {
 		{ "version", SC_ASN1_INTEGER, SC_ASN1_TAG_INTEGER, 0, &cert->version, NULL },
 		{ NULL, 0, 0, 0, NULL, NULL }
@@ -61,11 +61,11 @@ parse_x509_cert(sc_context_t *ctx, const u8 *buf, size_t buflen, struct sc_pkcs1
 		{ "version",		SC_ASN1_STRUCT,    SC_ASN1_CTX | 0 | SC_ASN1_CONS, SC_ASN1_OPTIONAL, asn1_version, NULL },
 		{ "serialNumber",	SC_ASN1_OCTET_STRING, SC_ASN1_TAG_INTEGER, SC_ASN1_ALLOC, &serial, &serial_len },
 		{ "signature",		SC_ASN1_STRUCT,    SC_ASN1_TAG_SEQUENCE | SC_ASN1_CONS, 0, NULL, NULL },
-		{ "issuer",		SC_ASN1_OCTET_STRING, SC_ASN1_TAG_SEQUENCE | SC_ASN1_CONS, SC_ASN1_ALLOC, &cert->issuer, &cert->issuer_len },
+		{ "issuer",		SC_ASN1_OCTET_STRING, SC_ASN1_TAG_SEQUENCE | SC_ASN1_CONS, SC_ASN1_ALLOC, &issuer, &issuer_len },
 		{ "validity",		SC_ASN1_STRUCT,    SC_ASN1_TAG_SEQUENCE | SC_ASN1_CONS, 0, NULL, NULL },
-		{ "subject",		SC_ASN1_OCTET_STRING, SC_ASN1_TAG_SEQUENCE | SC_ASN1_CONS, SC_ASN1_ALLOC, &cert->subject, &cert->subject_len },
+		{ "subject",		SC_ASN1_OCTET_STRING, SC_ASN1_TAG_SEQUENCE | SC_ASN1_CONS, SC_ASN1_ALLOC, &subject, &subject_len },
 		/* Use a callback to get the algorithm, parameters and pubkey into sc_pkcs15_pubkey */
-		{ "subjectPublicKeyInfo",SC_ASN1_CALLBACK, SC_ASN1_TAG_SEQUENCE | SC_ASN1_CONS, 0, sc_pkcs15_pubkey_from_spki,  &pubkey },
+		{ "subjectPublicKeyInfo",SC_ASN1_CALLBACK, SC_ASN1_TAG_SEQUENCE | SC_ASN1_CONS, 0, sc_pkcs15_pubkey_from_spki_fields,  &pubkey },
 		{ "extensions",		SC_ASN1_STRUCT,    SC_ASN1_CTX | 3 | SC_ASN1_CONS, SC_ASN1_OPTIONAL, asn1_extensions, NULL },
 		{ NULL, 0, 0, 0, NULL, NULL }
 	};
@@ -79,6 +79,15 @@ parse_x509_cert(sc_context_t *ctx, const u8 *buf, size_t buflen, struct sc_pkcs1
 		{ "serialNumber", SC_ASN1_OCTET_STRING, SC_ASN1_TAG_INTEGER, SC_ASN1_ALLOC, NULL, NULL },
 		{ NULL, 0, 0, 0, NULL, NULL }
 	};
+	struct sc_asn1_entry asn1_subject[] = {
+		{ "subject", SC_ASN1_OCTET_STRING, SC_ASN1_TAG_SEQUENCE | SC_ASN1_CONS, SC_ASN1_ALLOC, NULL, NULL },
+		{ NULL, 0, 0, 0, NULL, NULL }
+	};
+	struct sc_asn1_entry asn1_issuer[] = {
+		{ "issuer", SC_ASN1_OCTET_STRING, SC_ASN1_TAG_SEQUENCE | SC_ASN1_CONS, SC_ASN1_ALLOC, NULL, NULL },
+		{ NULL, 0, 0, 0, NULL, NULL }
+	};
+
 	const u8 *obj;
 	size_t objlen;
 
@@ -87,30 +96,46 @@ parse_x509_cert(sc_context_t *ctx, const u8 *buf, size_t buflen, struct sc_pkcs1
 	if (obj == NULL)
 		LOG_TEST_RET(ctx, SC_ERROR_INVALID_ASN1_OBJECT, "X.509 certificate not found");
 
-	cert->data.len = objlen + (obj - buf);
+	data_len = objlen + (obj - buf);
+	cert->data.value = malloc(data_len);
+	if (!cert->data.value)
+		LOG_FUNC_RETURN(ctx, SC_ERROR_OUT_OF_MEMORY);
+	memcpy(cert->data.value, buf, data_len);
+	cert->data.len = data_len;
+
 	r = sc_asn1_decode(ctx, asn1_cert, obj, objlen, NULL, NULL);
 	LOG_TEST_RET(ctx, r, "ASN.1 parsing of certificate failed");
 
 	cert->version++;
 
-	if (pubkey) {
-		cert->key = pubkey;
-		pubkey = NULL;
-	}
-	else {
+	if (!pubkey)
 		LOG_TEST_RET(ctx, SC_ERROR_INVALID_ASN1_OBJECT, "Unable to decode subjectPublicKeyInfo from cert");
-	}
+	cert->key = pubkey;
+
 	sc_asn1_clear_algorithm_id(&sig_alg);
-	if (r < 0)
-		return r;
 
 	if (serial && serial_len)   {
 		sc_format_asn1_entry(asn1_serial_number + 0, serial, &serial_len, 1);
 		r = sc_asn1_encode(ctx, asn1_serial_number, &cert->serial, &cert->serial_len);
 		free(serial);
+		LOG_TEST_RET(ctx, r, "ASN.1 encoding of serial failed");
 	}
 
-	return r;
+	if (subject && subject_len)   {
+		sc_format_asn1_entry(asn1_subject + 0, subject, &subject_len, 1);
+		r = sc_asn1_encode(ctx, asn1_subject, &cert->subject, &cert->subject_len);
+		free(subject);
+		LOG_TEST_RET(ctx, r, "ASN.1 encoding of subject");
+	}
+
+	if (issuer && issuer_len)   {
+		sc_format_asn1_entry(asn1_issuer + 0, issuer, &issuer_len, 1);
+		r = sc_asn1_encode(ctx, asn1_issuer, &cert->issuer, &cert->issuer_len);
+		free(issuer);
+		LOG_TEST_RET(ctx, r, "ASN.1 encoding of issuer");
+	}
+
+	return SC_SUCCESS;
 }
 
 
@@ -125,7 +150,7 @@ sc_pkcs15_pubkey_from_cert(struct sc_context *ctx,
 	if (cert == NULL)
 		return SC_ERROR_OUT_OF_MEMORY;
 
-	rv = parse_x509_cert(ctx, cert_blob->value, cert_blob->len, cert);
+	rv = parse_x509_cert(ctx, cert_blob, cert);
 
 	*out = cert->key;
 	cert->key = NULL;
@@ -139,43 +164,44 @@ int
 sc_pkcs15_read_certificate(struct sc_pkcs15_card *p15card, const struct sc_pkcs15_cert_info *info,
 		struct sc_pkcs15_cert **cert_out)
 {
-	struct sc_pkcs15_cert *cert;
+	struct sc_context *ctx = NULL;
+	struct sc_pkcs15_cert *cert = NULL;
 	struct sc_pkcs15_der der;
 	int r;
 
 	assert(p15card != NULL && info != NULL && cert_out != NULL);
-	LOG_FUNC_CALLED(p15card->card->ctx);
+	ctx = p15card->card->ctx;
+	LOG_FUNC_CALLED(ctx);
 
 	if (info->value.len && info->value.value)   {
 		sc_der_copy(&der, &info->value);
 	}
 	else if (info->path.len) {
 		r = sc_pkcs15_read_file(p15card, &info->path, &der.value, &der.len);
-		if (r)
-			return r;
+		LOG_TEST_RET(ctx, r, "Unable to read certificate file.");
 	}
 	else   {
-		return SC_ERROR_OBJECT_NOT_FOUND;
+		LOG_FUNC_RETURN(ctx, SC_ERROR_OBJECT_NOT_FOUND);
 	}
 
-
 	cert = malloc(sizeof(struct sc_pkcs15_cert));
 	if (cert == NULL) {
 		free(der.value);
-		return SC_ERROR_OUT_OF_MEMORY;
+		LOG_FUNC_RETURN(ctx, SC_ERROR_OUT_OF_MEMORY);
 	}
 	memset(cert, 0, sizeof(struct sc_pkcs15_cert));
-	if (parse_x509_cert(p15card->card->ctx, der.value, der.len, cert)) {
+	if (parse_x509_cert(ctx, &der, cert)) {
 		free(der.value);
 		sc_pkcs15_free_certificate(cert);
-		return SC_ERROR_INVALID_ASN1_OBJECT;
+		LOG_FUNC_RETURN(ctx, SC_ERROR_INVALID_ASN1_OBJECT);
 	}
+	free(der.value);
 
-	cert->data = der;
 	*cert_out = cert;
-	return SC_SUCCESS;
+	LOG_FUNC_RETURN(ctx, SC_SUCCESS);
 }
 
+
 static const struct sc_asn1_entry c_asn1_cred_ident[] = {
 	{ "idType",	SC_ASN1_INTEGER,      SC_ASN1_TAG_INTEGER, 0, NULL, NULL },
 	{ "idValue",	SC_ASN1_OCTET_STRING, SC_ASN1_TAG_OCTET_STRING, 0, NULL, NULL },
diff --git a/src/libopensc/pkcs15-data.c b/src/libopensc/pkcs15-data.c
index e366b81..e70d668 100644
--- a/src/libopensc/pkcs15-data.c
+++ b/src/libopensc/pkcs15-data.c
@@ -39,35 +39,39 @@ static const struct sc_asn1_entry     c_asn1_data_object[] = {
         { NULL, 0, 0, 0, NULL, NULL }
 };
 
-int sc_pkcs15_read_data_object(struct sc_pkcs15_card *p15card,
-			       const struct sc_pkcs15_data_info *info,
-			       struct sc_pkcs15_data **data_object_out)
+
+int
+sc_pkcs15_read_data_object(struct sc_pkcs15_card *p15card,
+		const struct sc_pkcs15_data_info *info,
+		struct sc_pkcs15_data **data_object_out)
 {
-	int r;
+        struct sc_context *ctx = p15card->card->ctx;
 	struct sc_pkcs15_data *data_object;
-	u8 *data = NULL;
-	size_t len;
+	struct sc_pkcs15_der der;
+	int r;
 
-	if (p15card == NULL || info == NULL || data_object_out == NULL)
-		return SC_ERROR_INVALID_ARGUMENTS;
-	SC_FUNC_CALLED(p15card->card->ctx, SC_LOG_DEBUG_VERBOSE);
+	LOG_FUNC_CALLED(ctx);
+	if (!info || !data_object_out)
+		LOG_FUNC_RETURN(ctx, SC_ERROR_INVALID_ARGUMENTS);
 
-	r = sc_pkcs15_read_file(p15card, &info->path, &data, &len);
-	if (r)
-		return r;
-	data_object = malloc(sizeof(struct sc_pkcs15_data));
-	if (data_object == NULL) {
-		free(data);
-		return SC_ERROR_OUT_OF_MEMORY;
+	if (!info->data.value)   {
+		r = sc_pkcs15_read_file(p15card, &info->path, (unsigned char **) &info->data.value, (size_t *) &info->data.len);
+		LOG_TEST_RET(ctx, r, "Cannot get DATA object data");
 	}
-	memset(data_object, 0, sizeof(struct sc_pkcs15_data));
 
-	data_object->data = data;
-	data_object->data_len = len;
+	sc_der_copy(&der, &info->data);
+	data_object = calloc(sizeof(struct sc_pkcs15_data), 1);
+	if (!data_object && !der.value)
+		LOG_TEST_RET(ctx, SC_ERROR_OUT_OF_MEMORY, "Cannot allocate memory for data object");
+
+	data_object->data = der.value;
+	data_object->data_len = der.len;
 	*data_object_out = data_object;
-	return SC_SUCCESS;
+
+	LOG_FUNC_RETURN(ctx,SC_SUCCESS);
 }
 
+
 static const struct sc_asn1_entry c_asn1_data[] = {
 	{ "data", SC_ASN1_PKCS15_OBJECT, SC_ASN1_TAG_SEQUENCE | SC_ASN1_CONS, 0, NULL, NULL },
 	{ NULL, 0, 0, 0, NULL, NULL }
@@ -173,7 +177,10 @@ void sc_pkcs15_free_data_object(struct sc_pkcs15_data *data_object)
 	free(data_object);
 }
 
-void sc_pkcs15_free_data_info(sc_pkcs15_data_info_t *data)
+void sc_pkcs15_free_data_info(struct sc_pkcs15_data_info *info)
 {
-	free(data);
+	if (info && info->data.value && info->data.len)
+		free(info->data.value);
+
+	free(info);
 }
diff --git a/src/libopensc/pkcs15-dnie.c b/src/libopensc/pkcs15-dnie.c
new file mode 100644
index 0000000..f7f1b9e
--- /dev/null
+++ b/src/libopensc/pkcs15-dnie.c
@@ -0,0 +1,274 @@
+/**
+ * PKCS15 emulation layer for DNIe card.
+ *
+ * Copyright (C) 2011, Andre Zepezauer <andre.zepezauer at student.uni-halle.de> 
+ * Copyright (C) 2011, Juan Antonio Martinez <jonsito at terra.es>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+#include <stdlib.h>
+#include <string.h>
+#include "config.h"
+#include "libopensc/log.h"
+#include "libopensc/asn1.h"
+#include "libopensc/pkcs15.h"
+
+/* Card driver related */
+extern int dnie_match_card(struct sc_card *card);
+
+/* Helper functions to get the pkcs15 stuff bound. */
+
+static
+int dump_ef(sc_card_t * card, const char *path, u8 * buf, size_t * buf_len)
+{
+	int rv;
+	sc_file_t *file = sc_file_new();
+	sc_format_path(path, &file->path);
+	sc_select_file(card, &file->path, &file);
+	if (file->size > *buf_len)
+		return SC_ERROR_BUFFER_TOO_SMALL;
+	rv = sc_read_binary(card, 0, buf, file->size, 0);
+	if (rv < 0)
+		return rv;
+	*buf_len = rv;
+
+	return SC_SUCCESS;
+}
+
+static const struct sc_asn1_entry c_asn1_odf[] = {
+	{"privateKeys", SC_ASN1_STRUCT, SC_ASN1_CTX | 0 | SC_ASN1_CONS, 0, NULL,
+	 NULL},
+	{"publicKeys", SC_ASN1_STRUCT, SC_ASN1_CTX | 1 | SC_ASN1_CONS, 0, NULL,
+	 NULL},
+	{"trustedPublicKeys", SC_ASN1_STRUCT, SC_ASN1_CTX | 2 | SC_ASN1_CONS, 0,
+	 NULL, NULL},
+	{"secretKeys", SC_ASN1_STRUCT, SC_ASN1_CTX | 3 | SC_ASN1_CONS, 0, NULL,
+	 NULL},
+	{"certificates", SC_ASN1_STRUCT, SC_ASN1_CTX | 4 | SC_ASN1_CONS, 0,
+	 NULL, NULL},
+	{"trustedCertificates", SC_ASN1_STRUCT, SC_ASN1_CTX | 5 | SC_ASN1_CONS,
+	 0, NULL, NULL},
+	{"usefulCertificates", SC_ASN1_STRUCT, SC_ASN1_CTX | 6 | SC_ASN1_CONS,
+	 0, NULL, NULL},
+	{"dataObjects", SC_ASN1_STRUCT, SC_ASN1_CTX | 7 | SC_ASN1_CONS, 0, NULL,
+	 NULL},
+	{"authObjects", SC_ASN1_STRUCT, SC_ASN1_CTX | 8 | SC_ASN1_CONS, 0, NULL,
+	 NULL},
+	{NULL, 0, 0, 0, NULL, NULL}
+};
+
+static const unsigned int odf_indexes[] = {
+	SC_PKCS15_PRKDF,
+	SC_PKCS15_PUKDF,
+	SC_PKCS15_PUKDF_TRUSTED,
+	SC_PKCS15_SKDF,
+	SC_PKCS15_CDF,
+	SC_PKCS15_CDF_TRUSTED,
+	SC_PKCS15_CDF_USEFUL,
+	SC_PKCS15_DODF,
+	SC_PKCS15_AODF,
+};
+
+static
+int parse_odf(const u8 * buf, size_t buflen, struct sc_pkcs15_card *p15card)
+{
+	const u8 *p = buf;
+	size_t left = buflen;
+	int r, i, type;
+	sc_path_t path;
+	struct sc_asn1_entry asn1_obj_or_path[] = {
+		{"path", SC_ASN1_PATH, SC_ASN1_CONS | SC_ASN1_SEQUENCE, 0,
+		 &path, NULL},
+		{NULL, 0, 0, 0, NULL, NULL}
+	};
+	struct sc_asn1_entry asn1_odf[10];
+
+	sc_path_t *path_prefix = calloc(1, sizeof(sc_path_t));
+	sc_format_path("3F005015", path_prefix);
+
+	sc_copy_asn1_entry(c_asn1_odf, asn1_odf);
+	for (i = 0; asn1_odf[i].name != NULL; i++)
+		sc_format_asn1_entry(asn1_odf + i, asn1_obj_or_path, NULL, 0);
+	while (left > 0) {
+		r = sc_asn1_decode_choice(p15card->card->ctx, asn1_odf, p, left,
+					  &p, &left);
+		if (r == SC_ERROR_ASN1_END_OF_CONTENTS)
+			break;
+		if (r < 0)
+			return r;
+		type = r;
+		r = sc_pkcs15_make_absolute_path(path_prefix, &path);
+		if (r < 0)
+			return r;
+		r = sc_pkcs15_add_df(p15card, odf_indexes[type], &path);
+		if (r)
+			return r;
+	}
+	return 0;
+}
+
+static int sc_pkcs15emu_dnie_init(sc_pkcs15_card_t * p15card)
+{
+	u8 buf[1024];
+	sc_pkcs15_df_t *df;
+	sc_pkcs15_object_t *p15_obj;
+	size_t len = sizeof(buf);
+	int rv;
+
+	sc_context_t *ctx = p15card->card->ctx;
+	LOG_FUNC_CALLED(ctx);
+
+	/* Check for correct card driver (i.e. iso7816) */
+	if (strcmp(p15card->card->driver->short_name, "dnie") != 0)
+		return SC_ERROR_WRONG_CARD;
+
+	/* Check for correct card atr */
+	if (dnie_match_card(p15card->card) != 1)
+		return SC_ERROR_WRONG_CARD;
+
+	/* Set root path of this application */
+	p15card->file_app = sc_file_new();
+	sc_format_path("3F00", &p15card->file_app->path);
+
+	/* Load TokenInfo */
+	rv = dump_ef(p15card->card, "3F0050155032", buf, &len);
+	if (rv != SC_SUCCESS) {
+		sc_log(ctx, "Reading of EF.TOKENINFO failed: %d", rv);
+		LOG_FUNC_RETURN(ctx, rv);
+	}
+	rv = sc_pkcs15_parse_tokeninfo(p15card->card->ctx, p15card->tokeninfo,
+				       buf, len);
+	if (rv != SC_SUCCESS) {
+		sc_log(ctx, "Decoding of EF.TOKENINFO failed: %d", rv);
+		LOG_FUNC_RETURN(ctx, rv);
+	}
+
+	/* Only accept the original stuff */
+	if (strcmp(p15card->tokeninfo->manufacturer_id, "DGP-FNMT") != 0)
+		LOG_FUNC_RETURN(ctx, SC_ERROR_WRONG_CARD);
+
+	/* Load ODF */
+	rv = dump_ef(p15card->card, "3F0050155031", buf, &len);
+	if (rv != SC_SUCCESS) {
+		sc_log(ctx, "Reading of ODF failed: %d", rv);
+		LOG_FUNC_RETURN(ctx, rv);
+	}
+	rv = parse_odf(buf, len, p15card);
+	if (rv != SC_SUCCESS) {
+		sc_log(ctx, "Decoding of ODF failed: %d", rv);
+		LOG_FUNC_RETURN(ctx, rv);
+	}
+
+	/* Decode EF.PrKDF, EF.PuKDF and EF.CDF */
+	for (df = p15card->df_list; df != NULL; df = df->next) {
+		if (df->type == SC_PKCS15_PRKDF) {
+			rv = sc_pkcs15_parse_df(p15card, df);
+			if (rv != SC_SUCCESS) {
+				sc_log(ctx,
+				       "Decoding of EF.PrKDF (%s) failed: %d",
+				       sc_print_path(&df->path), rv);
+			}
+		}
+		if (df->type == SC_PKCS15_PUKDF) {
+			rv = sc_pkcs15_parse_df(p15card, df);
+			if (rv != SC_SUCCESS) {
+				sc_log(ctx,
+				       "Decoding of EF.PuKDF (%s) failed: %d",
+				       sc_print_path(&df->path), rv);
+			}
+		}
+		if (df->type == SC_PKCS15_CDF) {
+			rv = sc_pkcs15_parse_df(p15card, df);
+			if (rv != SC_SUCCESS) {
+				sc_log(ctx,
+				       "Decoding of EF.CDF (%s) failed: %d",
+				       sc_print_path(&df->path), rv);
+			}
+		}
+		if (df->type == SC_PKCS15_DODF) {
+			rv = sc_pkcs15_parse_df(p15card, df);
+			if (rv != SC_SUCCESS) {
+				sc_log(ctx,
+				       "Decoding of EF.DODF (%s) failed: %d",
+				       sc_print_path(&df->path), rv);
+			}
+		}
+	}
+
+	/* Perform required fixes */
+	p15_obj = p15card->obj_list;
+	while (p15_obj != NULL) {
+		/* Add missing 'auth_id' to private objects */
+		if ((p15_obj->flags & SC_PKCS15_CO_FLAG_PRIVATE)
+		    && (p15_obj->auth_id.len == 0)) {
+			p15_obj->auth_id.value[0] = 0x01;
+			p15_obj->auth_id.len = 1;
+		}
+		/* Remove found public keys as cannot be read_binary()'d */
+		if ( p15_obj->df && (p15_obj->df->type == SC_PKCS15_PUKDF) ) {
+			sc_pkcs15_object_t *puk = p15_obj;
+			p15_obj = p15_obj->next;
+			sc_pkcs15_remove_object(p15card, puk);
+			sc_pkcs15_free_object(puk);
+                } else {
+			p15_obj = p15_obj->next;
+		}
+	}
+	
+	LOG_FUNC_RETURN(ctx, SC_SUCCESS);
+}
+
+/********************************************/
+/* Public Functions When called as DLL Module*/
+/********************************************/
+
+const char *sc_driver_version()
+{
+	return "0.12.3-svn";	/* defined in config.h of OpenSC */
+}
+
+int bind(sc_pkcs15_card_t * p15card, sc_pkcs15emu_opt_t * options)
+{
+	/* Check for correct card driver (i.e. iso7816) */
+	if (strcmp(p15card->card->driver->short_name, "dnie") != 0)
+		return SC_ERROR_WRONG_CARD;
+
+	/* Check for correct card */
+	if (dnie_match_card(p15card->card) != 1)
+		return SC_ERROR_WRONG_CARD;
+	return sc_pkcs15emu_dnie_init(p15card);
+}
+
+/****************************************/
+/* public functions for in-built module */
+/****************************************/
+int sc_pkcs15emu_dnie_init_ex(sc_pkcs15_card_t * p15card,
+			      sc_pkcs15emu_opt_t * opts)
+{
+	int r=SC_SUCCESS;
+	sc_context_t *ctx = p15card->card->ctx;
+	LOG_FUNC_CALLED(ctx);
+
+	/* if no check flag execute unconditionally */
+	if (opts && opts->flags & SC_PKCS15EMU_FLAGS_NO_CHECK)
+		LOG_FUNC_RETURN(ctx, sc_pkcs15emu_dnie_init(p15card));
+	/* check for proper card */
+	r = dnie_match_card(p15card->card);
+	if (r == 0)
+		LOG_FUNC_RETURN(ctx, SC_ERROR_WRONG_CARD);
+	/* ok: initialize and return */
+	LOG_FUNC_RETURN(ctx, sc_pkcs15emu_dnie_init(p15card));
+}
diff --git a/src/libopensc/pkcs15-esteid.c b/src/libopensc/pkcs15-esteid.c
index 8f481c4..6975fe1 100644
--- a/src/libopensc/pkcs15-esteid.c
+++ b/src/libopensc/pkcs15-esteid.c
@@ -1,7 +1,7 @@
 /*
  * PKCS15 emulation layer for EstEID card.
  *
- * Copyright (C) 2004, Martin Paljak <martin at paljak.pri.ee>
+ * Copyright (C) 2004, Martin Paljak <martin at martinpaljak.net>
  * Copyright (C) 2004, Bud P. Bruegger <bud at comune.grosseto.it>
  * Copyright (C) 2004, Antonino Iacono <ant_iacono at tin.it>
  * Copyright (C) 2003, Olaf Kirch <okir at suse.de>
@@ -118,10 +118,13 @@ sc_pkcs15emu_esteid_init (sc_pkcs15_card_t * p15card)
 			r = sc_pkcs15_read_certificate(p15card, &cert_info, &cert);
 			if (r == SC_SUCCESS) {
 				mem = BIO_new_mem_buf(cert->data.value, cert->data.len);
-				if (!mem)
+				if (!mem) {
+					sc_pkcs15_free_certificate(cert);
 					return SC_ERROR_INTERNAL;
+				}
 				x509 = d2i_X509_bio(mem, NULL);
 				BIO_free(mem);
+				sc_pkcs15_free_certificate(cert);
 				if (!x509)
 					return SC_ERROR_INTERNAL;
 				r = X509_NAME_get_index_by_NID(X509_get_subject_name(x509), NID_commonName, -1);
diff --git a/src/libopensc/pkcs15-gemsafeV1.c b/src/libopensc/pkcs15-gemsafeV1.c
index 3e04d40..2a8c3cc 100644
--- a/src/libopensc/pkcs15-gemsafeV1.c
+++ b/src/libopensc/pkcs15-gemsafeV1.c
@@ -14,7 +14,8 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */
 
-/* Initially written by David Mattes (david.mattes at boeing.com) */
+/* Initially written by David Mattes <david.mattes at boeing.com> */
+/* Support for multiple key containers by Lukas Wunner <lukas at wunner.de> */
 
 #include "config.h"
 
@@ -28,6 +29,14 @@
 #define MANU_ID			"Gemplus"
 #define APPLET_NAME		"GemSAFE V1"
 #define DRIVER_SERIAL_NUMBER	"v0.9"
+#define GEMSAFE_APP_PATH	"3F001600"
+#define GEMSAFE_PATH		"3F0016000004"
+
+/* Apparently, the Applet max read "quanta" is 248 bytes
+ * Gemalto ClassicClient reads files in chunks of 238 bytes
+ */
+#define GEMSAFE_READ_QUANTUM    248
+#define GEMSAFE_MAX_OBJLEN      28672
 
 int sc_pkcs15emu_gemsafeV1_init_ex(sc_pkcs15_card_t *, sc_pkcs15emu_opt_t *);
 
@@ -55,43 +64,67 @@ sc_pkcs15emu_add_prkey(sc_pkcs15_card_t *p15card,
 	const sc_pkcs15_id_t *auth_id, int obj_flags);
 
 typedef struct cdata_st {
-	const char *label;
+	char	   *label;
 	int	    authority;
 	const char *path;
+	size_t	    index;
+	size_t	    count;
 	const char *id;
 	int         obj_flags;
 } cdata;
 
-const cdata gemsafe_cert[] = {
-	{"DS certificate", 0, "3F0016000004","45", SC_PKCS15_CO_FLAG_MODIFIABLE},
-	{NULL, 0, NULL, 0, 0}
+const unsigned int gemsafe_cert_max = 12;
+
+cdata gemsafe_cert[] = {
+	{"DS certificate #1",  0, GEMSAFE_PATH, 0, 0, "45", SC_PKCS15_CO_FLAG_MODIFIABLE},
+	{"DS certificate #2",  0, GEMSAFE_PATH, 0, 0, "46", SC_PKCS15_CO_FLAG_MODIFIABLE},
+	{"DS certificate #3",  0, GEMSAFE_PATH, 0, 0, "47", SC_PKCS15_CO_FLAG_MODIFIABLE},
+	{"DS certificate #4",  0, GEMSAFE_PATH, 0, 0, "48", SC_PKCS15_CO_FLAG_MODIFIABLE},
+	{"DS certificate #5",  0, GEMSAFE_PATH, 0, 0, "49", SC_PKCS15_CO_FLAG_MODIFIABLE},
+	{"DS certificate #6",  0, GEMSAFE_PATH, 0, 0, "50", SC_PKCS15_CO_FLAG_MODIFIABLE},
+	{"DS certificate #7",  0, GEMSAFE_PATH, 0, 0, "51", SC_PKCS15_CO_FLAG_MODIFIABLE},
+	{"DS certificate #8",  0, GEMSAFE_PATH, 0, 0, "52", SC_PKCS15_CO_FLAG_MODIFIABLE},
+	{"DS certificate #9",  0, GEMSAFE_PATH, 0, 0, "53", SC_PKCS15_CO_FLAG_MODIFIABLE},
+	{"DS certificate #10", 0, GEMSAFE_PATH, 0, 0, "54", SC_PKCS15_CO_FLAG_MODIFIABLE},
+	{"DS certificate #11", 0, GEMSAFE_PATH, 0, 0, "55", SC_PKCS15_CO_FLAG_MODIFIABLE},
+	{"DS certificate #12", 0, GEMSAFE_PATH, 0, 0, "56", SC_PKCS15_CO_FLAG_MODIFIABLE},
 };
 
 typedef struct pdata_st {
+	const u8    atr[SC_MAX_ATR_SIZE];
+	const size_t atr_len;
 	const char *id;
 	const char *label;
 	const char *path;
-	int         ref;
-	int         type;
-	unsigned int maxlen;
-	unsigned int minlen;
-	int         flags;
-	int         tries_left;
+	const int   ref;
+	const int   type;
+	const unsigned int maxlen;
+	const unsigned int minlen;
+	const int   flags;
+	const int   tries_left;
 	const char  pad_char;
-	int         obj_flags;
+	const int   obj_flags;
 } pindata;
 
+const unsigned int gemsafe_pin_max = 2;
+
 const pindata gemsafe_pin[] = {
-	{ "01", "DS pin", NULL, 0x01, SC_PKCS15_PIN_TYPE_BCD,
+	/* ATR-specific PIN policies, first match found is used: */
+	{ {0x3B, 0x7D, 0x96, 0x00, 0x00, 0x80, 0x31, 0x80, 0x65,
+	   0xB0, 0x83, 0x11, 0x48, 0xC8, 0x83, 0x00, 0x90, 0x00}, 18,
+	  "01", "DS pin", GEMSAFE_PATH, 0x01, SC_PKCS15_PIN_TYPE_ASCII_NUMERIC,
+	  8, 4, SC_PKCS15_PIN_FLAG_NEEDS_PADDING | SC_PKCS15_PIN_FLAG_LOCAL,
+	  3, 0x00, SC_PKCS15_CO_FLAG_MODIFIABLE | SC_PKCS15_CO_FLAG_PRIVATE },
+	/* default PIN policy comes last: */
+	{ { 0 }, 0,
+	  "01", "DS pin", GEMSAFE_PATH, 0x01, SC_PKCS15_PIN_TYPE_BCD,
 	  16, 6, SC_PKCS15_PIN_FLAG_NEEDS_PADDING | SC_PKCS15_PIN_FLAG_LOCAL,
-	  3, 0xFF,
-	  SC_PKCS15_CO_FLAG_MODIFIABLE | SC_PKCS15_CO_FLAG_PRIVATE },
-	{ NULL, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 0 }
+	  3, 0xFF, SC_PKCS15_CO_FLAG_MODIFIABLE | SC_PKCS15_CO_FLAG_PRIVATE }
 };
 
 typedef struct prdata_st {
 	const char *id;
-	const char *label;
+	char	   *label;
 	unsigned int modulus_len;
 	int         usage;
 	const char *path;
@@ -111,100 +144,146 @@ typedef struct prdata_st {
 			SC_PKCS15_PRKEY_USAGE_UNWRAP  | \
 			SC_PKCS15_PRKEY_USAGE_SIGN
 
-const prdata gemsafe_prkeys[] = {
-	{ "45", "DS key", 1024, USAGE_AUT, NULL,
-	  0x03, "01", SC_PKCS15_CO_FLAG_PRIVATE},
-	{ NULL, NULL, 0, 0, NULL, 0, NULL, 0}
+prdata gemsafe_prkeys[] = {
+	{ "45", "DS key #1",  1024, USAGE_AUT, GEMSAFE_PATH, 0x03, "01", SC_PKCS15_CO_FLAG_PRIVATE},
+	{ "46", "DS key #2",  1024, USAGE_AUT, GEMSAFE_PATH, 0x04, "01", SC_PKCS15_CO_FLAG_PRIVATE},
+	{ "47", "DS key #3",  1024, USAGE_AUT, GEMSAFE_PATH, 0x05, "01", SC_PKCS15_CO_FLAG_PRIVATE},
+	{ "48", "DS key #4",  1024, USAGE_AUT, GEMSAFE_PATH, 0x06, "01", SC_PKCS15_CO_FLAG_PRIVATE},
+	{ "49", "DS key #5",  1024, USAGE_AUT, GEMSAFE_PATH, 0x07, "01", SC_PKCS15_CO_FLAG_PRIVATE},
+	{ "50", "DS key #6",  1024, USAGE_AUT, GEMSAFE_PATH, 0x08, "01", SC_PKCS15_CO_FLAG_PRIVATE},
+	{ "51", "DS key #7",  1024, USAGE_AUT, GEMSAFE_PATH, 0x09, "01", SC_PKCS15_CO_FLAG_PRIVATE},
+	{ "52", "DS key #8",  1024, USAGE_AUT, GEMSAFE_PATH, 0x0a, "01", SC_PKCS15_CO_FLAG_PRIVATE},
+	{ "53", "DS key #9",  1024, USAGE_AUT, GEMSAFE_PATH, 0x0b, "01", SC_PKCS15_CO_FLAG_PRIVATE},
+	{ "54", "DS key #10", 1024, USAGE_AUT, GEMSAFE_PATH, 0x0c, "01", SC_PKCS15_CO_FLAG_PRIVATE},
+	{ "55", "DS key #11", 1024, USAGE_AUT, GEMSAFE_PATH, 0x0d, "01", SC_PKCS15_CO_FLAG_PRIVATE},
+	{ "56", "DS key #12", 1024, USAGE_AUT, GEMSAFE_PATH, 0x0e, "01", SC_PKCS15_CO_FLAG_PRIVATE},
 };
 
-static int gemsafe_get_cert_len(sc_card_t *card, sc_path_t *path, 
-	int *key_ref)
+static int gemsafe_get_cert_len(sc_card_t *card)
 {
-	const char *fn_name = "gemsafe_get_cert_len";
 	int r;
-	int ind;
-	u8  ibuf[248];
+	u8  ibuf[GEMSAFE_MAX_OBJLEN];
+	u8 *iptr;
+	struct sc_path path;
 	struct sc_file *file;
 	size_t objlen, certlen;
-	unsigned int block=0;
-	int found = 0;
-	unsigned int offset=0, index_local, i=0;
+	unsigned int ind, i=0;
 
-	r = sc_select_file(card, path, &file);
-	if (r < 0)
-		return 0;
+	sc_format_path(GEMSAFE_PATH, &path);
+	r = sc_select_file(card, &path, &file);
+	if (r != SC_SUCCESS || !file)
+		return SC_ERROR_INTERNAL;
 
-	/* Apparently, the Applet max read "quanta" is 248 bytes */
 	/* Initial read */
-	r = sc_read_binary(card, offset, ibuf, 248, 0);
+	r = sc_read_binary(card, 0, ibuf, GEMSAFE_READ_QUANTUM, 0);
 	if (r < 0)
-		return 0;
+		return SC_ERROR_INTERNAL;
 
 	/* Actual stored object size is encoded in first 2 bytes
 	 * (allocated EF space is much greater!)
 	 */
 	objlen = (((size_t) ibuf[0]) << 8) | ibuf[1];
-	sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL, "%s: Certificate object is of size: %d\n", fn_name, objlen);
-
-	if (objlen < 1 || objlen > 10240) {
-	    sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL, "%s: Invalid object size: %d\n", fn_name, objlen);
-	    return 0;
+	sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL,
+		 "Stored object is of size: %d\n", objlen);
+	if (objlen < 1 || objlen > GEMSAFE_MAX_OBJLEN) {
+	    sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL,
+		     "Invalid object size: %d\n", objlen);
+	    return SC_ERROR_INTERNAL;
 	}
 
-	/*
-	 * We need to find the private key associated with the cert
-	 * It looks like the first thing in the block is a table of
-	 * which keys are allocated. 
-	 * We will look for the first allocated key, and save the 
-	 * key_ref. The table is small and is in the first 248 bytes.
-	 * If for some reason this is not true, we can still override
-	 * the key_ref in the opensc.conf with flag = n.
+	/* It looks like the first thing in the block is a table of
+	 * which keys are allocated. The table is small and is in the
+	 * first 248 bytes. Example for a card with 10 key containers:
+	 * 01 f0 00 03 03 b0 00 03     <=  1st key unallocated
+	 * 01 f0 00 04 03 b0 00 04     <=  2nd key unallocated
+	 * 01 fe 14 00 05 03 b0 00 05  <=  3rd key allocated
+	 * 01 fe 14 01 06 03 b0 00 06  <=  4th key allocated
+	 * 01 f0 00 07 03 b0 00 07     <=  5th key unallocated
+	 * ...
+	 * 01 f0 00 0c 03 b0 00 0c     <= 10th key unallocated
+	 * For allocated keys, the fourth byte seems to indicate the
+	 * default key and the fifth byte indicates the key_ref of
+	 * the private key.
 	 */
 	ind = 2; /* skip length */
 	while (ibuf[ind] == 0x01) {
 		if (ibuf[ind+1] == 0xFE) {
-			*key_ref = ibuf[ind+4];
-			sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL, "Using key_ref %d found at offset %d\n",
-					*key_ref, ind);
-			break;
+			gemsafe_prkeys[i].ref = ibuf[ind+4];
+			sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL,
+				 "Key container %d is allocated and uses key_ref %d\n", i+1,
+				 gemsafe_prkeys[i].ref);
+			ind += 9;
+		} else {
+			gemsafe_prkeys[i].label = NULL;
+			gemsafe_cert[i].label = NULL;
+			sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL,
+				 "Key container %d is unallocated\n", i+1);
+			ind += 8;
 		}
-		ind = ind + 8;
+		i++;
 	}
 
-	/* Using (block+1) in while loop avoids using final cert object data block */
-	while (!found && ( (block+1) * 248 < objlen) ) {
-	    /* Check current buffer */
-	    for (i = 0; i < 247; i++) {
-	    	if (ibuf[i] == 0x30 && ibuf[i+1] == 0x82) {
-		    found = 1;
-		    break;
-		}
-	    }
+	/* Delete additional key containers from the data structures if
+	 * this card can't accomodate them.
+	 */
+	for (; i < gemsafe_cert_max; i++) {
+		gemsafe_prkeys[i].label = NULL;
+		gemsafe_cert[i].label = NULL;
+	}
 
-	    /* Grab another buffer */
-	    if (!found) {
-		block++;
-		offset = block*248;
-		r = sc_read_binary(card, offset, ibuf, 248, 0);
+	/* Read entire file, then dissect in memory.
+	 * Gemalto ClassicClient seems to do it the same way.
+	 */
+	iptr = ibuf + GEMSAFE_READ_QUANTUM;
+	while ((size_t)(iptr - ibuf) < objlen) {
+		r = sc_read_binary(card, iptr - ibuf, iptr,
+				   MIN(GEMSAFE_READ_QUANTUM, objlen - (iptr - ibuf)), 0);
 		if (r < 0) {
-		    sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL, "%s: Could not read cert object\n", fn_name);
-		    return 0;
+			sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL,
+				 "Could not read cert object\n");
+			return SC_ERROR_INTERNAL;
 		}
-	    }
-
+		iptr += GEMSAFE_READ_QUANTUM;
 	}
 
-	index_local = block*248 + i;
-
-	/* DER Cert len is encoded this way */
-	certlen = ((((size_t) ibuf[i+2]) << 8) | ibuf[i+3]) + 4;
-	sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL, "%s: certlen: %04X\n", fn_name, certlen);
-
-	path->index = index_local;
-	path->count = certlen;
+	/* Search buffer for certificates, they start with 0x3082. */
+	i = 0;
+	while (ind < objlen - 1) {
+		if (ibuf[ind] == 0x30 && ibuf[ind+1] == 0x82) {
+			/* Find next allocated key container */
+			while (i < gemsafe_cert_max && gemsafe_cert[i].label == NULL)
+				i++;
+			if (i == gemsafe_cert_max) {
+				sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL,
+					 "Warning: Found orphaned certificate at offset %d\n", ind);
+				return SC_SUCCESS;
+			}
+			/* DER cert len is encoded this way */
+			certlen = ((((size_t) ibuf[ind+2]) << 8) | ibuf[ind+3]) + 4;
+			sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL,
+				 "Found certificate of key container %d at offset %d, len %d\n",
+				 i+1, ind, certlen);
+			gemsafe_cert[i].index = ind;
+			gemsafe_cert[i].count = certlen;
+			ind += certlen;
+			i++;
+		} else
+			ind++;
+	}
 
-	return 1;
+	/* Delete additional key containers from the data structures if
+	 * they're missing on the card.
+	 */
+	for (; i < gemsafe_cert_max; i++) {
+		if (gemsafe_cert[i].label) {
+			sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL,
+				 "Warning: Certificate of key container %d is missing\n", i+1);
+			gemsafe_prkeys[i].label = NULL;
+			gemsafe_cert[i].label = NULL;
+		}
+	}
 
+	return SC_SUCCESS;
 }
 
 static int gemsafe_detect_card( sc_pkcs15_card_t *p15card)
@@ -212,142 +291,162 @@ static int gemsafe_detect_card( sc_pkcs15_card_t *p15card)
 	if (strcmp(p15card->card->name, "GemSAFE V1"))
 		return SC_ERROR_WRONG_CARD;
 
-    return SC_SUCCESS;
+	return SC_SUCCESS;
 }
 
 static int sc_pkcs15emu_gemsafeV1_init( sc_pkcs15_card_t *p15card)
 {
-    const char *fn_name = "sc_pkcs15emu_gemsafe_init";
-
-    int    r, i;
-	int	   key_ref = 0x03; 
-    struct sc_path path;
-    struct sc_file *file = NULL;
-    struct sc_card *card = p15card->card;
-    struct sc_apdu apdu;
-    u8     rbuf[SC_MAX_APDU_BUFFER_SIZE];
-
-    sc_debug(p15card->card->ctx, SC_LOG_DEBUG_NORMAL, "%s: Setting pkcs15 parameters\n", fn_name);
-
-    if (p15card->tokeninfo->label)
-    	free(p15card->tokeninfo->label);
-    p15card->tokeninfo->label = malloc(strlen(APPLET_NAME) + 1);
-    if (!p15card->tokeninfo->label)
-    	return SC_ERROR_INTERNAL;
-    strcpy(p15card->tokeninfo->label, APPLET_NAME);
-
-    if (p15card->tokeninfo->serial_number)
-	    free(p15card->tokeninfo->serial_number);
-    p15card->tokeninfo->serial_number = malloc(strlen(DRIVER_SERIAL_NUMBER) + 1);
-    if (!p15card->tokeninfo->serial_number)
-	    return SC_ERROR_INTERNAL;
-    strcpy(p15card->tokeninfo->serial_number, DRIVER_SERIAL_NUMBER);
-
-    /* the GemSAFE applet version number */
-    sc_format_apdu(card, &apdu, SC_APDU_CASE_2_SHORT, 0xca, 0xdf, 0x03);
-    apdu.cla = 0x80;
-    apdu.resp = rbuf;
-    apdu.resplen = sizeof(rbuf);
-    /* Manual says Le=0x05, but should be 0x08 to return full version numer */
-    apdu.le = 0x08;
-    apdu.lc = 0;
-    apdu.datalen = 0;
-    r = sc_transmit_apdu(card, &apdu);
-    SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, r, "APDU transmit failed");
-    if (apdu.sw1 != 0x90 || apdu.sw2 != 0x00)
-	    return SC_ERROR_INTERNAL;
-    if (r != SC_SUCCESS)
-	    return SC_ERROR_INTERNAL;
-
-    /* the manufacturer ID, in this case GemPlus */
-    if (p15card->tokeninfo->manufacturer_id)
-	    free(p15card->tokeninfo->manufacturer_id);
-    p15card->tokeninfo->manufacturer_id = malloc(strlen(MANU_ID) + 1);
-    if (!p15card->tokeninfo->manufacturer_id)
-	    return SC_ERROR_INTERNAL;
-    strcpy(p15card->tokeninfo->manufacturer_id, MANU_ID);
-
-    /* set certs */
-    sc_debug(p15card->card->ctx, SC_LOG_DEBUG_NORMAL, "%s: Setting certificate\n", fn_name);
-    for (i = 0; gemsafe_cert[i].label; i++) {
-	    struct sc_pkcs15_id  p15Id;
-
-	    sc_format_path(gemsafe_cert[i].path, &path);
-	    if (!gemsafe_get_cert_len(card, &path, &key_ref))
-		    /* skip errors */
-		    continue;
-	    sc_pkcs15_format_id(gemsafe_cert[i].id, &p15Id);
-	    sc_pkcs15emu_add_cert(p15card, SC_PKCS15_TYPE_CERT_X509,
-			    gemsafe_cert[i].authority, &path, &p15Id,
-			    gemsafe_cert[i].label, gemsafe_cert[i].obj_flags);
-    }
-    /* set gemsafe_pin */
-    sc_debug(p15card->card->ctx, SC_LOG_DEBUG_NORMAL, "%s: Setting PIN\n", fn_name);
-    for (i = 0; gemsafe_pin[i].label; i++) {
-	    struct sc_pkcs15_id  p15Id;
-
-	    sc_pkcs15_format_id(gemsafe_pin[i].id, &p15Id);
-	    sc_pkcs15emu_add_pin(p15card, &p15Id, gemsafe_pin[i].label,
-			    &path, gemsafe_pin[i].ref, gemsafe_pin[i].type,
-			    gemsafe_pin[i].minlen, gemsafe_pin[i].maxlen,
-			    gemsafe_pin[i].flags,
-			    gemsafe_pin[i].tries_left, gemsafe_pin[i].pad_char,
-			    gemsafe_pin[i].obj_flags);
-    }
-    /* set private keys */
-    sc_debug(p15card->card->ctx, SC_LOG_DEBUG_NORMAL, "%s: Setting private key\n", fn_name);
-    for (i = 0; gemsafe_prkeys[i].label; i++) {
-	    struct sc_pkcs15_id p15Id,
-				authId, *pauthId;
-	    sc_pkcs15_format_id(gemsafe_prkeys[i].id, &p15Id);
-	    if (gemsafe_prkeys[i].auth_id) {
-		    sc_pkcs15_format_id(gemsafe_prkeys[i].auth_id, &authId);
-		    pauthId = &authId;
-	    } else
-		    pauthId = NULL;
-			/*
-			 * the key ref may be different for different sites 
-			 * by adding flags=n where the low order 4 bits can be
-			 * the key ref we can force it. 
-			 */
-			if ( p15card->card->flags & 0x0F) {
-				key_ref = p15card->card->flags & 0x0F;
-				sc_debug(p15card->card->ctx, SC_LOG_DEBUG_NORMAL,
-					"Overriding key_ref  with %d\n", key_ref);
-			} 
-	    sc_pkcs15emu_add_prkey(p15card, &p15Id, gemsafe_prkeys[i].label,
-			    SC_PKCS15_TYPE_PRKEY_RSA,
-			    gemsafe_prkeys[i].modulus_len, gemsafe_prkeys[i].usage,
-			    &path, key_ref, pauthId,
-			    gemsafe_prkeys[i].obj_flags);
-    }
-
-    /* select the application DF */
-    sc_debug(p15card->card->ctx, SC_LOG_DEBUG_NORMAL,"%s: Selecting application DF\n", fn_name);
-    sc_format_path("3F001600", &path);
-    r = sc_select_file(card, &path, &file);
-    if (r != SC_SUCCESS || !file)
-	    return SC_ERROR_INTERNAL;
-    /* set the application DF */
-    if (p15card->file_app)
-	    free(p15card->file_app);
-    p15card->file_app = file;
+	int		    r;
+	unsigned int    i;
+	struct sc_path  path;
+	struct sc_file *file = NULL;
+	struct sc_card *card = p15card->card;
+	struct sc_apdu  apdu;
+	u8		    rbuf[SC_MAX_APDU_BUFFER_SIZE];
+
+	sc_debug(p15card->card->ctx, SC_LOG_DEBUG_NORMAL, "Setting pkcs15 parameters\n");
+
+	if (p15card->tokeninfo->label)
+		free(p15card->tokeninfo->label);
+	p15card->tokeninfo->label = malloc(strlen(APPLET_NAME) + 1);
+	if (!p15card->tokeninfo->label)
+		return SC_ERROR_INTERNAL;
+	strcpy(p15card->tokeninfo->label, APPLET_NAME);
+
+	if (p15card->tokeninfo->serial_number)
+		free(p15card->tokeninfo->serial_number);
+	p15card->tokeninfo->serial_number = malloc(strlen(DRIVER_SERIAL_NUMBER) + 1);
+	if (!p15card->tokeninfo->serial_number)
+		return SC_ERROR_INTERNAL;
+	strcpy(p15card->tokeninfo->serial_number, DRIVER_SERIAL_NUMBER);
+
+	/* the GemSAFE applet version number */
+	sc_format_apdu(card, &apdu, SC_APDU_CASE_2_SHORT, 0xca, 0xdf, 0x03);
+	apdu.cla = 0x80;
+	apdu.resp = rbuf;
+	apdu.resplen = sizeof(rbuf);
+	/* Manual says Le=0x05, but should be 0x08 to return full version numer */
+	apdu.le = 0x08;
+	apdu.lc = 0;
+	apdu.datalen = 0;
+	r = sc_transmit_apdu(card, &apdu);
+	SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, r, "APDU transmit failed");
+	if (apdu.sw1 != 0x90 || apdu.sw2 != 0x00)
+		return SC_ERROR_INTERNAL;
+	if (r != SC_SUCCESS)
+		return SC_ERROR_INTERNAL;
+
+	/* the manufacturer ID, in this case GemPlus */
+	if (p15card->tokeninfo->manufacturer_id)
+		free(p15card->tokeninfo->manufacturer_id);
+	p15card->tokeninfo->manufacturer_id = malloc(strlen(MANU_ID) + 1);
+	if (!p15card->tokeninfo->manufacturer_id)
+		return SC_ERROR_INTERNAL;
+	strcpy(p15card->tokeninfo->manufacturer_id, MANU_ID);
+
+	/* determine allocated key containers and length of certificates */
+	r = gemsafe_get_cert_len(card);
+	if (r != SC_SUCCESS)
+		return SC_ERROR_INTERNAL;
+
+	/* set certs */
+	sc_debug(p15card->card->ctx, SC_LOG_DEBUG_NORMAL, "Setting certificates\n");
+	for (i = 0; i < gemsafe_cert_max; i++) {
+		struct sc_pkcs15_id p15Id;
+		struct sc_path path;
+
+		if (gemsafe_cert[i].label == NULL)
+			continue;
+		sc_format_path(gemsafe_cert[i].path, &path);
+		sc_pkcs15_format_id(gemsafe_cert[i].id, &p15Id);
+		path.index = gemsafe_cert[i].index;
+		path.count = gemsafe_cert[i].count;
+		sc_pkcs15emu_add_cert(p15card, SC_PKCS15_TYPE_CERT_X509,
+				      gemsafe_cert[i].authority, &path, &p15Id,
+				      gemsafe_cert[i].label, gemsafe_cert[i].obj_flags);
+	}
 
-    return SC_SUCCESS;
+	/* set gemsafe_pin */
+	sc_debug(p15card->card->ctx, SC_LOG_DEBUG_NORMAL, "Setting PIN\n");
+	for (i=0; i < gemsafe_pin_max; i++) {
+		struct sc_pkcs15_id	p15Id;
+		struct sc_path path;
+
+		sc_pkcs15_format_id(gemsafe_pin[i].id, &p15Id);
+		sc_format_path(gemsafe_pin[i].path, &path);
+		if (gemsafe_pin[i].atr_len == 0 ||
+		   (gemsafe_pin[i].atr_len == p15card->card->atr.len &&
+		    memcmp(p15card->card->atr.value, gemsafe_pin[i].atr,
+			   p15card->card->atr.len) == 0)) {
+			sc_pkcs15emu_add_pin(p15card, &p15Id, gemsafe_pin[i].label,
+					     &path, gemsafe_pin[i].ref, gemsafe_pin[i].type,
+					     gemsafe_pin[i].minlen, gemsafe_pin[i].maxlen,
+					     gemsafe_pin[i].flags, gemsafe_pin[i].tries_left,
+					     gemsafe_pin[i].pad_char, gemsafe_pin[i].obj_flags);
+			break;
+		}
+	};
+
+	/* set private keys */
+	sc_debug(p15card->card->ctx, SC_LOG_DEBUG_NORMAL, "Setting private keys\n");
+	for (i = 0; i < gemsafe_cert_max; i++) {
+		struct sc_pkcs15_id p15Id, authId, *pauthId;
+		struct sc_path path;
+		int key_ref = 0x03; 
+
+		if (gemsafe_prkeys[i].label == NULL)
+			continue;
+		sc_pkcs15_format_id(gemsafe_prkeys[i].id, &p15Id);
+		if (gemsafe_prkeys[i].auth_id) {
+			sc_pkcs15_format_id(gemsafe_prkeys[i].auth_id, &authId);
+			pauthId = &authId;
+		} else
+			pauthId = NULL;
+		sc_format_path(gemsafe_prkeys[i].path, &path);
+		/* 
+		 * The key ref may be different for different sites;
+		 * by adding flags=n where the low order 4 bits can be
+		 * the key ref we can force it.
+		 */
+		if ( p15card->card->flags & 0x0F) {
+			key_ref = p15card->card->flags & 0x0F;
+			sc_debug(p15card->card->ctx, SC_LOG_DEBUG_NORMAL,
+				 "Overriding key_ref %d with %d\n",
+				 gemsafe_prkeys[i].ref, key_ref);
+		} else
+			key_ref = gemsafe_prkeys[i].ref;
+		sc_pkcs15emu_add_prkey(p15card, &p15Id, gemsafe_prkeys[i].label,
+				       SC_PKCS15_TYPE_PRKEY_RSA,
+				       gemsafe_prkeys[i].modulus_len, gemsafe_prkeys[i].usage,
+				       &path, key_ref, pauthId,
+				       gemsafe_prkeys[i].obj_flags);
+	}
 
+	/* select the application DF */
+	sc_debug(p15card->card->ctx, SC_LOG_DEBUG_NORMAL,"Selecting application DF\n");
+	sc_format_path(GEMSAFE_APP_PATH, &path);
+	r = sc_select_file(card, &path, &file);
+	if (r != SC_SUCCESS || !file)
+		return SC_ERROR_INTERNAL;
+	/* set the application DF */
+	if (p15card->file_app)
+		free(p15card->file_app);
+	p15card->file_app = file;
+
+	return SC_SUCCESS;
 }
 
 int sc_pkcs15emu_gemsafeV1_init_ex( sc_pkcs15_card_t *p15card,
 			sc_pkcs15emu_opt_t *opts)
 {
-    if (opts && opts->flags & SC_PKCS15EMU_FLAGS_NO_CHECK)
-	    return sc_pkcs15emu_gemsafeV1_init(p15card);
-    else {
-	    int r = gemsafe_detect_card(p15card);
-	    if (r)
-		    return SC_ERROR_WRONG_CARD;
-	    return sc_pkcs15emu_gemsafeV1_init(p15card);
-    }
+	if (opts && opts->flags & SC_PKCS15EMU_FLAGS_NO_CHECK)
+		return sc_pkcs15emu_gemsafeV1_init(p15card);
+	else {
+		int r = gemsafe_detect_card(p15card);
+		if (r)
+			return SC_ERROR_WRONG_CARD;
+		return sc_pkcs15emu_gemsafeV1_init(p15card);
+	}
 }
 
 static sc_pkcs15_df_t *
@@ -462,7 +561,6 @@ sc_pkcs15emu_add_cert(sc_pkcs15_card_t *p15card,
 		const sc_pkcs15_id_t *id,
                 const char *label, int obj_flags)
 {
-	/* const char *label = "Certificate"; */
 	sc_pkcs15_cert_info_t *info;
 	info = calloc(1, sizeof(*info));
 	info->id		= *id;
diff --git a/src/libopensc/pkcs15-oberthur.c b/src/libopensc/pkcs15-oberthur.c
index b723111..bbdd14f 100644
--- a/src/libopensc/pkcs15-oberthur.c
+++ b/src/libopensc/pkcs15-oberthur.c
@@ -199,14 +199,14 @@ sc_oberthur_get_certificate_authority(struct sc_pkcs15_der *der, int *out_author
 
 	buf_mem.data = malloc(der->len);
 	if (!buf_mem.data)
-		return SC_ERROR_MEMORY_FAILURE;
+		return SC_ERROR_OUT_OF_MEMORY;
 
 	memcpy(buf_mem.data, der->value, der->len);
 	buf_mem.max = buf_mem.length = der->len;
 
    	bio = BIO_new(BIO_s_mem());
 	if(!bio)
-		return SC_ERROR_MEMORY_FAILURE;
+		return SC_ERROR_OUT_OF_MEMORY;
 	
 	BIO_set_mem_buf(bio, &buf_mem, BIO_NOCLOSE);
 	x = d2i_X509_bio(bio, 0);
@@ -259,7 +259,7 @@ sc_oberthur_read_file(struct sc_pkcs15_card *p15card, const char *in_path,
 	
 	*out = calloc(sz, 1);
 	if (*out == NULL)
-		SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, SC_ERROR_MEMORY_FAILURE, "Cannot read oberthur file");
+		SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, SC_ERROR_OUT_OF_MEMORY, "Cannot read oberthur file");
 
 	if (file->ef_structure == SC_FILE_EF_TRANSPARENT)   {
 		rv = sc_read_binary(card, 0, *out, sz, 0);
@@ -395,7 +395,7 @@ sc_oberthur_parse_containers (struct sc_pkcs15_card *p15card,
 		
 		cont = (struct container *)calloc(sizeof(struct container), 1);
 		if (!cont)
-			return SC_ERROR_MEMORY_FAILURE;
+			return SC_ERROR_OUT_OF_MEMORY;
 		
 		cont->exchange.id_pub = *ptr * 0x100 + *(ptr + 1);  ptr += 2;
 		cont->exchange.id_prv = *ptr * 0x100 + *(ptr + 1);  ptr += 2;
@@ -787,7 +787,7 @@ sc_pkcs15emu_oberthur_add_prvkey(struct sc_pkcs15_card *p15card,
 	if (len)   {
 		kinfo.subject.value = malloc(len);
 		if (!kinfo.subject.value)
-			SC_TEST_RET(ctx, SC_LOG_DEBUG_NORMAL, SC_ERROR_MEMORY_FAILURE, "Failed to add private key: memory allocation error");
+			SC_TEST_RET(ctx, SC_LOG_DEBUG_NORMAL, SC_ERROR_OUT_OF_MEMORY, "Failed to add private key: memory allocation error");
 		kinfo.subject.len = len;
 		memcpy(kinfo.subject.value, info_blob + offs + 2, len);
 	}
diff --git a/src/libopensc/pkcs15-openpgp.c b/src/libopensc/pkcs15-openpgp.c
index d9dc074..4daaa98 100644
--- a/src/libopensc/pkcs15-openpgp.c
+++ b/src/libopensc/pkcs15-openpgp.c
@@ -31,10 +31,6 @@
 #include "pkcs15.h"
 #include "log.h"
 
-#ifdef _WIN32
-typedef USHORT ushort;
-#endif
-
 int sc_pkcs15emu_openpgp_init_ex(sc_pkcs15_card_t *, sc_pkcs15emu_opt_t *);
 
 
@@ -100,7 +96,7 @@ static const pgp_key_cfg_t key_cfg[3] = {
 
 
 typedef struct _pgp_manuf_map {
-	ushort		id;
+	unsigned short		id;
 	const char	*name;
 } pgp_manuf_map_t;
 
@@ -164,7 +160,7 @@ sc_pkcs15emu_openpgp_init(sc_pkcs15_card_t *p15card)
 
 	/* card->serialnr = 2 byte manufacturer_id + 4 byte serial_number */
 	if (card->serialnr.len > 0) {
-		ushort manuf_id = bebytes2ushort(card->serialnr.value);
+		unsigned short manuf_id = bebytes2ushort(card->serialnr.value);
 		int j;
 
 		sc_bin_to_hex(card->serialnr.value, card->serialnr.len, string, sizeof(string)-1, 0);
diff --git a/src/libopensc/pkcs15-pin.c b/src/libopensc/pkcs15-pin.c
index 6604c32..9ae0740 100644
--- a/src/libopensc/pkcs15-pin.c
+++ b/src/libopensc/pkcs15-pin.c
@@ -138,7 +138,7 @@ int sc_pkcs15_decode_aodf_entry(struct sc_pkcs15_card *p15card,
 	SC_TEST_RET(ctx, SC_LOG_DEBUG_NORMAL, r, "ASN.1 decoding failed");
 
 	if (asn1_auth_type_choice[0].flags & SC_ASN1_PRESENT)   {
-		sc_debug(ctx, SC_LOG_DEBUG_NORMAL, "AuthType: PIN");
+		sc_log(ctx, "AuthType: PIN");
 		obj->type = SC_PKCS15_TYPE_AUTH_PIN;
 		info.auth_type = SC_PKCS15_PIN_AUTH_TYPE_PIN;
 		info.auth_method = SC_AC_CHV;
@@ -178,7 +178,7 @@ int sc_pkcs15_decode_aodf_entry(struct sc_pkcs15_card *p15card,
 		SC_TEST_RET(ctx, SC_LOG_DEBUG_NORMAL, SC_ERROR_NOT_SUPPORTED, "BIO authentication object not yet supported");
 	}
 	else if (asn1_auth_type_choice[2].flags & SC_ASN1_PRESENT)   {
-		sc_debug(ctx, SC_LOG_DEBUG_NORMAL, "AuthType: AuthKey");
+		sc_log(ctx, "AuthType: AuthKey");
 		obj->type = SC_PKCS15_TYPE_AUTH_AUTHKEY;
 		info.auth_type = SC_PKCS15_PIN_AUTH_TYPE_AUTH_KEY;
 		info.auth_method = SC_AC_AUT;
@@ -290,13 +290,11 @@ int sc_pkcs15_verify_pin(struct sc_pkcs15_card *p15card,
 	sc_card_t *card;
 	struct sc_pin_cmd_data data;
 
-	SC_FUNC_CALLED(ctx, SC_LOG_DEBUG_NORMAL);
-	sc_debug(ctx, SC_LOG_DEBUG_NORMAL, "PIN(%p;len:%i)", pincode, pinlen);
-	sc_debug(ctx, SC_LOG_DEBUG_NORMAL, "Auth(type:%X;method:%X)", auth_info->auth_type, auth_info->auth_method);
+	LOG_FUNC_CALLED(ctx);
+	sc_log(ctx, "PIN(type:%X;method:%X;len:)", auth_info->auth_type, auth_info->auth_method, pinlen);
 
-	r = _validate_pin(p15card, auth_info, pinlen);
-	SC_TEST_RET(ctx, SC_LOG_DEBUG_NORMAL, r, "PIN value do not conforms the PIN policy");
-	sc_debug(ctx, SC_LOG_DEBUG_NORMAL, "PIN value validated");
+	if (pinlen > SC_MAX_PIN_SIZE)
+		LOG_TEST_RET(ctx, SC_ERROR_INVALID_PIN_LENGTH, "Invalid PIN size");
 
 	card = p15card->card;
 
@@ -336,12 +334,12 @@ int sc_pkcs15_verify_pin(struct sc_pkcs15_card *p15card,
 
 		r = sc_pkcs15_find_skey_by_id(p15card, skey_id, &skey_obj);
 		if (r)   {
-			sc_debug(ctx, SC_LOG_DEBUG_NORMAL, "cannot find secret key with id:%s", sc_pkcs15_print_id(skey_id));
-			SC_FUNC_RETURN(ctx, SC_LOG_DEBUG_NORMAL, r);
+			sc_log(ctx, "cannot find secret key with id:%s", sc_pkcs15_print_id(skey_id));
+			LOG_FUNC_RETURN(ctx, r);
 		}
 		skey_info = (struct sc_pkcs15_skey_info *)skey_obj->data;
 
-		sc_debug(ctx, SC_LOG_DEBUG_NORMAL, "found secret key '%s'", skey_obj->label);
+		sc_log(ctx, "found secret key '%s'", skey_obj->label);
 		data.pin_reference = skey_info->key_reference;
 	}
 
@@ -355,7 +353,8 @@ int sc_pkcs15_verify_pin(struct sc_pkcs15_card *p15card,
 	}
 
 	r = sc_lock(card);
-	SC_TEST_RET(ctx, SC_LOG_DEBUG_NORMAL, r, "sc_lock() failed");
+	LOG_TEST_RET(ctx, r, "sc_lock() failed");
+
 	/* the path in the pin object is optional */
 	if (auth_info->path.len > 0) {
 		r = sc_select_file(card, &auth_info->path, NULL);
@@ -364,12 +363,12 @@ int sc_pkcs15_verify_pin(struct sc_pkcs15_card *p15card,
 	}
 
 	r = sc_pin_cmd(card, &data, &auth_info->tries_left);
-	sc_debug(ctx, SC_LOG_DEBUG_NORMAL, "PIN cmd result %i", r);
+	sc_log(ctx, "PIN cmd result %i", r);
 	if (r == SC_SUCCESS)
 		sc_pkcs15_pincache_add(p15card, pin_obj, pincode, pinlen);
 out:
 	sc_unlock(card);
-	SC_FUNC_RETURN(ctx, SC_LOG_DEBUG_NORMAL, r);
+	LOG_FUNC_RETURN(ctx, r);
 }
 
 /*
@@ -380,23 +379,26 @@ int sc_pkcs15_change_pin(struct sc_pkcs15_card *p15card,
 			 const u8 *oldpin, size_t oldpinlen,
 			 const u8 *newpin, size_t newpinlen)
 {
-	int r;
-	sc_card_t *card;
+	struct sc_context *ctx = p15card->card->ctx;
 	struct sc_pin_cmd_data data;
 	struct sc_pkcs15_auth_info *auth_info = (struct sc_pkcs15_auth_info *)pin_obj->data;
+	struct sc_card *card = p15card->card;
+	int r;
 
+	LOG_FUNC_CALLED(ctx);
 	if (auth_info->auth_type != SC_PKCS15_PIN_AUTH_TYPE_PIN)
-		return SC_ERROR_NOT_SUPPORTED;
+		LOG_FUNC_RETURN(ctx, SC_ERROR_NOT_SUPPORTED);
 
 	/* make sure the pins are in valid range */
-	if ((r = _validate_pin(p15card, auth_info, oldpinlen)) != SC_SUCCESS)
-		return r;
-	if ((r = _validate_pin(p15card, auth_info, newpinlen)) != SC_SUCCESS)
-		return r;
+	r = _validate_pin(p15card, auth_info, oldpinlen);
+	LOG_TEST_RET(ctx, r, "Old PIN value do not conform PIN policy");
+
+	r = _validate_pin(p15card, auth_info, newpinlen);
+	LOG_TEST_RET(ctx, r, "New PIN value do not conform PIN policy");
 
 	card = p15card->card;
 	r = sc_lock(card);
-	SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, r, "sc_lock() failed");
+	LOG_TEST_RET(ctx, r, "sc_lock() failed");
 	/* the path in the pin object is optional */
 	if (auth_info->path.len > 0) {
 		r = sc_select_file(card, &auth_info->path, NULL);
@@ -442,7 +444,8 @@ int sc_pkcs15_change_pin(struct sc_pkcs15_card *p15card,
 		if (auth_info->attrs.pin.flags & SC_PKCS15_PIN_FLAG_SO_PIN) {
 			data.pin1.prompt = "Please enter SO PIN";
 			data.pin2.prompt = "Please enter new SO PIN";
-		} else {
+		}
+		else {
 			data.pin1.prompt = "Please enter PIN";
 			data.pin2.prompt = "Please enter new PIN";
 		}
@@ -465,21 +468,22 @@ int sc_pkcs15_unblock_pin(struct sc_pkcs15_card *p15card,
 			 const u8 *puk, size_t puklen,
 			 const u8 *newpin, size_t newpinlen)
 {
-	int r;
-	sc_card_t *card;
+	struct sc_context *ctx = p15card->card->ctx;
 	struct sc_pin_cmd_data data;
 	struct sc_pkcs15_object *puk_obj;
 	struct sc_pkcs15_auth_info *puk_info = NULL;
 	struct sc_pkcs15_auth_info *auth_info = (struct sc_pkcs15_auth_info *)pin_obj->data;
+	struct sc_card *card = p15card->card;
+	int r;
 
+	LOG_FUNC_CALLED(ctx);
 	if (auth_info->auth_type != SC_PKCS15_PIN_AUTH_TYPE_PIN)
-		return SC_ERROR_NOT_SUPPORTED;
+		LOG_FUNC_RETURN(ctx, SC_ERROR_NOT_SUPPORTED);
 
 	/* make sure the pins are in valid range */
-	if ((r = _validate_pin(p15card, auth_info, newpinlen)) != SC_SUCCESS)
-		return r;
+	r = _validate_pin(p15card, auth_info, newpinlen);
+	LOG_TEST_RET(ctx, r, "New PIN value do not conform PIN policy");
 
-	card = p15card->card;
 	/* get pin_info object of the puk (this is a little bit complicated
 	 * as we don't have the id of the puk (at least now))
 	 * note: for compatibility reasons we give no error if no puk object
@@ -490,22 +494,23 @@ int sc_pkcs15_unblock_pin(struct sc_pkcs15_card *p15card,
 		/* second step:  get the pkcs15 info object of the puk */
 		puk_info = (struct sc_pkcs15_auth_info *)puk_obj->data;
 	}
+
 	if (!puk_info) {
-		sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL, "Unable to get puk object, using pin object instead!");
+		sc_log(ctx, "Unable to get puk object, using pin object instead!");
 		puk_info = auth_info;
 
 		/* make sure the puk is in valid range */
 		r = _validate_pin(p15card, puk_info, puklen);
-		if (r != SC_SUCCESS)
-			return r;
+		LOG_TEST_RET(ctx, r, "PIN do not conforms PIN policy");
 	}
 	else   {
 		r = sc_pkcs15_verify_pin(p15card, puk_obj, puk, puklen);
-		SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, r, "cannot verify PUK");
+		LOG_TEST_RET(ctx, r, "cannot verify PUK");
 	}
 
 	r = sc_lock(card);
-	SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, r, "sc_lock() failed");
+	LOG_TEST_RET(ctx, r, "sc_lock() failed");
+
 	/* the path in the pin object is optional */
 	if (auth_info->path.len > 0) {
 		r = sc_select_file(card, &auth_info->path, NULL);
@@ -557,7 +562,8 @@ int sc_pkcs15_unblock_pin(struct sc_pkcs15_card *p15card,
 		if (auth_info->attrs.pin.flags & SC_PKCS15_PIN_FLAG_SO_PIN) {
 			data.pin1.prompt = "Please enter PUK";
 			data.pin2.prompt = "Please enter new SO PIN";
-		} else {
+		}
+		else {
 			data.pin1.prompt = "Please enter PUK";
 			data.pin2.prompt = "Please enter new PIN";
 		}
@@ -569,9 +575,10 @@ int sc_pkcs15_unblock_pin(struct sc_pkcs15_card *p15card,
 
 out:
 	sc_unlock(card);
-	return r;
+	LOG_FUNC_RETURN(ctx, r);
 }
 
+
 void sc_pkcs15_free_auth_info(sc_pkcs15_auth_info_t *auth_info)
 {
 	free(auth_info);
@@ -587,14 +594,14 @@ void sc_pkcs15_pincache_add(struct sc_pkcs15_card *p15card, struct sc_pkcs15_obj
 	struct sc_pkcs15_object *obj = NULL;
 	int r;
 
-	SC_FUNC_CALLED(ctx, SC_LOG_DEBUG_NORMAL);
+	LOG_FUNC_CALLED(ctx);
 
 	if (!p15card->opts.use_pin_cache)   {
-		sc_debug(ctx, SC_LOG_DEBUG_NORMAL, "PIN caching not enabled");
+		sc_log(ctx, "PIN caching not enabled");
 		return;
 	}
 	else if (auth_info->auth_type != SC_PKCS15_PIN_AUTH_TYPE_PIN)   {
-		sc_debug(ctx, SC_LOG_DEBUG_NORMAL, "only 'PIN' auth. object can be cached");
+		sc_log(ctx, "only 'PIN' auth. object can be cached");
 		return;
 	}
 
@@ -611,7 +618,7 @@ void sc_pkcs15_pincache_add(struct sc_pkcs15_card *p15card, struct sc_pkcs15_obj
 			/* Caching is refused, if the protected object requires user consent */
 		    if (!p15card->opts.pin_cache_ignore_user_consent) {
 			if (obj->user_consent > 0) {
-				sc_debug(ctx, SC_LOG_DEBUG_NORMAL, "caching refused (user consent)");
+				sc_log(ctx, "caching refused (user consent)");
 				return;
 			}
 		    }
@@ -622,12 +629,12 @@ void sc_pkcs15_pincache_add(struct sc_pkcs15_card *p15card, struct sc_pkcs15_obj
 
 	r = sc_pkcs15_allocate_object_content(ctx, pin_obj, pin, pinlen);
 	if (r != SC_SUCCESS)   {
-		sc_debug(ctx, SC_LOG_DEBUG_NORMAL, "Failed to allocate object content");
+		sc_log(ctx, "Failed to allocate object content");
 		return;
 	}
 
 	pin_obj->usage_counter = 0;
-	sc_debug(ctx, SC_LOG_DEBUG_NORMAL, "PIN(%s) cached", pin_obj->label);
+	sc_log(ctx, "PIN(%s) cached", pin_obj->label);
 }
 
 /* Validate the PIN code associated with an object */
@@ -637,12 +644,12 @@ int sc_pkcs15_pincache_revalidate(struct sc_pkcs15_card *p15card, const sc_pkcs1
 	sc_pkcs15_object_t *pin_obj;
 	int r;
 
-	SC_FUNC_CALLED(ctx, SC_LOG_DEBUG_NORMAL);
-
+	LOG_FUNC_CALLED(ctx);
 	if (!p15card->opts.use_pin_cache)
 		return SC_ERROR_SECURITY_STATUS_NOT_SATISFIED;
 
-/*  Apps that do not support CK_ALWAYS_AUTHENTICATE may need pin_cache_ignore_user_consent = 1 */
+	/*  Apps that do not support CK_ALWAYS_AUTHENTICATE
+	 *  may need pin_cache_ignore_user_consent = 1 */
 	if (!p15card->opts.pin_cache_ignore_user_consent) {
 	    if (obj->user_consent)
 		return SC_ERROR_SECURITY_STATUS_NOT_SATISFIED;
@@ -653,7 +660,7 @@ int sc_pkcs15_pincache_revalidate(struct sc_pkcs15_card *p15card, const sc_pkcs1
 
 	r = sc_pkcs15_find_pin_by_auth_id(p15card, &obj->auth_id, &pin_obj);
 	if (r != SC_SUCCESS) {
-		sc_debug(ctx, SC_LOG_DEBUG_NORMAL, "Could not find pin object for auth_id %s", sc_pkcs15_print_id(&obj->auth_id));
+		sc_log(ctx, "Could not find pin object for auth_id %s", sc_pkcs15_print_id(&obj->auth_id));
 		return SC_ERROR_SECURITY_STATUS_NOT_SATISFIED;
 	}
 
@@ -671,11 +678,11 @@ int sc_pkcs15_pincache_revalidate(struct sc_pkcs15_card *p15card, const sc_pkcs1
 		/* Ensure that wrong PIN isn't used again */
 		sc_pkcs15_free_object_content(pin_obj);
 
-		sc_debug(ctx, SC_LOG_DEBUG_NORMAL, "Verify PIN error %i", r);
+		sc_log(ctx, "Verify PIN error %i", r);
 		return SC_ERROR_SECURITY_STATUS_NOT_SATISFIED;
 	}
 
-	SC_FUNC_RETURN(ctx, SC_LOG_DEBUG_VERBOSE, SC_SUCCESS);
+	LOG_FUNC_RETURN(ctx, SC_SUCCESS);
 }
 
 void sc_pkcs15_pincache_clear(struct sc_pkcs15_card *p15card)
diff --git a/src/libopensc/pkcs15-piv.c b/src/libopensc/pkcs15-piv.c
index a564d24..7f46598 100644
--- a/src/libopensc/pkcs15-piv.c
+++ b/src/libopensc/pkcs15-piv.c
@@ -102,6 +102,7 @@ typedef struct common_key_info_st {
 	int pubkey_from_file;
 	int key_alg;
 	unsigned int pubkey_len;
+	struct sc_pkcs15_pubkey *pubkey_from_cert;
 	int not_present;
 } common_key_info;
 
@@ -119,17 +120,17 @@ typedef struct common_key_info_st {
  */
 
 static int piv_get_guid(struct sc_pkcs15_card *p15card, const struct sc_pkcs15_object *obj,
-		char *out, size_t out_size)
+		unsigned char *out, size_t *out_size)
 {
 	struct sc_serial_number serialnr;
 	struct sc_pkcs15_id  id;
 	unsigned char guid_bin[SC_PKCS15_MAX_ID_SIZE + SC_MAX_SERIALNR];
-	size_t bin_size, offs, tlen;
-	int r, i;
+	size_t bin_size, offs, tlen, i;
+	int r;
 	unsigned char fbit, fbits, fbyte, fbyte2, fnibble;
 	unsigned char *f5p, *f8p;
 
-	if (!p15card || !obj || !out || out_size < 3)
+	if (!p15card || !obj || !out || *out_size < 3)
 		return SC_ERROR_INCORRECT_PARAMETERS;
 
 	r = sc_pkcs15_get_object_id(obj, &id);
@@ -141,7 +142,7 @@ static int piv_get_guid(struct sc_pkcs15_card *p15card, const struct sc_pkcs15_o
 		return r;
 
 	memset(guid_bin, 0, sizeof(guid_bin));
-	memset(out, 0, out_size);
+	memset(out, 0, *out_size);
 
 	if (id.len == 1 && serialnr.len == 25) {
 
@@ -211,14 +212,14 @@ static int piv_get_guid(struct sc_pkcs15_card *p15card, const struct sc_pkcs15_o
 	}
 
 	/* reserve one byte for the 'C' line ending */
-	bin_size = (out_size - 1)/2;
+	bin_size = (*out_size - 1)/2;
 	if (bin_size > tlen)
 		bin_size = tlen;
 
 	offs = tlen - bin_size;
 
 	for (i=0; i<bin_size; i++)
-		sprintf(out + i*2, "%02x", guid_bin[offs + i]);
+		sprintf((char *) out + i*2, "%02x", guid_bin[offs + i]);
 
 	return SC_SUCCESS;
 }
@@ -609,6 +610,8 @@ static int sc_pkcs15emu_piv_init(sc_pkcs15_card_t *p15card)
 
 	SC_FUNC_CALLED(card->ctx, SC_LOG_DEBUG_VERBOSE);
 
+	memset(&serial, 0, sizeof(serial));
+
 	/* could read this off card if needed */
 
 	/* CSP does not like a - in the name */
@@ -703,6 +706,7 @@ static int sc_pkcs15emu_piv_init(sc_pkcs15_card_t *p15card)
 		ckis[i].pubkey_found = 0;
 		ckis[i].pubkey_from_file = 0;
 		ckis[i].pubkey_len = 0;
+		ckis[i].pubkey_from_cert = NULL;
 
 		memset(&cert_info, 0, sizeof(cert_info));
 		memset(&cert_obj,  0, sizeof(cert_obj));
@@ -755,6 +759,8 @@ static int sc_pkcs15emu_piv_init(sc_pkcs15_card_t *p15card)
 				sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL, "Unsuported key.algorithm %d", cert_out->key->algorithm);
 				ckis[i].pubkey_len = 0; /* set some value for now */
 		}
+		ckis[i].pubkey_from_cert = cert_out->key;
+		cert_out->key = NULL;
 		sc_pkcs15_free_certificate(cert_out);
 
 		r = sc_pkcs15emu_add_x509_cert(p15card, &cert_obj, &cert_info);
@@ -869,11 +875,13 @@ sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL, "DEE Adding pin %d label=%s",i, label);
 			
 			sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL,"Adding pubkey from file %s",filename);
 
-			r = sc_pkcs15_pubkey_from_spki_filename(card->ctx, 
-						filename,
-						&p15_key);
+			r = sc_pkcs15_pubkey_from_spki_file(card->ctx,  filename, &p15_key);
 			if (r < 0) 
 				continue;
+
+			/* Lets also try another method. */
+			r = sc_pkcs15_encode_pubkey_as_spki(card->ctx, p15_key, &pubkey_info.direct.spki.value, &pubkey_info.direct.spki.len);
+        		LOG_TEST_RET(card->ctx, r, "SPKI encode public key error");
 			
 			/* Only get here if no cert, and the the above found the
 			 * pub key file (actually the SPKI version). This only 
@@ -906,6 +914,12 @@ sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL, "DEE Adding pin %d label=%s",i, label);
 			pubkey_obj.emulated = p15_key;
 			p15_key = NULL;
 		}
+		else if (ckis[i].pubkey_from_cert)   {
+			r = sc_pkcs15_encode_pubkey_as_spki(card->ctx, ckis[i].pubkey_from_cert, &pubkey_info.direct.spki.value, &pubkey_info.direct.spki.len);
+        		LOG_TEST_RET(card->ctx, r, "SPKI encode public key error");
+
+			pubkey_obj.emulated = ckis[i].pubkey_from_cert;
+		}
 
 		sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL,"adding pubkey for %d keyalg=%d",i, ckis[i].key_alg);
 		switch (ckis[i].key_alg) {
diff --git a/src/libopensc/pkcs15-prkey.c b/src/libopensc/pkcs15-prkey.c
index a057044..7b8a6af 100644
--- a/src/libopensc/pkcs15-prkey.c
+++ b/src/libopensc/pkcs15-prkey.c
@@ -592,6 +592,8 @@ void sc_pkcs15_free_prkey_info(sc_pkcs15_prkey_info_t *key)
 {
 	if (key->subject.value)
 		free(key->subject.value);
+	if (key->cmap_record.guid)
+		free(key->cmap_record.guid);
 
 	sc_pkcs15_free_key_params(&key->params);
 
diff --git a/src/libopensc/pkcs15-pteid.c b/src/libopensc/pkcs15-pteid.c
index a2e7199..028ef27 100644
--- a/src/libopensc/pkcs15-pteid.c
+++ b/src/libopensc/pkcs15-pteid.c
@@ -2,7 +2,7 @@
  * PKCS15 emulation layer for Portugal eID card.
  *
  * Copyright (C) 2009, Joao Poupino <joao.poupino at ist.utl.pt>
- * Copyright (C) 2004, Martin Paljak <martin at paljak.pri.ee>
+ * Copyright (C) 2004, Martin Paljak <martin at martinpaljak.net>
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
@@ -226,7 +226,6 @@ static int sc_pkcs15emu_pteid_init(sc_pkcs15_card_t * p15card)
 	/* Add objects */
 	for (i = 0; i < 3; i++) {
 		static const char *object_ids[3] = {"1", "2", "3"};
-		static const char *object_oids[3] = {"-1", "-1", "-1"};
 		static const char *object_labels[3] = {"Citizen Data",
 											   "Citizen Address Data",
 											   "Citizen Notepad"};
@@ -245,9 +244,6 @@ static int sc_pkcs15emu_pteid_init(sc_pkcs15_card_t * p15card)
 
 		sc_pkcs15_format_id(object_ids[i], &obj_info.id);
 		sc_format_path(object_paths[i], &obj_info.path);
-		r = sc_format_oid(&obj_info.app_oid, object_oids[i]);
-		if (r != SC_SUCCESS)
-			goto end;
 		strlcpy(obj_info.app_label, object_labels[i], SC_PKCS15_MAX_LABEL_SIZE);
 		if (object_authids[i] != NULL)
 			sc_pkcs15_format_id(object_authids[i], &obj_obj.auth_id);
diff --git a/src/libopensc/pkcs15-pubkey.c b/src/libopensc/pkcs15-pubkey.c
index d1f03ab..d240621 100644
--- a/src/libopensc/pkcs15-pubkey.c
+++ b/src/libopensc/pkcs15-pubkey.c
@@ -36,126 +36,175 @@
 #include <openssl/evp.h>
 #include <openssl/err.h>
 #if OPENSSL_VERSION_NUMBER >= 0x10000000L
-	#ifndef OPENSSL_NO_EC
-	#include <openssl/ec.h>
-	#endif
+#ifndef OPENSSL_NO_EC
+#include <openssl/ec.h>
+#endif
 #endif
 #endif
 
 #define C_ASN1_PKINFO_ATTR_SIZE 3
 static const struct sc_asn1_entry c_asn1_pkinfo[C_ASN1_PKINFO_ATTR_SIZE] = {
-	{ "algorithm", SC_ASN1_ALGORITHM_ID,  SC_ASN1_TAG_SEQUENCE | SC_ASN1_CONS, 0, NULL, NULL },
-	{ "subjectPublicKey", SC_ASN1_BIT_STRING_NI, SC_ASN1_TAG_BIT_STRING, SC_ASN1_ALLOC, NULL, NULL},
-	{ NULL, 0, 0, 0, NULL, NULL }
+		{ "algorithm", SC_ASN1_ALGORITHM_ID,  SC_ASN1_TAG_SEQUENCE | SC_ASN1_CONS, 0, NULL, NULL },
+		{ "subjectPublicKey", SC_ASN1_BIT_STRING_NI, SC_ASN1_TAG_BIT_STRING, SC_ASN1_ALLOC, NULL, NULL},
+		{ NULL, 0, 0, 0, NULL, NULL }
 };
 
 #define C_ASN1_COM_KEY_ATTR_SIZE 6
 static const struct sc_asn1_entry c_asn1_com_key_attr[C_ASN1_COM_KEY_ATTR_SIZE] = {
-	{ "iD",		 SC_ASN1_PKCS15_ID, SC_ASN1_TAG_OCTET_STRING, 0, NULL, NULL },
-	{ "usage",	 SC_ASN1_BIT_FIELD, SC_ASN1_TAG_BIT_STRING, 0, NULL, NULL },
-	{ "native",	 SC_ASN1_BOOLEAN, SC_ASN1_TAG_BOOLEAN, SC_ASN1_OPTIONAL, NULL, NULL },
-	{ "accessFlags", SC_ASN1_BIT_FIELD, SC_ASN1_TAG_BIT_STRING, SC_ASN1_OPTIONAL, NULL, NULL },
-	{ "keyReference",SC_ASN1_INTEGER, SC_ASN1_TAG_INTEGER, SC_ASN1_OPTIONAL, NULL, NULL },
-	{ NULL, 0, 0, 0, NULL, NULL }
+		{ "iD",		 SC_ASN1_PKCS15_ID, SC_ASN1_TAG_OCTET_STRING, 0, NULL, NULL },
+		{ "usage",	 SC_ASN1_BIT_FIELD, SC_ASN1_TAG_BIT_STRING, 0, NULL, NULL },
+		{ "native",	 SC_ASN1_BOOLEAN, SC_ASN1_TAG_BOOLEAN, SC_ASN1_OPTIONAL, NULL, NULL },
+		{ "accessFlags", SC_ASN1_BIT_FIELD, SC_ASN1_TAG_BIT_STRING, SC_ASN1_OPTIONAL, NULL, NULL },
+		{ "keyReference",SC_ASN1_INTEGER, SC_ASN1_TAG_INTEGER, SC_ASN1_OPTIONAL, NULL, NULL },
+		{ NULL, 0, 0, 0, NULL, NULL }
 };
 
 #define C_ASN1_COM_PUBKEY_ATTR_SIZE 2
 static const struct sc_asn1_entry c_asn1_com_pubkey_attr[C_ASN1_COM_PUBKEY_ATTR_SIZE] = {
-	{ "subjectName", SC_ASN1_OCTET_STRING, SC_ASN1_TAG_SEQUENCE | SC_ASN1_CONS,
-		SC_ASN1_EMPTY_ALLOWED | SC_ASN1_ALLOC | SC_ASN1_OPTIONAL, NULL, NULL },
-	{ NULL, 0, 0, 0, NULL, NULL }
+		{ "subjectName", SC_ASN1_OCTET_STRING, SC_ASN1_TAG_SEQUENCE | SC_ASN1_CONS,
+				SC_ASN1_EMPTY_ALLOWED | SC_ASN1_ALLOC | SC_ASN1_OPTIONAL, NULL, NULL },
+				{ NULL, 0, 0, 0, NULL, NULL }
 };
 
 #define C_ASN1_RSAKEY_VALUE_CHOICE_SIZE 3
 static const struct sc_asn1_entry c_asn1_rsakey_value_choice[C_ASN1_RSAKEY_VALUE_CHOICE_SIZE] = {
-	{ "path",       SC_ASN1_PATH,      SC_ASN1_TAG_SEQUENCE | SC_ASN1_CONS, SC_ASN1_EMPTY_ALLOWED, NULL, NULL },
-	{ "direct",     SC_ASN1_OCTET_STRING, SC_ASN1_CTX | 0 | SC_ASN1_CONS, SC_ASN1_OPTIONAL | SC_ASN1_ALLOC, NULL, NULL },
-	{ NULL, 0, 0, 0, NULL, NULL }
+		{ "path",       SC_ASN1_PATH, SC_ASN1_TAG_SEQUENCE | SC_ASN1_CONS, SC_ASN1_EMPTY_ALLOWED, NULL, NULL },
+		{ "direct",     SC_ASN1_OCTET_STRING, SC_ASN1_CTX | 0 | SC_ASN1_CONS, SC_ASN1_OPTIONAL | SC_ASN1_ALLOC, NULL, NULL },
+		{ NULL, 0, 0, 0, NULL, NULL }
 };
 
 #define C_ASN1_RSAKEY_ATTR_SIZE 4
 static const struct sc_asn1_entry c_asn1_rsakey_attr[C_ASN1_RSAKEY_ATTR_SIZE] = {
-	{ "value",         SC_ASN1_CHOICE, 0, 0, NULL, NULL },
-	{ "modulusLength", SC_ASN1_INTEGER, SC_ASN1_TAG_INTEGER, 0, NULL, NULL },
-	{ "keyInfo",	   SC_ASN1_INTEGER, SC_ASN1_TAG_INTEGER, SC_ASN1_OPTIONAL, NULL, NULL },
-	{ NULL, 0, 0, 0, NULL, NULL }
+		{ "value",         SC_ASN1_CHOICE, 0, 0, NULL, NULL },
+		{ "modulusLength", SC_ASN1_INTEGER, SC_ASN1_TAG_INTEGER, 0, NULL, NULL },
+		{ "keyInfo",	   SC_ASN1_INTEGER, SC_ASN1_TAG_INTEGER, SC_ASN1_OPTIONAL, NULL, NULL },
+		{ NULL, 0, 0, 0, NULL, NULL }
 };
 
 #define C_ASN1_ECKEY_VALUE_CHOICE_SIZE 3
 static const struct sc_asn1_entry c_asn1_eckey_value_choice[C_ASN1_ECKEY_VALUE_CHOICE_SIZE] = {
-	{ "path",       SC_ASN1_PATH, SC_ASN1_TAG_SEQUENCE | SC_ASN1_CONS, SC_ASN1_EMPTY_ALLOWED, NULL, NULL },
-	{ "direct",     SC_ASN1_OCTET_STRING, SC_ASN1_CTX | 0 | SC_ASN1_CONS, SC_ASN1_OPTIONAL | SC_ASN1_ALLOC, NULL, NULL },
-	{ NULL, 0, 0, 0, NULL, NULL }
+		{ "path",       SC_ASN1_PATH, SC_ASN1_TAG_SEQUENCE | SC_ASN1_CONS, SC_ASN1_EMPTY_ALLOWED, NULL, NULL },
+		{ "direct",     SC_ASN1_OCTET_STRING, SC_ASN1_CTX | 0 | SC_ASN1_CONS, SC_ASN1_OPTIONAL | SC_ASN1_ALLOC, NULL, NULL },
+		{ NULL, 0, 0, 0, NULL, NULL }
 };
 
-#define C_ASN1_ECKEY_ATTR_SIZE 4
+#define C_ASN1_ECKEY_ATTR_SIZE 3
 static const struct sc_asn1_entry c_asn1_eckey_attr[C_ASN1_ECKEY_ATTR_SIZE] = {
-	{ "value",         SC_ASN1_CHOICE, 0, 0, NULL, NULL },
-	{ "fieldSize",	   SC_ASN1_INTEGER, SC_ASN1_TAG_INTEGER, SC_ASN1_OPTIONAL, NULL, NULL },
-	{ "keyInfo",	   SC_ASN1_INTEGER, SC_ASN1_TAG_INTEGER, SC_ASN1_OPTIONAL, NULL, NULL },
-	{ NULL, 0, 0, 0, NULL, NULL }
+		{ "value",         SC_ASN1_CHOICE, 0, 0, NULL, NULL },
+		/* VTA: 'fieldSize' is not in PKCS#15 specification */
+		/* { "fieldSize",	   SC_ASN1_INTEGER, SC_ASN1_TAG_INTEGER, SC_ASN1_OPTIONAL, NULL, NULL }, */
+		{ "keyInfo",	   SC_ASN1_INTEGER, SC_ASN1_TAG_INTEGER, SC_ASN1_OPTIONAL, NULL, NULL },
+		{ NULL, 0, 0, 0, NULL, NULL }
 };
 
 #define C_ASN1_RSA_TYPE_ATTR_SIZE 2
 static const struct sc_asn1_entry c_asn1_rsa_type_attr[C_ASN1_RSA_TYPE_ATTR_SIZE] = {
-	{ "publicRSAKeyAttributes", SC_ASN1_STRUCT, SC_ASN1_TAG_SEQUENCE | SC_ASN1_CONS, 0, NULL, NULL },
-	{ NULL, 0, 0, 0, NULL, NULL }
+		{ "publicRSAKeyAttributes", SC_ASN1_STRUCT, SC_ASN1_TAG_SEQUENCE | SC_ASN1_CONS, 0, NULL, NULL },
+		{ NULL, 0, 0, 0, NULL, NULL }
 };
 
 #define C_ASN1_EC_TYPE_ATTR_SIZE 2
 static const struct sc_asn1_entry c_asn1_ec_type_attr[C_ASN1_EC_TYPE_ATTR_SIZE] = {
-	{ "publicECKeyAttributes", SC_ASN1_STRUCT, SC_ASN1_TAG_SEQUENCE | SC_ASN1_CONS, 0, NULL, NULL },
-	{ NULL, 0, 0, 0, NULL, NULL }
+		{ "publicECKeyAttributes", SC_ASN1_STRUCT, SC_ASN1_TAG_SEQUENCE | SC_ASN1_CONS, 0, NULL, NULL },
+		{ NULL, 0, 0, 0, NULL, NULL }
 };
 
 #define C_ASN1_DSAKEY_ATTR_SIZE 2
 static const struct sc_asn1_entry c_asn1_dsakey_attr[C_ASN1_DSAKEY_ATTR_SIZE] = {
-	{ "value", SC_ASN1_PATH, SC_ASN1_TAG_SEQUENCE | SC_ASN1_CONS, 0, NULL, NULL },
-	{ NULL, 0, 0, 0, NULL, NULL }
+		{ "value", SC_ASN1_PATH, SC_ASN1_TAG_SEQUENCE | SC_ASN1_CONS, 0, NULL, NULL },
+		{ NULL, 0, 0, 0, NULL, NULL }
 };
 
 #define C_ASN1_DSA_TYPE_ATTR_SIZE 2
 static const struct sc_asn1_entry c_asn1_dsa_type_attr[C_ASN1_DSA_TYPE_ATTR_SIZE] = {
-	{ "publicDSAKeyAttributes", SC_ASN1_STRUCT, SC_ASN1_TAG_SEQUENCE | SC_ASN1_CONS, 0, NULL, NULL },
-	{ NULL, 0, 0, 0, NULL, NULL }
+		{ "publicDSAKeyAttributes", SC_ASN1_STRUCT, SC_ASN1_TAG_SEQUENCE | SC_ASN1_CONS, 0, NULL, NULL },
+		{ NULL, 0, 0, 0, NULL, NULL }
 };
 
 #define C_ASN1_GOST3410KEY_ATTR_SIZE 5
 static const struct sc_asn1_entry c_asn1_gostr3410key_attr[C_ASN1_GOST3410KEY_ATTR_SIZE] = {
-	{ "value", SC_ASN1_PATH, SC_ASN1_TAG_SEQUENCE | SC_ASN1_CONS, 0, NULL, NULL },
-	{ "params_r3410", SC_ASN1_INTEGER, SC_ASN1_TAG_INTEGER, 0, NULL, NULL },
-	{ "params_r3411", SC_ASN1_INTEGER, SC_ASN1_TAG_INTEGER, SC_ASN1_OPTIONAL, NULL, NULL },
-	{ "params_28147", SC_ASN1_INTEGER, SC_ASN1_TAG_INTEGER, SC_ASN1_OPTIONAL, NULL, NULL },
-	{ NULL, 0, 0, 0, NULL, NULL }
+		{ "value", SC_ASN1_PATH, SC_ASN1_TAG_SEQUENCE | SC_ASN1_CONS, 0, NULL, NULL },
+		{ "params_r3410", SC_ASN1_INTEGER, SC_ASN1_TAG_INTEGER, 0, NULL, NULL },
+		{ "params_r3411", SC_ASN1_INTEGER, SC_ASN1_TAG_INTEGER, SC_ASN1_OPTIONAL, NULL, NULL },
+		{ "params_28147", SC_ASN1_INTEGER, SC_ASN1_TAG_INTEGER, SC_ASN1_OPTIONAL, NULL, NULL },
+		{ NULL, 0, 0, 0, NULL, NULL }
 };
 
 #define C_ASN1_GOST3410_TYPE_ATTR_SIZE 2
 static const struct sc_asn1_entry c_asn1_gostr3410_type_attr[C_ASN1_GOST3410_TYPE_ATTR_SIZE] = {
-	{ "publicGOSTR3410KeyAttributes", SC_ASN1_STRUCT, SC_ASN1_TAG_SEQUENCE | SC_ASN1_CONS, 0, NULL, NULL },
-	{ NULL, 0, 0, 0, NULL, NULL }
+		{ "publicGOSTR3410KeyAttributes", SC_ASN1_STRUCT, SC_ASN1_TAG_SEQUENCE | SC_ASN1_CONS, 0, NULL, NULL },
+		{ NULL, 0, 0, 0, NULL, NULL }
 };
 
 #define C_ASN1_PUBKEY_CHOICE_SIZE 5
 static const struct sc_asn1_entry c_asn1_pubkey_choice[C_ASN1_PUBKEY_CHOICE_SIZE] = {
-	{ "publicRSAKey", SC_ASN1_PKCS15_OBJECT, SC_ASN1_TAG_SEQUENCE | SC_ASN1_CONS, 0, NULL, NULL },
-	{ "publicDSAKey", SC_ASN1_PKCS15_OBJECT, 2 | SC_ASN1_CTX | SC_ASN1_CONS, 0, NULL, NULL },
-	{ "publicGOSTR3410Key", SC_ASN1_PKCS15_OBJECT, 4 | SC_ASN1_CTX | SC_ASN1_CONS, 0, NULL, NULL },
-	{ "publicECKey", SC_ASN1_PKCS15_OBJECT, 0 | SC_ASN1_CTX | SC_ASN1_CONS, 0, NULL, NULL },
-/*TODO: -DEE not clear EC is needed here  as look like it is for pukdf */
-	{ NULL, 0, 0, 0, NULL, NULL }
+		{ "publicRSAKey", SC_ASN1_PKCS15_OBJECT, SC_ASN1_TAG_SEQUENCE | SC_ASN1_CONS, 0, NULL, NULL },
+		{ "publicDSAKey", SC_ASN1_PKCS15_OBJECT, 2 | SC_ASN1_CTX | SC_ASN1_CONS, 0, NULL, NULL },
+		{ "publicGOSTR3410Key", SC_ASN1_PKCS15_OBJECT, 4 | SC_ASN1_CTX | SC_ASN1_CONS, 0, NULL, NULL },
+		{ "publicECKey", SC_ASN1_PKCS15_OBJECT, 0 | SC_ASN1_CTX | SC_ASN1_CONS, 0, NULL, NULL },
+		/*TODO: -DEE not clear EC is needed here  as look like it is for pukdf */
+		{ NULL, 0, 0, 0, NULL, NULL }
 };
 
 #define C_ASN1_PUBKEY_SIZE 2
 static const struct sc_asn1_entry c_asn1_pubkey[C_ASN1_PUBKEY_SIZE] = {
-	{ "publicKey",	SC_ASN1_CHOICE, 0, 0, NULL, NULL },
-	{ NULL, 0, 0, 0, NULL, NULL }
+		{ "publicKey",	SC_ASN1_CHOICE, 0, 0, NULL, NULL },
+		{ NULL, 0, 0, 0, NULL, NULL }
 };
 
+int sc_pkcs15_pubkey_from_spki_sequence(sc_context_t *ctx, const u8 *buf, size_t buflen, sc_pkcs15_pubkey_t ** outpubkey);
+
+int
+sc_pkcs15_decode_pubkey_direct_value(struct sc_pkcs15_card *p15card, struct sc_pkcs15_object *obj)
+{
+	struct sc_context *ctx = p15card->card->ctx;
+	struct sc_pkcs15_pubkey_info *info = (struct sc_pkcs15_pubkey_info *) obj->data;
+
+	LOG_FUNC_CALLED(ctx);
+	if (obj->content.value == NULL || obj->content.len == 0)
+		LOG_FUNC_RETURN(ctx, SC_SUCCESS);
+
+	if (*obj->content.value == (SC_ASN1_TAG_CONSTRUCTED | SC_ASN1_TAG_SEQUENCE))   {
+		/* RAW direct value */
+		sc_log(ctx, "Decoding 'RAW' direct value");
+		info->direct.raw.value = malloc(obj->content.len);
+		if (!info->direct.raw.value)
+			LOG_FUNC_RETURN(ctx, SC_ERROR_OUT_OF_MEMORY);
+		memcpy(info->direct.raw.value, obj->content.value, obj->content.len);
+		info->direct.raw.len = obj->content.len;
+
+		/* TODO: encode 'spki' direct value */
+	}
+
+	if (*obj->content.value == (SC_ASN1_TAG_CONTEXT | SC_ASN1_TAG_CONSTRUCTED | 0x01))   {
+		struct sc_pkcs15_pubkey *pubkey = NULL;
+		int rv;
+
+		/* SPKI direct value */
+		sc_log(ctx, "Decoding 'SPKI' direct value");
+		info->direct.spki.value = malloc(obj->content.len);
+		if (!info->direct.spki.value)
+			LOG_FUNC_RETURN(ctx, SC_ERROR_OUT_OF_MEMORY);
+		memcpy(info->direct.spki.value, obj->content.value, obj->content.len);
+		info->direct.spki.len = obj->content.len;
+
+		rv = sc_pkcs15_pubkey_from_spki_sequence(ctx, info->direct.spki.value, info->direct.spki.len, &pubkey);
+		LOG_TEST_RET(ctx, rv, "Failed to decode 'SPKI' direct value");
+
+		rv = sc_pkcs15_encode_pubkey(ctx, pubkey, &info->direct.raw.value, &info->direct.raw.len);
+		LOG_TEST_RET(ctx, rv, "Failed to endode 'RAW' direct value");
+		sc_pkcs15_free_pubkey(pubkey);
+	}
+
+	LOG_FUNC_RETURN(ctx, SC_SUCCESS);
+}
+
+
 int sc_pkcs15_decode_pukdf_entry(struct sc_pkcs15_card *p15card,
-				 struct sc_pkcs15_object *obj,
-				 const u8 ** buf, size_t *buflen)
+		struct sc_pkcs15_object *obj,
+		const u8 ** buf, size_t *buflen)
 {
-	sc_context_t *ctx = p15card->card->ctx;
+	struct sc_context *ctx = p15card->card->ctx;
 	struct sc_pkcs15_pubkey_info info;
 	int r, gostr3410_params[3];
 	struct sc_pkcs15_keyinfo_gostparams *keyinfo_gostparams;
@@ -177,13 +226,13 @@ int sc_pkcs15_decode_pukdf_entry(struct sc_pkcs15_card *p15card,
 	struct sc_asn1_entry asn1_pubkey_choice[C_ASN1_PUBKEY_CHOICE_SIZE];
 	struct sc_asn1_entry asn1_pubkey[C_ASN1_PUBKEY_SIZE];
 	struct sc_asn1_pkcs15_object rsakey_obj = { obj, asn1_com_key_attr,
-						    asn1_com_pubkey_attr, asn1_rsa_type_attr };
+			asn1_com_pubkey_attr, asn1_rsa_type_attr };
 	struct sc_asn1_pkcs15_object eckey_obj = { obj, asn1_com_key_attr,
-						    asn1_com_pubkey_attr, asn1_ec_type_attr };
+			asn1_com_pubkey_attr, asn1_ec_type_attr };
 	struct sc_asn1_pkcs15_object dsakey_obj = { obj, asn1_com_key_attr,
-						    asn1_com_pubkey_attr, asn1_dsa_type_attr };
+			asn1_com_pubkey_attr, asn1_dsa_type_attr };
 	struct sc_asn1_pkcs15_object gostr3410key_obj =  { obj, asn1_com_key_attr,
-						    asn1_com_pubkey_attr, asn1_gostr3410_type_attr };
+			asn1_com_pubkey_attr, asn1_gostr3410_type_attr };
 
 	sc_copy_asn1_entry(c_asn1_pubkey, asn1_pubkey);
 	sc_copy_asn1_entry(c_asn1_pubkey_choice, asn1_pubkey_choice);
@@ -221,7 +270,8 @@ int sc_pkcs15_decode_pukdf_entry(struct sc_pkcs15_card *p15card,
 	sc_format_asn1_entry(asn1_eckey_value_choice + 1, &der->value, &der->len, 0);
 
 	sc_format_asn1_entry(asn1_eckey_attr + 0, asn1_eckey_value_choice, NULL, 0);
-	sc_format_asn1_entry(asn1_eckey_attr + 1, &info.field_length, NULL, 0);
+	/* VTA: TODO 'fieldSize' is not in PKCS#15 specification */
+	/* sc_format_asn1_entry(asn1_eckey_attr + 1, &info.field_length, NULL, 0); */
 
 	sc_format_asn1_entry(asn1_dsa_type_attr + 0, asn1_dsakey_attr, NULL, 0);
 
@@ -268,13 +318,14 @@ int sc_pkcs15_decode_pukdf_entry(struct sc_pkcs15_card *p15card,
 		keyinfo_gostparams->gostr3410 = (unsigned int)gostr3410_params[0];
 		keyinfo_gostparams->gostr3411 = (unsigned int)gostr3410_params[1];
 		keyinfo_gostparams->gost28147 = (unsigned int)gostr3410_params[2];
-	} 
+	}
 	else if (asn1_pubkey_choice[3].flags & SC_ASN1_PRESENT) {
 		obj->type = SC_PKCS15_TYPE_PUBKEY_EC;
 	}
 	else {
 		obj->type = SC_PKCS15_TYPE_PUBKEY_DSA;
 	}
+
 	if (!p15card->app || !p15card->app->ddo.aid.len)   {
 		r = sc_pkcs15_make_absolute_path(&p15card->file_app->path, &info.path);
 		if (r < 0) {
@@ -287,7 +338,7 @@ int sc_pkcs15_decode_pukdf_entry(struct sc_pkcs15_card *p15card,
 	}
 	sc_log(ctx, "PubKey path '%s'", sc_print_path(&info.path));
 
-        /* OpenSC 0.11.4 and older encoded "keyReference" as a negative
+	/* OpenSC 0.11.4 and older encoded "keyReference" as a negative
            value. Fixed in 0.11.5 we need to add a hack, so old cards
            continue to work. */
 	if (info.key_reference < -1)
@@ -300,12 +351,16 @@ int sc_pkcs15_decode_pukdf_entry(struct sc_pkcs15_card *p15card,
 	}
 	memcpy(obj->data, &info, sizeof(info));
 
+	r = sc_pkcs15_decode_pubkey_direct_value(p15card, obj);
+	LOG_TEST_RET(ctx, r, "Decode public key direct value failed");
+
 	return 0;
 }
 
-int sc_pkcs15_encode_pukdf_entry(sc_context_t *ctx,
-				 const struct sc_pkcs15_object *obj,
-				 u8 **buf, size_t *buflen)
+
+int
+sc_pkcs15_encode_pukdf_entry(struct sc_context *ctx, const struct sc_pkcs15_object *obj,
+		unsigned char **buf, size_t *buflen)
 {
 	struct sc_asn1_entry asn1_com_key_attr[C_ASN1_COM_KEY_ATTR_SIZE];
 	struct sc_asn1_entry asn1_com_pubkey_attr[C_ASN1_COM_PUBKEY_ATTR_SIZE];
@@ -322,23 +377,23 @@ int sc_pkcs15_encode_pukdf_entry(sc_context_t *ctx,
 	struct sc_asn1_entry asn1_pubkey_choice[C_ASN1_PUBKEY_CHOICE_SIZE];
 	struct sc_asn1_entry asn1_pubkey[C_ASN1_PUBKEY_SIZE];
 
-	struct sc_pkcs15_pubkey_info *pubkey =
-		(struct sc_pkcs15_pubkey_info *) obj->data;
-	struct sc_asn1_pkcs15_object rsakey_obj = { (struct sc_pkcs15_object *) obj,
-						    asn1_com_key_attr,
-						    asn1_com_pubkey_attr, asn1_rsa_type_attr };
+	struct sc_pkcs15_pubkey_info *pubkey = (struct sc_pkcs15_pubkey_info *) obj->data;
+	struct sc_asn1_pkcs15_object rsakey_obj = {
+		(struct sc_pkcs15_object *) obj, asn1_com_key_attr, asn1_com_pubkey_attr, asn1_rsa_type_attr
+	};
 	struct sc_asn1_pkcs15_object eckey_obj = { (struct sc_pkcs15_object *) obj,
-						    asn1_com_key_attr,
-						    asn1_com_pubkey_attr, asn1_ec_type_attr };
+			asn1_com_key_attr,
+			asn1_com_pubkey_attr, asn1_ec_type_attr };
 	struct sc_asn1_pkcs15_object dsakey_obj = { (struct sc_pkcs15_object *) obj,
-						    asn1_com_key_attr,
-						    asn1_com_pubkey_attr, asn1_dsa_type_attr };
+			asn1_com_key_attr,
+			asn1_com_pubkey_attr, asn1_dsa_type_attr };
 	struct sc_asn1_pkcs15_object gostr3410key_obj =  { (struct sc_pkcs15_object *) obj,
-						    asn1_com_key_attr,
-						    asn1_com_pubkey_attr, asn1_gostr3410_type_attr };
+			asn1_com_key_attr,
+			asn1_com_pubkey_attr, asn1_gostr3410_type_attr };
 	struct sc_pkcs15_keyinfo_gostparams *keyinfo_gostparams;
 	int r;
 	size_t af_len, usage_len;
+	unsigned char *spki_value = NULL;
 
 	sc_copy_asn1_entry(c_asn1_pubkey, asn1_pubkey);
 	sc_copy_asn1_entry(c_asn1_pubkey_choice, asn1_pubkey_choice);
@@ -360,14 +415,38 @@ int sc_pkcs15_encode_pukdf_entry(sc_context_t *ctx,
 		sc_format_asn1_entry(asn1_pubkey_choice + 0, &rsakey_obj, NULL, 1);
 
 		sc_format_asn1_entry(asn1_rsa_type_attr + 0, asn1_rsakey_attr, NULL, 1);
-		if (pubkey->path.len || !obj->content.value)
+		if (pubkey->path.len)   {
 			sc_format_asn1_entry(asn1_rsakey_value_choice + 0, &pubkey->path, NULL, 1);
-		else
+		}
+		else  if (pubkey->direct.raw.value && pubkey->direct.raw.len)   {
+			/* In RSAPublicKeyChoice 'raw' value keep it's SEQUENCE tag */
+			sc_log(ctx,  "Encode direct 'RAW' value");
+			sc_format_asn1_entry(asn1_rsakey_value_choice + 1, pubkey->direct.raw.value, (void *)&pubkey->direct.raw.len, 1);
+		}
+		else  if (pubkey->direct.spki.value && pubkey->direct.spki.len)   {
+			/* In RSAPublicKeyChoice 'spki' value changes initial SEQUENCE tag for
+			 * CONTEXT [1] constructed SEQUENCE */
+			sc_log(ctx,  "Encode direct 'SPKI' value");
+			spki_value = malloc(pubkey->direct.spki.len);
+			if (!spki_value)
+				LOG_FUNC_RETURN(ctx, SC_ERROR_OUT_OF_MEMORY);
+			memcpy(spki_value, pubkey->direct.spki.value, pubkey->direct.spki.len);
+			*spki_value = (SC_ASN1_TAG_CONTEXT | SC_ASN1_TAG_CONSTRUCTED | 0x01);
+
+			sc_format_asn1_entry(asn1_rsakey_value_choice + 1, spki_value, (void *)&pubkey->direct.spki.len, 1);
+		}
+		else if (obj->content.value && obj->content.len) {
+			sc_log(ctx,  "Encode 'RAW' object content");
 			sc_format_asn1_entry(asn1_rsakey_value_choice + 1, obj->content.value, (void *)&obj->content.len, 1);
+		}
+		else   {
+			sc_log(ctx,  "Use empty path");
+			sc_format_asn1_entry(asn1_rsakey_value_choice + 0, &pubkey->path, NULL, 1);
+		}
+
 		sc_format_asn1_entry(asn1_rsakey_attr + 0, asn1_rsakey_value_choice, NULL, 1);
 		sc_format_asn1_entry(asn1_rsakey_attr + 1, &pubkey->modulus_length, NULL, 1);
 		break;
-
 	case SC_PKCS15_TYPE_PUBKEY_DSA:
 		sc_format_asn1_entry(asn1_pubkey_choice + 1, &dsakey_obj, NULL, 1);
 
@@ -375,7 +454,6 @@ int sc_pkcs15_encode_pukdf_entry(sc_context_t *ctx,
 
 		sc_format_asn1_entry(asn1_dsakey_attr + 0, &pubkey->path, NULL, 1);
 		break;
-
 	case SC_PKCS15_TYPE_PUBKEY_GOSTR3410:
 		sc_format_asn1_entry(asn1_pubkey_choice + 2, &gostr3410key_obj, NULL, 1);
 
@@ -393,17 +471,29 @@ int sc_pkcs15_encode_pukdf_entry(sc_context_t *ctx,
 		}
 		break;
 	case SC_PKCS15_TYPE_PUBKEY_EC:
-		/* MyEID is a PKCS15 card with ECC */
 		sc_format_asn1_entry(asn1_pubkey_choice + 3, &eckey_obj, NULL, 1);
-		
+
 		sc_format_asn1_entry(asn1_ec_type_attr + 0, asn1_eckey_attr, NULL, 1);
-		if (pubkey->path.len || !obj->content.value)
+
+		if (pubkey->path.len)   {
 			sc_format_asn1_entry(asn1_eckey_value_choice + 0, &pubkey->path, NULL, 1);
-		else
+		}
+		else  if (pubkey->direct.spki.value)   {
+			sc_format_asn1_entry(asn1_eckey_value_choice + 1, pubkey->direct.spki.value, (void *)&pubkey->direct.spki.len, 1);
+		}
+		else  if (pubkey->direct.raw.value)   {
+			sc_format_asn1_entry(asn1_eckey_value_choice + 1, pubkey->direct.raw.value, (void *)&pubkey->direct.raw.len, 1);
+			LOG_TEST_RET(ctx, SC_ERROR_NOT_IMPLEMENTED, "Needs KeyInfo with reference to algorithm in TokenInfo");
+		}
+		else  if (obj->content.value)   {
 			sc_format_asn1_entry(asn1_eckey_value_choice + 1, obj->content.value, (void *)&obj->content.len, 1);
+			LOG_TEST_RET(ctx, SC_ERROR_NOT_IMPLEMENTED, "Needs KeyInfo with reference to algorithm in TokenInfo");
+		}
+
 		sc_format_asn1_entry(asn1_eckey_attr + 0, asn1_eckey_value_choice, NULL, 1);
-		sc_format_asn1_entry(asn1_eckey_attr + 1, &pubkey->field_length, NULL, 1);
-		
+		/* VTA: TODO 'fieldSize' is not in PKCS#15 specification */
+		/* sc_format_asn1_entry(asn1_eckey_attr + 1, &pubkey->field_length, NULL, 1); */
+
 		break;
 	default:
 		sc_log(ctx,  "Unsupported public key type: %X", obj->type);
@@ -432,41 +522,44 @@ int sc_pkcs15_encode_pukdf_entry(sc_context_t *ctx,
 	r = sc_asn1_encode(ctx, asn1_pubkey, buf, buflen);
 
 	sc_log(ctx, "Key path %s", sc_print_path(&pubkey->path));
+
+	if (spki_value)
+		free(spki_value);
 	return r;
 }
 
 #define C_ASN1_PUBLIC_KEY_SIZE 2
 static struct sc_asn1_entry c_asn1_public_key[C_ASN1_PUBLIC_KEY_SIZE] = {
-	{ "publicKeyCoefficients", SC_ASN1_STRUCT, SC_ASN1_TAG_SEQUENCE | SC_ASN1_CONS, 0, NULL, NULL },
-	{ NULL, 0, 0, 0, NULL, NULL }
+		{ "publicKeyCoefficients", SC_ASN1_STRUCT, SC_ASN1_TAG_SEQUENCE | SC_ASN1_CONS, 0, NULL, NULL },
+		{ NULL, 0, 0, 0, NULL, NULL }
 };
 
 #define C_ASN1_RSA_PUB_COEFFICIENTS_SIZE 3
 static struct sc_asn1_entry c_asn1_rsa_pub_coefficients[C_ASN1_RSA_PUB_COEFFICIENTS_SIZE] = {
-	{ "modulus",  SC_ASN1_OCTET_STRING, SC_ASN1_TAG_INTEGER, SC_ASN1_ALLOC|SC_ASN1_UNSIGNED, NULL, NULL },
-	{ "exponent", SC_ASN1_OCTET_STRING, SC_ASN1_TAG_INTEGER, SC_ASN1_ALLOC|SC_ASN1_UNSIGNED, NULL, NULL },
-	{ NULL, 0, 0, 0, NULL, NULL }
+		{ "modulus",  SC_ASN1_OCTET_STRING, SC_ASN1_TAG_INTEGER, SC_ASN1_ALLOC|SC_ASN1_UNSIGNED, NULL, NULL },
+		{ "exponent", SC_ASN1_OCTET_STRING, SC_ASN1_TAG_INTEGER, SC_ASN1_ALLOC|SC_ASN1_UNSIGNED, NULL, NULL },
+		{ NULL, 0, 0, 0, NULL, NULL }
 };
 
 #define C_ASN1_DSA_PUB_COEFFICIENTS_SIZE 5
 static struct sc_asn1_entry c_asn1_dsa_pub_coefficients[C_ASN1_DSA_PUB_COEFFICIENTS_SIZE] = {
-	{ "publicKey",SC_ASN1_OCTET_STRING, SC_ASN1_TAG_INTEGER, SC_ASN1_ALLOC|SC_ASN1_UNSIGNED, NULL, NULL },
-	{ "paramP",   SC_ASN1_OCTET_STRING, SC_ASN1_TAG_INTEGER, SC_ASN1_ALLOC|SC_ASN1_UNSIGNED, NULL, NULL },
-	{ "paramQ",   SC_ASN1_OCTET_STRING, SC_ASN1_TAG_INTEGER, SC_ASN1_ALLOC|SC_ASN1_UNSIGNED, NULL, NULL },
-	{ "paramG",   SC_ASN1_OCTET_STRING, SC_ASN1_TAG_INTEGER, SC_ASN1_ALLOC|SC_ASN1_UNSIGNED, NULL, NULL },
-	{ NULL, 0, 0, 0, NULL, NULL },
+		{ "publicKey",SC_ASN1_OCTET_STRING, SC_ASN1_TAG_INTEGER, SC_ASN1_ALLOC|SC_ASN1_UNSIGNED, NULL, NULL },
+		{ "paramP",   SC_ASN1_OCTET_STRING, SC_ASN1_TAG_INTEGER, SC_ASN1_ALLOC|SC_ASN1_UNSIGNED, NULL, NULL },
+		{ "paramQ",   SC_ASN1_OCTET_STRING, SC_ASN1_TAG_INTEGER, SC_ASN1_ALLOC|SC_ASN1_UNSIGNED, NULL, NULL },
+		{ "paramG",   SC_ASN1_OCTET_STRING, SC_ASN1_TAG_INTEGER, SC_ASN1_ALLOC|SC_ASN1_UNSIGNED, NULL, NULL },
+		{ NULL, 0, 0, 0, NULL, NULL },
 };
 
 #define C_ASN1_GOSTR3410_PUB_COEFFICIENTS_SIZE 2
 static struct sc_asn1_entry c_asn1_gostr3410_pub_coefficients[C_ASN1_GOSTR3410_PUB_COEFFICIENTS_SIZE] = {
-	{ "xy", SC_ASN1_OCTET_STRING, SC_ASN1_TAG_OCTET_STRING, SC_ASN1_ALLOC, NULL, NULL },
-	{ NULL, 0, 0, 0, NULL, NULL }
+		{ "xy", SC_ASN1_OCTET_STRING, SC_ASN1_TAG_OCTET_STRING, SC_ASN1_ALLOC, NULL, NULL },
+		{ NULL, 0, 0, 0, NULL, NULL }
 };
 
 #define C_ASN1_EC_POINTQ_SIZE 2
 static struct sc_asn1_entry c_asn1_ec_pointQ[C_ASN1_EC_POINTQ_SIZE] = {
-	{ "ecpointQ", SC_ASN1_OCTET_STRING, SC_ASN1_TAG_OCTET_STRING, SC_ASN1_ALLOC, NULL, NULL },
-	{ NULL, 0, 0, 0, NULL, NULL }
+		{ "ecpointQ", SC_ASN1_OCTET_STRING, SC_ASN1_TAG_OCTET_STRING, SC_ASN1_ALLOC, NULL, NULL },
+		{ NULL, 0, 0, 0, NULL, NULL }
 };
 
 
@@ -478,6 +571,7 @@ sc_pkcs15_decode_pubkey_rsa(sc_context_t *ctx, struct sc_pkcs15_pubkey_rsa *key,
 	struct sc_asn1_entry asn1_rsa_pub_coefficients[C_ASN1_RSA_PUB_COEFFICIENTS_SIZE];
 	int r;
 
+	LOG_FUNC_CALLED(ctx);
 	sc_copy_asn1_entry(c_asn1_public_key, asn1_public_key);
 	sc_format_asn1_entry(asn1_public_key + 0, asn1_rsa_pub_coefficients, NULL, 0);
 
@@ -488,7 +582,7 @@ sc_pkcs15_decode_pubkey_rsa(sc_context_t *ctx, struct sc_pkcs15_pubkey_rsa *key,
 	r = sc_asn1_decode(ctx, asn1_public_key, buf, buflen, NULL, NULL);
 	LOG_TEST_RET(ctx, r, "ASN.1 parsing of public key failed");
 
-	return SC_SUCCESS;
+	LOG_FUNC_RETURN(ctx, SC_SUCCESS);
 }
 
 
@@ -500,6 +594,7 @@ sc_pkcs15_encode_pubkey_rsa(sc_context_t *ctx, struct sc_pkcs15_pubkey_rsa *key,
 	struct sc_asn1_entry asn1_rsa_pub_coefficients[C_ASN1_RSA_PUB_COEFFICIENTS_SIZE];
 	int r;
 
+	LOG_FUNC_CALLED(ctx);
 	sc_copy_asn1_entry(c_asn1_public_key, asn1_public_key);
 	sc_format_asn1_entry(asn1_public_key + 0, asn1_rsa_pub_coefficients, NULL, 1);
 
@@ -510,7 +605,7 @@ sc_pkcs15_encode_pubkey_rsa(sc_context_t *ctx, struct sc_pkcs15_pubkey_rsa *key,
 	r = sc_asn1_encode(ctx, asn1_public_key, buf, buflen);
 	LOG_TEST_RET(ctx, r, "ASN.1 encoding failed");
 
-	return 0;
+	LOG_FUNC_RETURN(ctx, SC_SUCCESS);
 }
 
 
@@ -522,6 +617,7 @@ sc_pkcs15_decode_pubkey_dsa(sc_context_t *ctx, struct sc_pkcs15_pubkey_dsa *key,
 	struct sc_asn1_entry asn1_dsa_pub_coefficients[C_ASN1_DSA_PUB_COEFFICIENTS_SIZE];
 	int r;
 
+	LOG_FUNC_CALLED(ctx);
 	sc_copy_asn1_entry(c_asn1_public_key, asn1_public_key);
 	sc_copy_asn1_entry(c_asn1_dsa_pub_coefficients, asn1_dsa_pub_coefficients);
 
@@ -534,7 +630,7 @@ sc_pkcs15_decode_pubkey_dsa(sc_context_t *ctx, struct sc_pkcs15_pubkey_dsa *key,
 	r = sc_asn1_decode(ctx, asn1_public_key, buf, buflen, NULL, NULL);
 	LOG_TEST_RET(ctx, r, "ASN.1 decoding failed");
 
-	return 0;
+	LOG_FUNC_RETURN(ctx, SC_SUCCESS);
 }
 
 
@@ -546,6 +642,7 @@ sc_pkcs15_encode_pubkey_dsa(sc_context_t *ctx, struct sc_pkcs15_pubkey_dsa *key,
 	struct sc_asn1_entry asn1_dsa_pub_coefficients[C_ASN1_DSA_PUB_COEFFICIENTS_SIZE];
 	int r;
 
+	LOG_FUNC_CALLED(ctx);
 	sc_copy_asn1_entry(c_asn1_public_key, asn1_public_key);
 	sc_copy_asn1_entry(c_asn1_dsa_pub_coefficients, asn1_dsa_pub_coefficients);
 
@@ -558,7 +655,7 @@ sc_pkcs15_encode_pubkey_dsa(sc_context_t *ctx, struct sc_pkcs15_pubkey_dsa *key,
 	r = sc_asn1_encode(ctx, asn1_public_key, buf, buflen);
 	LOG_TEST_RET(ctx, r, "ASN.1 encoding failed");
 
-	return 0;
+	LOG_FUNC_RETURN(ctx, SC_SUCCESS);
 }
 
 
@@ -571,6 +668,7 @@ sc_pkcs15_decode_pubkey_gostr3410(sc_context_t *ctx, struct sc_pkcs15_pubkey_gos
 	struct sc_object_id param_key = {{ 1, 2, 643, 2, 2, 35, 1, -1}};
 	struct sc_object_id param_hash = {{ 1, 2, 643, 2, 2, 30, 1, -1}};
 
+	LOG_FUNC_CALLED(ctx);
 	sc_copy_asn1_entry(c_asn1_gostr3410_pub_coefficients, asn1_gostr3410_pub_coeff);
 	sc_format_asn1_entry(asn1_gostr3410_pub_coeff + 0, &key->xy.data, &key->xy.len, 0);
 
@@ -580,7 +678,7 @@ sc_pkcs15_decode_pubkey_gostr3410(sc_context_t *ctx, struct sc_pkcs15_pubkey_gos
 	key->params.key = param_key;
 	key->params.hash = param_hash;
 
-	return 0;
+	LOG_FUNC_RETURN(ctx, SC_SUCCESS);
 }
 
 int
@@ -602,9 +700,7 @@ sc_pkcs15_encode_pubkey_gostr3410(sc_context_t *ctx,
 }
 
 /*
- * We are storing the ec_pointQ as a octet string.
- * Thus we will just copy the string.
- * But to get the field length we decode it.
+ * We are storing the ec_pointQ as u8 string. not as DER
  */
 int
 sc_pkcs15_decode_pubkey_ec(sc_context_t *ctx,
@@ -616,29 +712,23 @@ sc_pkcs15_decode_pubkey_ec(sc_context_t *ctx,
 	size_t ecpoint_len;
 	struct sc_asn1_entry asn1_ec_pointQ[C_ASN1_EC_POINTQ_SIZE];
 
+	LOG_FUNC_CALLED(ctx);
 	sc_copy_asn1_entry(c_asn1_ec_pointQ, asn1_ec_pointQ);
 	sc_format_asn1_entry(asn1_ec_pointQ + 0, &ecpoint_data, &ecpoint_len, 1);
 	r = sc_asn1_decode(ctx, asn1_ec_pointQ, buf, buflen, NULL, NULL);
 	if (r < 0)
-		LOG_TEST_RET(ctx, r, "ASN.1 encoding failed");
+		LOG_TEST_RET(ctx, r, "ASN.1 decoding failed");
 
-	sc_log(ctx, "DEE-EC key=%p, buf=%p, buflen=%d", key, buf, buflen);
-	key->ecpointQ.value = malloc(buflen);
-	if (key->ecpointQ.value == NULL)
-		return SC_ERROR_OUT_OF_MEMORY;
+	if (*ecpoint_data != 0x04)
+		LOG_TEST_RET(ctx, SC_ERROR_NOT_SUPPORTED, "Supported only uncompressed EC pointQ value");
 
-	key->ecpointQ.len = buflen;
-	memcpy(key->ecpointQ.value, buf, buflen);
+	sc_log(ctx, "decode-EC key=%p, buf=%p, buflen=%d", key, buf, buflen);
 
-	/* An uncompressed ecpoint is of the form 04||x||y
-	 * The 04 indicates uncompressed
-	 * x and y are same size, and field_length = sizeof(x) in bits. */
-	/* TODO: -DEE  support more then uncompressed */
-	key->params.field_length = (ecpoint_len - 1)/2 * 8;
-	if (ecpoint_data)
-		free (ecpoint_data);
+	key->ecpointQ.len = ecpoint_len;
+	key->ecpointQ.value = ecpoint_data;
 
-	return r;
+	key->params.field_length = (ecpoint_len - 1)/2 * 8;
+	LOG_FUNC_RETURN(ctx, SC_SUCCESS);
 }
 
 
@@ -649,6 +739,7 @@ sc_pkcs15_encode_pubkey_ec(sc_context_t *ctx, struct sc_pkcs15_pubkey_ec *key,
 	struct sc_asn1_entry asn1_ec_pointQ[C_ASN1_EC_POINTQ_SIZE];
 	int r;
 
+	LOG_FUNC_CALLED(ctx);
 	sc_copy_asn1_entry(c_asn1_ec_pointQ, asn1_ec_pointQ);
 	sc_format_asn1_entry(asn1_ec_pointQ + 0, key->ecpointQ.value, &key->ecpointQ.len, 1);
 
@@ -656,7 +747,7 @@ sc_pkcs15_encode_pubkey_ec(sc_context_t *ctx, struct sc_pkcs15_pubkey_ec *key,
 	LOG_TEST_RET(ctx, r, "ASN.1 encoding failed");
 
 	sc_log(ctx, "EC key->ecpointQ=%p:%d *buf=%p:%d", key->ecpointQ.value, key->ecpointQ.len, *buf, *buflen);
-	return 0;
+	LOG_FUNC_RETURN(ctx, SC_SUCCESS);
 }
 
 
@@ -672,10 +763,92 @@ sc_pkcs15_encode_pubkey(sc_context_t *ctx, struct sc_pkcs15_pubkey *key,
 		return sc_pkcs15_encode_pubkey_gostr3410(ctx, &key->u.gostr3410, buf, len);
 	if (key->algorithm == SC_ALGORITHM_EC)
 		return sc_pkcs15_encode_pubkey_ec(ctx, &key->u.ec, buf, len);
+
 	sc_log(ctx, "Encoding of public key type %u not supported", key->algorithm);
-	return SC_ERROR_NOT_SUPPORTED;
+	LOG_FUNC_RETURN(ctx, SC_ERROR_NOT_SUPPORTED);
+}
+
+
+static const struct sc_asn1_entry       c_asn1_spki_key_items[] = {
+		{ "algorithm",  SC_ASN1_ALGORITHM_ID, SC_ASN1_CONS| SC_ASN1_TAG_SEQUENCE, 0, NULL, NULL},
+		{ "key",        SC_ASN1_BIT_STRING_NI, SC_ASN1_TAG_BIT_STRING, 0, NULL, NULL },
+		{ NULL, 0, 0, 0, NULL, NULL }
+};
+
+static const struct sc_asn1_entry       c_asn1_spki_key[] = {
+		{ "publicKey",  SC_ASN1_STRUCT, SC_ASN1_CONS | SC_ASN1_TAG_SEQUENCE, 0, NULL, NULL},
+		{ NULL, 0, 0, 0, NULL, NULL }
+};
+
+/*
+ * Encode a pubkey as a SPKI, useful for pkcs15-tool, and for PKCS#15 files.
+ */
+int
+sc_pkcs15_encode_pubkey_as_spki(sc_context_t *ctx, struct sc_pkcs15_pubkey *pubkey,
+		u8 **buf, size_t *len)
+{
+	int r;
+	struct sc_asn1_entry  asn1_spki_key[2], asn1_spki_key_items[3];
+	struct sc_pkcs15_u8 pkey;
+	size_t key_len;
+
+	LOG_FUNC_CALLED(ctx);
+	pkey.value =  NULL;
+	pkey.len = 0;
+
+	sc_log(ctx, "Encoding public key with algorithm %i", pubkey->algorithm);
+	if (!pubkey->alg_id)   {
+		pubkey->alg_id = calloc(1, sizeof(struct sc_algorithm_id));
+		if (!pubkey->alg_id)
+			LOG_FUNC_RETURN(ctx, SC_ERROR_OUT_OF_MEMORY);
+
+		sc_init_oid(&pubkey->alg_id->oid);
+		pubkey->alg_id->algorithm = pubkey->algorithm;
+	}
+
+	switch (pubkey->algorithm) {
+	case SC_ALGORITHM_EC:
+		/*
+		 * most keys, but not EC have only one encoding.
+		 * For a SPKI, the ecpoint is placed directly in the
+		 * BIT STRING
+		 */
+		key_len = pubkey->u.ec.ecpointQ.len * 8;
+		pkey.value = pubkey->u.ec.ecpointQ.value;
+		pkey.len = 0; /* flag as do not delete */
+		/* TODO make sure algorithm params are available*/
+		/* if not can we copy them from the u.ec */
+		r = 0;
+		break;
+	case SC_ALGORITHM_GOSTR3410:
+		/* TODO is this needed?  does it cause mem leak? */
+		pubkey->alg_id->params = &pubkey->u.gostr3410.params;
+		r = sc_pkcs15_encode_pubkey(ctx, pubkey, &pkey.value, &pkey.len);
+		key_len = pkey.len * 8;
+		break;
+	default:
+		r = sc_pkcs15_encode_pubkey(ctx, pubkey, &pkey.value, &pkey.len);
+		key_len = pkey.len * 8;
+		break;
+	}
+
+	if (r == 0) {
+		sc_copy_asn1_entry(c_asn1_spki_key, asn1_spki_key);
+		sc_copy_asn1_entry(c_asn1_spki_key_items, asn1_spki_key_items);
+		sc_format_asn1_entry(asn1_spki_key + 0, asn1_spki_key_items, NULL, 1);
+		sc_format_asn1_entry(asn1_spki_key_items + 0, pubkey->alg_id, NULL, 1);
+		sc_format_asn1_entry(asn1_spki_key_items + 1, pkey.value, &key_len, 1);
+
+		r =  sc_asn1_encode(ctx, asn1_spki_key, buf, len);
+	}
+
+	if (pkey.len && pkey.value)
+		free(pkey.value);
+
+	LOG_FUNC_RETURN(ctx, r);
 }
 
+
 int
 sc_pkcs15_decode_pubkey(sc_context_t *ctx, struct sc_pkcs15_pubkey *key,
 		const u8 *buf, size_t len)
@@ -688,10 +861,12 @@ sc_pkcs15_decode_pubkey(sc_context_t *ctx, struct sc_pkcs15_pubkey *key,
 		return sc_pkcs15_decode_pubkey_gostr3410(ctx, &key->u.gostr3410, buf, len);
 	if (key->algorithm == SC_ALGORITHM_EC)
 		return sc_pkcs15_decode_pubkey_ec(ctx, &key->u.ec, buf, len);
+
 	sc_log(ctx, "Decoding of public key type %u not supported", key->algorithm);
 	return SC_ERROR_NOT_SUPPORTED;
 }
 
+
 /*
  * Read public key.
  */
@@ -708,6 +883,7 @@ sc_pkcs15_read_pubkey(struct sc_pkcs15_card *p15card, const struct sc_pkcs15_obj
 
 	assert(p15card != NULL && obj != NULL && out != NULL);
 	LOG_FUNC_CALLED(ctx);
+	sc_log(ctx, "Public key type 0x%X", obj->type);
 
 	switch (obj->type) {
 	case SC_PKCS15_TYPE_PUBKEY_RSA:
@@ -727,44 +903,52 @@ sc_pkcs15_read_pubkey(struct sc_pkcs15_card *p15card, const struct sc_pkcs15_obj
 	}
 	info = (const struct sc_pkcs15_pubkey_info *) obj->data;
 
-	sc_log(ctx, "Content (%p, %i)", obj->content.value, obj->content.len);
-	if (obj->content.value && obj->content.len)   {
-		/* public key data is present as 'direct' value of pkcs#15 object */
-		data = calloc(1, obj->content.len);
-		if (!data)
-			LOG_FUNC_RETURN(ctx, SC_ERROR_OUT_OF_MEMORY);
-		memcpy(data, obj->content.value, obj->content.len);
-		len = obj->content.len;
+	pubkey = calloc(1, sizeof(struct sc_pkcs15_pubkey));
+	if (pubkey == NULL) {
+		free(data);
+		LOG_FUNC_RETURN(ctx, SC_ERROR_OUT_OF_MEMORY);
+	}
+	pubkey->algorithm = algorithm;
+
+	/* starting from SPKI direct value
+	   in a compact form it presents complete public key data */
+	if (info->direct.spki.value && info->direct.spki.len)   {
+		sc_log(ctx, "Using direct SPKI value,  tag 0x%X", *(info->direct.spki.value));
+		r = sc_pkcs15_pubkey_from_spki_sequence(ctx, info->direct.spki.value, info->direct.spki.len, &pubkey);
+		LOG_TEST_RET(ctx, r, "Failed to decode 'SPKI' direct value");
+	}
+	else if (info->direct.raw.value && info->direct.raw.len)   {
+		sc_log(ctx, "Using direct RAW value");
+		r = sc_pkcs15_decode_pubkey(ctx, pubkey, info->direct.raw.value, info->direct.raw.len);
+		LOG_TEST_RET(ctx, r, "Failed to decode 'RAW' direct value");
+		sc_log(ctx, "TODO: for EC keys 'raw' data needs to be completed with referenced algorithm from TokenInfo");
+	}
+	else if (obj->content.value && obj->content.len)   {
+		sc_log(ctx, "Using object content");
+		r = sc_pkcs15_decode_pubkey(ctx, pubkey, obj->content.value, obj->content.len);
+		LOG_TEST_RET(ctx, r, "Failed to decode object content value");
+		sc_log(ctx, "TODO: for EC keys 'raw' data needs to be completed with referenced algorithm from TokenInfo");
 	}
 	else if (p15card->card->ops->read_public_key)   {
+		sc_log(ctx, "Call card specific 'read-public-key' handle");
 		r = p15card->card->ops->read_public_key(p15card->card, algorithm,
-				&info->path, info->key_reference, info->modulus_length,
+				(struct sc_path *)&info->path, info->key_reference, info->modulus_length,
 				&data, &len);
 		LOG_TEST_RET(ctx, r, "Card specific 'read-public' procedure failed.");
+
+		r = sc_pkcs15_decode_pubkey(ctx, pubkey, data, len);
+		LOG_TEST_RET(ctx, r, "Decode public key error");
 	}
 	else if (info->path.len)   {
+		sc_log(ctx, "Read from EF and decode");
 		r = sc_pkcs15_read_file(p15card, &info->path, &data, &len);
 		LOG_TEST_RET(ctx, r, "Failed to read public key file.");
-	}
-	else    {
-		LOG_TEST_RET(ctx, SC_ERROR_NOT_IMPLEMENTED, "No way to get public key");
-	}
 
-	if (!data || !len)
-		LOG_FUNC_RETURN(ctx, SC_ERROR_OBJECT_NOT_VALID);
-
-	pubkey = calloc(1, sizeof(struct sc_pkcs15_pubkey));
-	if (pubkey == NULL) {
-		free(data);
-		LOG_FUNC_RETURN(ctx, SC_ERROR_OUT_OF_MEMORY);
+		r = sc_pkcs15_decode_pubkey(ctx, pubkey, data, len);
+		LOG_TEST_RET(ctx, r, "Decode public key error");
 	}
-	pubkey->algorithm = algorithm;
-	pubkey->data.value = data;
-	pubkey->data.len = len;
-	if (sc_pkcs15_decode_pubkey(ctx, pubkey, data, len)) {
-		free(data);
-		free(pubkey);
-		LOG_FUNC_RETURN(ctx, SC_ERROR_INVALID_ASN1_OBJECT);
+	else {
+		LOG_TEST_RET(ctx, SC_ERROR_NOT_IMPLEMENTED, "No way to get public key");
 	}
 
 	*out = pubkey;
@@ -793,7 +977,7 @@ int
 sc_pkcs15_pubkey_from_prvkey(struct sc_context *ctx, struct sc_pkcs15_prkey *prvkey,
 		struct sc_pkcs15_pubkey **out)
 {
-	struct sc_pkcs15_pubkey *pubkey;
+	struct sc_pkcs15_pubkey *pubkey = NULL;
 	int rv = SC_SUCCESS;
 
 	assert(prvkey && out);
@@ -878,8 +1062,6 @@ sc_pkcs15_erase_pubkey(struct sc_pkcs15_pubkey *key)
 			free(key->u.ec.ecpointQ.value);
 		break;
 	}
-	if (key->data.value)
-		free(key->data.value);
 	sc_mem_clear(key, sizeof(*key));
 }
 
@@ -895,12 +1077,12 @@ sc_pkcs15_free_pubkey(struct sc_pkcs15_pubkey *key)
 
 
 void
-sc_pkcs15_free_pubkey_info(sc_pkcs15_pubkey_info_t *key)
+sc_pkcs15_free_pubkey_info(sc_pkcs15_pubkey_info_t *info)
 {
-	if (key->subject.value)
-		free(key->subject.value);
-	sc_pkcs15_free_key_params(&key->params);
-	free(key);
+	if (info->subject.value)
+		free(info->subject.value);
+	sc_pkcs15_free_key_params(&info->params);
+	free(info);
 }
 
 
@@ -961,7 +1143,7 @@ sc_pkcs15_read_der_file(sc_context_t *ctx, char * filename,
 	*buf = rbuf;
 	rbuf = NULL;
 	r = rbuflen;
-out:
+	out:
 	if (rbuf)
 		free(rbuf);
 	if (f > 0)
@@ -972,116 +1154,127 @@ out:
 
 /*
  * can be used as an SC_ASN1_CALLBACK while parsing a certificate,
- * or can be called from the sc_pkcs15_pubkey_from_spki_filename
+ * or can be called from the sc_pkcs15_pubkey_from_spki_file
  */
 int
-sc_pkcs15_pubkey_from_spki(sc_context_t *ctx, sc_pkcs15_pubkey_t ** outpubkey,
-		u8 *buf, size_t buflen, int depth)
+sc_pkcs15_pubkey_from_spki_fields(struct sc_context *ctx, struct sc_pkcs15_pubkey **outpubkey,
+		unsigned char *buf, size_t buflen, int depth)
 {
 
-	int r;
-	sc_pkcs15_pubkey_t * pubkey = NULL;
-	sc_pkcs15_der_t pk = { NULL, 0 };
+	struct sc_pkcs15_pubkey *pubkey = NULL;
+	struct sc_pkcs15_der pk = { NULL, 0 };
 	struct sc_algorithm_id pk_alg;
 	struct sc_asn1_entry asn1_pkinfo[C_ASN1_PKINFO_ATTR_SIZE];
-	struct sc_asn1_entry asn1_ec_pointQ[2];
+	unsigned char *tmp_buf = NULL;
+	int r;
+
+	sc_log(ctx, "sc_pkcs15_pubkey_from_spki_fields %p:%d %s", buf, buflen, sc_dump_hex(buf, buflen));
 
-	sc_log(ctx, "sc_pkcs15_pubkey_from_spki %p:%d", buf, buflen);
+	tmp_buf = malloc(buflen);
+	if (!tmp_buf)
+		LOG_FUNC_RETURN(ctx, SC_ERROR_OUT_OF_MEMORY);
+	memcpy(tmp_buf, buf, buflen);
+
+	if ((*tmp_buf & SC_ASN1_TAG_CONTEXT))
+		*tmp_buf = SC_ASN1_TAG_CONSTRUCTED | SC_ASN1_TAG_SEQUENCE;
 
 	memset(&pk_alg, 0, sizeof(pk_alg));
 	pubkey = calloc(1, sizeof(sc_pkcs15_pubkey_t));
-	if (pubkey == NULL) {
-		r = SC_ERROR_OUT_OF_MEMORY;
-		goto err;
-	}
+	if (pubkey == NULL)
+		LOG_FUNC_RETURN(ctx, SC_ERROR_OUT_OF_MEMORY);
 
 	sc_copy_asn1_entry(c_asn1_pkinfo, asn1_pkinfo);
+
 	sc_format_asn1_entry(asn1_pkinfo + 0, &pk_alg, NULL, 0);
 	sc_format_asn1_entry(asn1_pkinfo + 1, &pk.value, &pk.len, 0);
 
-	r = sc_asn1_decode(ctx, asn1_pkinfo, buf, buflen, NULL, NULL);
-	if (r < 0)
-		goto err;
+	r = sc_asn1_decode(ctx, asn1_pkinfo, tmp_buf, buflen, NULL, NULL);
+	LOG_TEST_RET(ctx, r, "ASN.1 parsing of subjectPubkeyInfo failed");
 
 	pubkey->alg_id = calloc(1, sizeof(struct sc_algorithm_id));
-	if (pubkey->alg_id == NULL) {
-		r = SC_ERROR_OUT_OF_MEMORY;
-		goto err;
-	}
+	if (pubkey->alg_id == NULL)
+		LOG_FUNC_RETURN(ctx, SC_ERROR_OUT_OF_MEMORY);
+
 	memcpy(pubkey->alg_id, &pk_alg, sizeof(struct sc_algorithm_id));
 	pubkey->algorithm = pk_alg.algorithm;
-
+	pk_alg.params = NULL;
 	sc_log(ctx, "DEE pk_alg.algorithm=%d", pk_alg.algorithm);
 
-	/* pk.len is in bits at this point */
-	switch (pk_alg.algorithm) {
-	case SC_ALGORITHM_EC:
-		/*
-		 * For most keys, the above ASN.1 parsing of a key works, but for EC keys,
-		 * the ec_pointQ in a certificate is stored in a bitstring, but
-		 * in PKCS#11 it is an octet string and we just decoded its
-		 * contents from the bitstring in the certificate. So we need to encode it
-		 * back to an octet string so we can store it as an octet string.
-		 */
-		pk.len >>= 3;  /* Assume it is multiple of 8 */
-/*		pubkey->u.ec.field_length = (pk.len - 1)/2 * 8;  */
+	pk.len = (pk.len + 7)/8;	/* convert number of bits to bytes */
 
-		sc_copy_asn1_entry(c_asn1_ec_pointQ, asn1_ec_pointQ);
-		sc_format_asn1_entry(&asn1_ec_pointQ[0], pk.value, &pk.len, 1);
-		r = sc_asn1_encode(ctx, asn1_ec_pointQ, &pubkey->data.value, &pubkey->data.len);
+	if (pk_alg.algorithm == SC_ALGORITHM_EC)   {
+		/* EC public key is not encapsulated into BIT STRING -- it's a BIT STRING */
+		if (pubkey->alg_id->params) {
+			struct sc_ec_params *ecp = (struct sc_ec_params *)pubkey->alg_id->params;
 
-		sc_log(ctx, "DEE r=%d data=%p:%d", r, pubkey->data.value, pubkey->data.len);
-		break;
-	default:
-		pk.len >>= 3;	/* convert number of bits to bytes */
-		pubkey->data = pk; /* save in publey */
-		pk.value = NULL;
-		break;
-	}
-
-	/* Now decode what every is in pk as it depends on the key algorthim */
+			pubkey->u.ec.params.der.value = malloc(ecp->der_len);
+			if (pubkey->u.ec.params.der.value == NULL)
+				LOG_FUNC_RETURN(ctx, SC_ERROR_OUT_OF_MEMORY);
 
-	r = sc_pkcs15_decode_pubkey(ctx, pubkey, pubkey->data.value, pubkey->data.len);
-	if (r < 0)
-		goto err;
+			memcpy(pubkey->u.ec.params.der.value, ecp->der, ecp->der_len);
+			pubkey->u.ec.params.der.len = ecp->der_len;
+			sc_pkcs15_fix_ec_parameters(ctx, &pubkey->u.ec.params);
+		}
 
-	*outpubkey = pubkey;
-	pubkey = NULL;
-	return 0;
+		pubkey->u.ec.params.field_length = (pk.len - 1)/2 * 8;
+		pubkey->u.ec.ecpointQ.value = malloc(pk.len);
+		if (pubkey->u.ec.ecpointQ.value == NULL)
+			LOG_FUNC_RETURN(ctx, SC_ERROR_OUT_OF_MEMORY);
+		memcpy(pubkey->u.ec.ecpointQ.value, pk.value, pk.len);
+		pubkey->u.ec.ecpointQ.len = pk.len;
+	}
+	else   {
+		/* Public key is expected to be encapsulated into BIT STRING */
+		r = sc_pkcs15_decode_pubkey(ctx, pubkey, pk.value, pk.len);
+		LOG_TEST_RET(ctx, r, "ASN.1 parsing of subjectPubkeyInfo failed");
+	}
 
-err:
-	if (pubkey)
-		free(pubkey);
 	if (pk.value)
 		free(pk.value);
+	if (tmp_buf)
+		free(tmp_buf);
 
-	LOG_TEST_RET(ctx, r, "ASN.1 parsing of  subjectPubkeyInfo failed");
-	LOG_FUNC_RETURN(ctx, r);
+	*outpubkey = pubkey;
+	LOG_FUNC_RETURN(ctx, SC_SUCCESS);
 }
 
 
 int
-sc_pkcs15_pubkey_from_spki_filename(sc_context_t *ctx, char * filename,
+sc_pkcs15_pubkey_from_spki_sequence(sc_context_t *ctx, const u8 *buf, size_t buflen,
 		sc_pkcs15_pubkey_t ** outpubkey)
 {
 	int r;
-	u8 * buf = NULL;
-	size_t buflen = 0;
 	sc_pkcs15_pubkey_t * pubkey = NULL;
 	struct sc_asn1_entry asn1_spki[] = {
-		{ "PublicKeyInfo",SC_ASN1_CALLBACK, SC_ASN1_TAG_SEQUENCE | SC_ASN1_CONS, 0, sc_pkcs15_pubkey_from_spki, &pubkey},
-		{ NULL, 0, 0, 0, NULL, NULL } };
+			{ "subjectPublicKeyInfo", SC_ASN1_CALLBACK, SC_ASN1_TAG_SEQUENCE | SC_ASN1_CONS, 0, sc_pkcs15_pubkey_from_spki_fields, &pubkey},
+			{ NULL, 0, 0, 0, NULL, NULL } };
 
 	*outpubkey = NULL;
+
+	r = sc_asn1_decode(ctx, asn1_spki, buf, buflen, NULL, NULL);
+
+	*outpubkey = pubkey;
+	return r;
+}
+
+
+int
+sc_pkcs15_pubkey_from_spki_file(sc_context_t *ctx, char * filename,
+		sc_pkcs15_pubkey_t ** outpubkey)
+{
+	int r;
+	u8 * buf = NULL;
+	size_t buflen = 0;
+
 	r = sc_pkcs15_read_der_file(ctx, filename, &buf, &buflen);
 	if (r < 0)
 		return r;
 
-	r = sc_asn1_decode(ctx, asn1_spki, buf, buflen, NULL, NULL);
+	r = sc_pkcs15_pubkey_from_spki_sequence(ctx, buf, buflen, outpubkey);
 
 	if (buf)
 		free(buf);
-	*outpubkey = pubkey;
+
 	return r;
 }
 
@@ -1092,20 +1285,20 @@ static struct ec_curve_info {
 	const char *oid_encoded;
 	size_t size;
 } ec_curve_infos[] = {
-	{"secp192r1",		"1.2.840.10045.3.1.1", "06082A8648CE3D030101", 192},
-	{"prime192r1",		"1.2.840.10045.3.1.1", "06082A8648CE3D030101", 192},
-	{"ansiX9p192r1",	"1.2.840.10045.3.1.1", "06082A8648CE3D030101", 192},
-	{"prime256v1",		"1.2.840.10045.3.1.7", "06082A8648CE3D030107", 256},
-	{"secp256r1",		"1.2.840.10045.3.1.7", "06082A8648CE3D030107", 256},
-	{"ansiX9p256r1",	"1.2.840.10045.3.1.7", "06082A8648CE3D030107", 256},
-	{"secp384r1",		"1.3.132.0.34", "06052B81040022", 384},
-	{"prime384v1",		"1.3.132.0.34", "06052B81040022", 384},
-	{"ansiX9p384r1",	"1.3.132.0.34", "06052B81040022", 384},
-	{"brainpoolP192r1",	"1.3.36.3.3.2.8.1.1.3", "06092B2403030208010103", 192},
-	{"brainpoolP224r1",	"1.3.36.3.3.2.8.1.1.5", "06092B2403030208010105", 224},
-	{"brainpoolP256r1",	"1.3.36.3.3.2.8.1.1.7", "06092B2403030208010107", 256},
-	{"brainpoolP320r1",	"1.3.36.3.3.2.8.1.1.9", "06092B2403030208010109", 320},
-	{NULL, NULL, NULL, 0},
+		{"secp192r1",		"1.2.840.10045.3.1.1", "06082A8648CE3D030101", 192},
+		{"prime192r1",		"1.2.840.10045.3.1.1", "06082A8648CE3D030101", 192},
+		{"ansiX9p192r1",	"1.2.840.10045.3.1.1", "06082A8648CE3D030101", 192},
+		{"prime256v1",		"1.2.840.10045.3.1.7", "06082A8648CE3D030107", 256},
+		{"secp256r1",		"1.2.840.10045.3.1.7", "06082A8648CE3D030107", 256},
+		{"ansiX9p256r1",	"1.2.840.10045.3.1.7", "06082A8648CE3D030107", 256},
+		{"secp384r1",		"1.3.132.0.34", "06052B81040022", 384},
+		{"prime384v1",		"1.3.132.0.34", "06052B81040022", 384},
+		{"ansiX9p384r1",	"1.3.132.0.34", "06052B81040022", 384},
+		{"brainpoolP192r1",	"1.3.36.3.3.2.8.1.1.3", "06092B2403030208010103", 192},
+		{"brainpoolP224r1",	"1.3.36.3.3.2.8.1.1.5", "06092B2403030208010105", 224},
+		{"brainpoolP256r1",	"1.3.36.3.3.2.8.1.1.7", "06092B2403030208010107", 256},
+		{"brainpoolP320r1",	"1.3.36.3.3.2.8.1.1.9", "06092B2403030208010109", 320},
+		{NULL, NULL, NULL, 0},
 };
 
 
@@ -1197,7 +1390,7 @@ sc_pkcs15_convert_pubkey(struct sc_pkcs15_pubkey *pkcs15_key, void *evp_key)
 			return SC_ERROR_INVALID_DATA;
 		RSA_free(src);
 		break;
-		}
+	}
 	case EVP_PKEY_DSA: {
 		struct sc_pkcs15_pubkey_dsa *dst = &pkcs15_key->u.dsa;
 		DSA *src = EVP_PKEY_get1_DSA(pk);
@@ -1209,7 +1402,7 @@ sc_pkcs15_convert_pubkey(struct sc_pkcs15_pubkey *pkcs15_key, void *evp_key)
 		sc_pkcs15_convert_bignum(&dst->g, src->g);
 		DSA_free(src);
 		break;
-		}
+	}
 #if OPENSSL_VERSION_NUMBER >= 0x10000000L && !defined(OPENSSL_NO_EC)
 	case NID_id_GostR3410_2001: {
 		struct sc_pkcs15_pubkey_gostr3410 *dst = &pkcs15_key->u.gostr3410;
@@ -1246,7 +1439,7 @@ sc_pkcs15_convert_pubkey(struct sc_pkcs15_pubkey *pkcs15_key, void *evp_key)
 		if (r != 1)
 			return SC_ERROR_INTERNAL;
 		break;
-		}
+	}
 	case EVP_PKEY_EC: {
 		struct sc_pkcs15_pubkey_ec *dst = &pkcs15_key->u.ec;
 		EC_KEY *src = NULL;
@@ -1299,4 +1492,3 @@ sc_pkcs15_convert_pubkey(struct sc_pkcs15_pubkey *pkcs15_key, void *evp_key)
 	return SC_ERROR_NOT_IMPLEMENTED;
 #endif
 }
-
diff --git a/src/libopensc/pkcs15-sc-hsm.c b/src/libopensc/pkcs15-sc-hsm.c
index 4df7e60..fd7c3c9 100644
--- a/src/libopensc/pkcs15-sc-hsm.c
+++ b/src/libopensc/pkcs15-sc-hsm.c
@@ -39,6 +39,74 @@ void sc_hsm_set_serialnr(sc_card_t *card, char *serial);
 
 
 
+static struct ec_curve curves[] = {
+		{
+				{ (unsigned char *) "\x2A\x86\x48\xCE\x3D\x03\x01\x01", 8},	// secp192r1 aka prime192r1
+				{ (unsigned char *) "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFE\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF", 24},
+				{ (unsigned char *) "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFE\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC", 24},
+				{ (unsigned char *) "\x64\x21\x05\x19\xE5\x9C\x80\xE7\x0F\xA7\xE9\xAB\x72\x24\x30\x49\xFE\xB8\xDE\xEC\xC1\x46\xB9\xB1", 24},
+				{ (unsigned char *) "\x04\x18\x8D\xA8\x0E\xB0\x30\x90\xF6\x7C\xBF\x20\xEB\x43\xA1\x88\x00\xF4\xFF\x0A\xFD\x82\xFF\x10\x12\x07\x19\x2B\x95\xFF\xC8\xDA\x78\x63\x10\x11\xED\x6B\x24\xCD\xD5\x73\xF9\x77\xA1\x1E\x79\x48\x11", 49},
+				{ (unsigned char *) "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x99\xDE\xF8\x36\x14\x6B\xC9\xB1\xB4\xD2\x28\x31", 24},
+				{ (unsigned char *) "\x01", 1}
+		},
+		{
+				{ (unsigned char *) "\x2A\x86\x48\xCE\x3D\x03\x01\x07", 8},	// secp256r1 aka prime256r1
+				{ (unsigned char *) "\xFF\xFF\xFF\xFF\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF", 32},
+				{ (unsigned char *) "\xFF\xFF\xFF\xFF\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC", 32},
+				{ (unsigned char *) "\x5A\xC6\x35\xD8\xAA\x3A\x93\xE7\xB3\xEB\xBD\x55\x76\x98\x86\xBC\x65\x1D\x06\xB0\xCC\x53\xB0\xF6\x3B\xCE\x3C\x3E\x27\xD2\x60\x4B", 32},
+				{ (unsigned char *) "\x04\x6B\x17\xD1\xF2\xE1\x2C\x42\x47\xF8\xBC\xE6\xE5\x63\xA4\x40\xF2\x77\x03\x7D\x81\x2D\xEB\x33\xA0\xF4\xA1\x39\x45\xD8\x98\xC2\x96\x4F\xE3\x42\xE2\xFE\x1A\x7F\x9B\x8E\xE7\xEB\x4A\x7C\x0F\x9E\x16\x2B\xCE\x33\x57\x6B\x31\x5E\xCE\xCB\xB6\x40\x68\x37\xBF\x51\xF5", 65},
+				{ (unsigned char *) "\xFF\xFF\xFF\xFF\x00\x00\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xBC\xE6\xFA\xAD\xA7\x17\x9E\x84\xF3\xB9\xCA\xC2\xFC\x63\x25\x51", 32},
+				{ (unsigned char *) "\x01", 1}
+		},
+		{
+				{ (unsigned char *) "\x2B\x24\x03\x03\x02\x08\x01\x01\x03", 9},	// brainpoolP192r1
+				{ (unsigned char *) "\xC3\x02\xF4\x1D\x93\x2A\x36\xCD\xA7\xA3\x46\x30\x93\xD1\x8D\xB7\x8F\xCE\x47\x6D\xE1\xA8\x62\x97", 24},
+				{ (unsigned char *) "\x6A\x91\x17\x40\x76\xB1\xE0\xE1\x9C\x39\xC0\x31\xFE\x86\x85\xC1\xCA\xE0\x40\xE5\xC6\x9A\x28\xEF", 24},
+				{ (unsigned char *) "\x46\x9A\x28\xEF\x7C\x28\xCC\xA3\xDC\x72\x1D\x04\x4F\x44\x96\xBC\xCA\x7E\xF4\x14\x6F\xBF\x25\xC9", 24},
+				{ (unsigned char *) "\x04\xC0\xA0\x64\x7E\xAA\xB6\xA4\x87\x53\xB0\x33\xC5\x6C\xB0\xF0\x90\x0A\x2F\x5C\x48\x53\x37\x5F\xD6\x14\xB6\x90\x86\x6A\xBD\x5B\xB8\x8B\x5F\x48\x28\xC1\x49\x00\x02\xE6\x77\x3F\xA2\xFA\x29\x9B\x8F", 49},
+				{ (unsigned char *) "\xC3\x02\xF4\x1D\x93\x2A\x36\xCD\xA7\xA3\x46\x2F\x9E\x9E\x91\x6B\x5B\xE8\xF1\x02\x9A\xC4\xAC\xC1", 24},
+				{ (unsigned char *) "\x01", 1}
+		},
+		{
+				{ (unsigned char *) "\x2B\x24\x03\x03\x02\x08\x01\x01\x05", 9},	// brainpoolP224r1
+				{ (unsigned char *) "\xD7\xC1\x34\xAA\x26\x43\x66\x86\x2A\x18\x30\x25\x75\xD1\xD7\x87\xB0\x9F\x07\x57\x97\xDA\x89\xF5\x7E\xC8\xC0\xFF", 28},
+				{ (unsigned char *) "\x68\xA5\xE6\x2C\xA9\xCE\x6C\x1C\x29\x98\x03\xA6\xC1\x53\x0B\x51\x4E\x18\x2A\xD8\xB0\x04\x2A\x59\xCA\xD2\x9F\x43", 28},
+				{ (unsigned char *) "\x25\x80\xF6\x3C\xCF\xE4\x41\x38\x87\x07\x13\xB1\xA9\x23\x69\xE3\x3E\x21\x35\xD2\x66\xDB\xB3\x72\x38\x6C\x40\x0B", 28},
+				{ (unsigned char *) "\x04\x0D\x90\x29\xAD\x2C\x7E\x5C\xF4\x34\x08\x23\xB2\xA8\x7D\xC6\x8C\x9E\x4C\xE3\x17\x4C\x1E\x6E\xFD\xEE\x12\xC0\x7D\x58\xAA\x56\xF7\x72\xC0\x72\x6F\x24\xC6\xB8\x9E\x4E\xCD\xAC\x24\x35\x4B\x9E\x99\xCA\xA3\xF6\xD3\x76\x14\x02\xCD", 57},
+				{ (unsigned char *) "\xD7\xC1\x34\xAA\x26\x43\x66\x86\x2A\x18\x30\x25\x75\xD0\xFB\x98\xD1\x16\xBC\x4B\x6D\xDE\xBC\xA3\xA5\xA7\x93\x9F", 28},
+				{ (unsigned char *) "\x01", 1}
+		},
+		{
+				{ (unsigned char *) "\x2B\x24\x03\x03\x02\x08\x01\x01\x07", 9},	// brainpoolP256r1
+				{ (unsigned char *) "\xA9\xFB\x57\xDB\xA1\xEE\xA9\xBC\x3E\x66\x0A\x90\x9D\x83\x8D\x72\x6E\x3B\xF6\x23\xD5\x26\x20\x28\x20\x13\x48\x1D\x1F\x6E\x53\x77", 32},
+				{ (unsigned char *) "\x7D\x5A\x09\x75\xFC\x2C\x30\x57\xEE\xF6\x75\x30\x41\x7A\xFF\xE7\xFB\x80\x55\xC1\x26\xDC\x5C\x6C\xE9\x4A\x4B\x44\xF3\x30\xB5\xD9", 32},
+				{ (unsigned char *) "\x26\xDC\x5C\x6C\xE9\x4A\x4B\x44\xF3\x30\xB5\xD9\xBB\xD7\x7C\xBF\x95\x84\x16\x29\x5C\xF7\xE1\xCE\x6B\xCC\xDC\x18\xFF\x8C\x07\xB6", 32},
+				{ (unsigned char *) "\x04\x8B\xD2\xAE\xB9\xCB\x7E\x57\xCB\x2C\x4B\x48\x2F\xFC\x81\xB7\xAF\xB9\xDE\x27\xE1\xE3\xBD\x23\xC2\x3A\x44\x53\xBD\x9A\xCE\x32\x62\x54\x7E\xF8\x35\xC3\xDA\xC4\xFD\x97\xF8\x46\x1A\x14\x61\x1D\xC9\xC2\x77\x45\x13\x2D\xED\x8E\x54\x5C\x1D\x54\xC7\x2F\x04\x69\x97", 65},
+				{ (unsigned char *) "\xA9\xFB\x57\xDB\xA1\xEE\xA9\xBC\x3E\x66\x0A\x90\x9D\x83\x8D\x71\x8C\x39\x7A\xA3\xB5\x61\xA6\xF7\x90\x1E\x0E\x82\x97\x48\x56\xA7", 32},
+				{ (unsigned char *) "\x01", 1}
+		},
+		{
+				{ (unsigned char *) "\x2B\x24\x03\x03\x02\x08\x01\x01\x09", 9},	// brainpoolP320r1
+				{ (unsigned char *) "\xD3\x5E\x47\x20\x36\xBC\x4F\xB7\xE1\x3C\x78\x5E\xD2\x01\xE0\x65\xF9\x8F\xCF\xA6\xF6\xF4\x0D\xEF\x4F\x92\xB9\xEC\x78\x93\xEC\x28\xFC\xD4\x12\xB1\xF1\xB3\x2E\x27", 40},
+				{ (unsigned char *) "\x3E\xE3\x0B\x56\x8F\xBA\xB0\xF8\x83\xCC\xEB\xD4\x6D\x3F\x3B\xB8\xA2\xA7\x35\x13\xF5\xEB\x79\xDA\x66\x19\x0E\xB0\x85\xFF\xA9\xF4\x92\xF3\x75\xA9\x7D\x86\x0E\xB4", 40},
+				{ (unsigned char *) "\x52\x08\x83\x94\x9D\xFD\xBC\x42\xD3\xAD\x19\x86\x40\x68\x8A\x6F\xE1\x3F\x41\x34\x95\x54\xB4\x9A\xCC\x31\xDC\xCD\x88\x45\x39\x81\x6F\x5E\xB4\xAC\x8F\xB1\xF1\xA6", 40},
+				{ (unsigned char *) "\x04\x43\xBD\x7E\x9A\xFB\x53\xD8\xB8\x52\x89\xBC\xC4\x8E\xE5\xBF\xE6\xF2\x01\x37\xD1\x0A\x08\x7E\xB6\xE7\x87\x1E\x2A\x10\xA5\x99\xC7\x10\xAF\x8D\x0D\x39\xE2\x06\x11\x14\xFD\xD0\x55\x45\xEC\x1C\xC8\xAB\x40\x93\x24\x7F\x77\x27\x5E\x07\x43\xFF\xED\x11\x71\x82\xEA\xA9\xC7\x78\x77\xAA\xAC\x6A\xC7\xD3\x52\x45\xD1\x69\x2E\x8E\xE1", 81},
+				{ (unsigned char *) "\xD3\x5E\x47\x20\x36\xBC\x4F\xB7\xE1\x3C\x78\x5E\xD2\x01\xE0\x65\xF9\x8F\xCF\xA5\xB6\x8F\x12\xA3\x2D\x48\x2E\xC7\xEE\x86\x58\xE9\x86\x91\x55\x5B\x44\xC5\x93\x11", 40},
+				{ (unsigned char *) "\x01", 1}
+		},
+		{
+				{ NULL, 0},
+				{ NULL, 0},
+				{ NULL, 0},
+				{ NULL, 0},
+				{ NULL, 0},
+				{ NULL, 0},
+				{ NULL, 0}
+		}
+};
+
+
+
 #define C_ASN1_CVC_PUBKEY_SIZE 10
 static const struct sc_asn1_entry c_asn1_cvc_pubkey[C_ASN1_CVC_PUBKEY_SIZE] = {
 	{ "publicKeyOID", SC_ASN1_OBJECT, SC_ASN1_UNI | SC_ASN1_OBJECT, 0, NULL, NULL },
@@ -113,7 +181,7 @@ int sc_pkcs15emu_sc_hsm_decode_cvc(sc_pkcs15_card_t * p15card,
 	const u8 *tbuf;
 	int r;
 
-	memset(cvc, 0, sizeof(cvc));
+	memset(cvc, 0, sizeof(*cvc));
 	sc_copy_asn1_entry(c_asn1_req, asn1_req);
 	sc_copy_asn1_entry(c_asn1_authreq, asn1_authreq);
 	sc_copy_asn1_entry(c_asn1_cvc, asn1_cvc);
@@ -147,13 +215,13 @@ int sc_pkcs15emu_sc_hsm_decode_cvc(sc_pkcs15_card_t * p15card,
 
 	sc_format_asn1_entry(asn1_req , &asn1_authreq, NULL, 0);
 
-//	sc_asn1_print_tags(*buf, *buflen);
+/*	sc_asn1_print_tags(*buf, *buflen); */
 
 	tbuf = *buf;
 	r = sc_asn1_read_tag(&tbuf, *buflen, &cla, &tag, &taglen);
 	LOG_TEST_RET(card->ctx, r, "Could not decode card verifiable certificate");
 
-	// Determine if we deal with an authenticated request, plain request or certificate
+	/*  Determine if we deal with an authenticated request, plain request or certificate */
 	if ((cla == (SC_ASN1_TAG_APPLICATION|SC_ASN1_TAG_CONSTRUCTED)) && (tag == 7)) {
 		r = sc_asn1_decode(card->ctx, asn1_req, *buf, *buflen, buf, buflen);
 	} else {
@@ -179,8 +247,6 @@ int sc_pkcs15emu_sc_hsm_encode_cvc(sc_pkcs15_card_t * p15card,
 	struct sc_asn1_entry asn1_cvcert[C_ASN1_CVCERT_SIZE];
 	struct sc_asn1_entry asn1_cvc_body[C_ASN1_CVC_BODY_SIZE];
 	struct sc_asn1_entry asn1_cvc_pubkey[C_ASN1_CVC_PUBKEY_SIZE];
-	unsigned int cla,tag;
-	size_t taglen;
 	size_t lenchr;
 	size_t lencar;
 	int r;
@@ -233,6 +299,124 @@ int sc_pkcs15emu_sc_hsm_encode_cvc(sc_pkcs15_card_t * p15card,
 
 
 
+int sc_pkcs15emu_sc_hsm_get_curve(struct ec_curve **curve, u8 *oid, size_t oidlen)
+{
+	int i;
+
+	for (i = 0; curves[i].oid.value; i++) {
+		if ((curves[i].oid.len == oidlen) && !memcmp(curves[i].oid.value, oid, oidlen)) {
+			*curve = &curves[i];
+			return SC_SUCCESS;
+		}
+	}
+	return SC_ERROR_INVALID_DATA;
+}
+
+
+
+int sc_pkcs15emu_sc_hsm_get_curve_oid(sc_cvc_t *cvc, const struct sc_lv_data **oid)
+{
+	int i;
+
+	for (i = 0; curves[i].oid.value; i++) {
+		if ((curves[i].prime.len == cvc->primeOrModuluslen) && !memcmp(curves[i].prime.value, cvc->primeOrModulus, cvc->primeOrModuluslen)) {
+			*oid = &curves[i].oid;
+			return SC_SUCCESS;
+		}
+	}
+	return SC_ERROR_INVALID_DATA;
+}
+
+
+
+static int sc_pkcs15emu_sc_hsm_get_rsa_public_key(struct sc_context *ctx, sc_cvc_t *cvc, struct sc_pkcs15_pubkey *pubkey)
+{
+	pubkey->algorithm = SC_ALGORITHM_RSA;
+
+	pubkey->alg_id = (struct sc_algorithm_id *)calloc(1, sizeof(struct sc_algorithm_id));
+	if (!pubkey->alg_id)
+		return SC_ERROR_OUT_OF_MEMORY;
+
+	pubkey->alg_id->algorithm = SC_ALGORITHM_RSA;
+
+	pubkey->u.rsa.modulus.len	= cvc->primeOrModuluslen;
+	pubkey->u.rsa.modulus.data	= malloc(pubkey->u.rsa.modulus.len);
+	pubkey->u.rsa.exponent.len	= cvc->coefficientAorExponentlen;
+	pubkey->u.rsa.exponent.data	= malloc(pubkey->u.rsa.exponent.len);
+	if (!pubkey->u.rsa.modulus.data || !pubkey->u.rsa.exponent.data)
+		return SC_ERROR_OUT_OF_MEMORY;
+
+	memcpy(pubkey->u.rsa.exponent.data, cvc->coefficientAorExponent, pubkey->u.rsa.exponent.len);
+	memcpy(pubkey->u.rsa.modulus.data, cvc->primeOrModulus, pubkey->u.rsa.modulus.len);
+
+	return SC_SUCCESS;
+}
+
+
+
+static int sc_pkcs15emu_sc_hsm_get_ec_public_key(struct sc_context *ctx, sc_cvc_t *cvc, struct sc_pkcs15_pubkey *pubkey)
+{
+	struct sc_ec_params *ecp;
+	const struct sc_lv_data *oid;
+	int r;
+
+	pubkey->algorithm = SC_ALGORITHM_EC;
+
+	r = sc_pkcs15emu_sc_hsm_get_curve_oid(cvc, &oid);
+	if (r != SC_SUCCESS)
+		return r;
+
+	ecp = calloc(1, sizeof(struct sc_ec_params));
+	if (!ecp)
+		return SC_ERROR_OUT_OF_MEMORY;
+
+	ecp->der_len = oid->len + 2;
+	ecp->der = calloc(ecp->der_len, 1);
+	if (!ecp->der)
+		return SC_ERROR_OUT_OF_MEMORY;
+
+	ecp->der[0] = 0x06;
+	ecp->der[1] = (u8)oid->len;
+	memcpy(ecp->der + 2, oid->value, oid->len);
+	ecp->type = 1;		// Named curve
+
+	pubkey->alg_id = (struct sc_algorithm_id *)calloc(1, sizeof(struct sc_algorithm_id));
+	if (!pubkey->alg_id)
+		return SC_ERROR_OUT_OF_MEMORY;
+
+	pubkey->alg_id->algorithm = SC_ALGORITHM_EC;
+	pubkey->alg_id->params = ecp;
+
+	pubkey->u.ec.ecpointQ.value = malloc(cvc->publicPointlen);
+	if (!pubkey->u.ec.ecpointQ.value)
+		return SC_ERROR_OUT_OF_MEMORY;
+	memcpy(pubkey->u.ec.ecpointQ.value, cvc->publicPoint, cvc->publicPointlen);
+	pubkey->u.ec.ecpointQ.len = cvc->publicPointlen;
+
+	pubkey->u.ec.params.der.value = malloc(ecp->der_len);
+	if (!pubkey->u.ec.params.der.value)
+		return SC_ERROR_OUT_OF_MEMORY;
+	memcpy(pubkey->u.ec.params.der.value, ecp->der, ecp->der_len);
+	pubkey->u.ec.params.der.len = ecp->der_len;
+
+	sc_pkcs15_fix_ec_parameters(ctx, &pubkey->u.ec.params);
+
+	return SC_SUCCESS;
+}
+
+
+
+int sc_pkcs15emu_sc_hsm_get_public_key(struct sc_context *ctx, sc_cvc_t *cvc, struct sc_pkcs15_pubkey *pubkey)
+{
+	if (cvc->publicPoint || cvc->publicPointlen) {
+		return sc_pkcs15emu_sc_hsm_get_ec_public_key(ctx, cvc, pubkey);
+	} else {
+		return sc_pkcs15emu_sc_hsm_get_rsa_public_key(ctx, cvc, pubkey);
+	}
+}
+
+
+
 void sc_pkcs15emu_sc_hsm_free_cvc(sc_cvc_t *cvc)
 {
 	if (cvc->signature) {
@@ -263,51 +447,55 @@ void sc_pkcs15emu_sc_hsm_free_cvc(sc_cvc_t *cvc)
 
 
 
-static int sc_pkcs15emu_sc_hsm_add_pubkey(sc_pkcs15_card_t *p15card, sc_pkcs15_prkey_info_t *key_info, char *label) {
+static int sc_pkcs15emu_sc_hsm_add_pubkey(sc_pkcs15_card_t *p15card, sc_pkcs15_prkey_info_t *key_info, char *label)
+{
+	struct sc_context *ctx = p15card->card->ctx;
 	sc_card_t *card = p15card->card;
 	sc_pkcs15_pubkey_info_t pubkey_info;
 	sc_pkcs15_object_t pubkey_obj;
 	struct sc_pkcs15_pubkey pubkey;
-	u8 efbin[512];
+	u8 efbin[1024];
 	sc_cvc_t cvc;
 	u8 *cvcpo;
 	size_t cvclen;
 	int r;
 
-	// EF.CERT is selected
+	/* EF.CERT is selected */
 	r = sc_read_binary(p15card->card, 0, efbin, sizeof(efbin), 0);
-	LOG_TEST_RET(card->ctx, r, "Could not read CSR from EF");
+	LOG_TEST_RET(ctx, r, "Could not read CSR from EF");
 
 	cvcpo = efbin;
 	cvclen = r;
 
 	memset(&cvc, 0, sizeof(cvc));
 	r = sc_pkcs15emu_sc_hsm_decode_cvc(p15card, (const u8 **)&cvcpo, &cvclen, &cvc);
-	LOG_TEST_RET(card->ctx, r, "Could decode certificate signing request");
+	LOG_TEST_RET(ctx, r, "Could decode certificate signing request");
 
-	if (cvc.publicPoint || cvc.publicPointlen) {
-		// ToDo implement support for EC Public Keys
-		return SC_SUCCESS;
-	} else {
-		pubkey.algorithm = SC_ALGORITHM_RSA;
-		pubkey.u.rsa.modulus.data = cvc.primeOrModulus;
-		pubkey.u.rsa.modulus.len = cvc.primeOrModuluslen;
-		pubkey.u.rsa.exponent.data = cvc.coefficientAorExponent;
-		pubkey.u.rsa.exponent.len = cvc.coefficientAorExponentlen;
-	}
+	memset(&pubkey, 0, sizeof(pubkey));
+	r = sc_pkcs15emu_sc_hsm_get_public_key(ctx, &cvc, &pubkey);
+	LOG_TEST_RET(card->ctx, r, "Could not extract public key");
 
 	memset(&pubkey_info, 0, sizeof(pubkey_info));
 	memset(&pubkey_obj, 0, sizeof(pubkey_obj));
 
-	sc_pkcs15_encode_pubkey(p15card->card->ctx, &pubkey, &pubkey_obj.content.value, &pubkey_obj.content.len);
+	sc_pkcs15_encode_pubkey(ctx, &pubkey, &pubkey_obj.content.value, &pubkey_obj.content.len);
+	sc_pkcs15_encode_pubkey(ctx, &pubkey, &pubkey_info.direct.raw.value, &pubkey_info.direct.raw.len);
+	sc_pkcs15_encode_pubkey_as_spki(ctx, &pubkey, &pubkey_info.direct.spki.value, &pubkey_info.direct.spki.len);
 
 	pubkey_info.id = key_info->id;
 	strlcpy(pubkey_obj.label, label, sizeof(pubkey_obj.label));
 
-	r = sc_pkcs15emu_add_rsa_pubkey(p15card, &pubkey_obj, &pubkey_info);
-	LOG_TEST_RET(card->ctx, r, "Could not add public key");
+	if (pubkey.algorithm == SC_ALGORITHM_RSA) {
+		pubkey_info.modulus_length = pubkey.u.rsa.modulus.len << 3;
+		r = sc_pkcs15emu_add_rsa_pubkey(p15card, &pubkey_obj, &pubkey_info);
+	} else {
+		pubkey_info.field_length = cvc.primeOrModuluslen << 3;
+		r = sc_pkcs15emu_add_ec_pubkey(p15card, &pubkey_obj, &pubkey_info);
+	}
+	LOG_TEST_RET(ctx, r, "Could not add public key");
 
 	sc_pkcs15emu_sc_hsm_free_cvc(&cvc);
+	sc_pkcs15_erase_pubkey(&pubkey);
 
 	return SC_SUCCESS;
 }
@@ -330,7 +518,7 @@ static int sc_pkcs15emu_sc_hsm_add_prkd(sc_pkcs15_card_t * p15card, u8 keyid) {
 	u8 efbin[512];
 	u8 *ptr;
 	size_t len;
-	int r, i;
+	int r;
 
 	fid[0] = PRKD_PREFIX;
 	fid[1] = keyid;
@@ -393,9 +581,9 @@ static int sc_pkcs15emu_sc_hsm_add_prkd(sc_pkcs15_card_t * p15card, u8 keyid) {
 		return SC_SUCCESS;
 	}
 
-	if (efbin[0] == 0x67) {		// Decode CSR and create public key object
+	if (efbin[0] == 0x67) {		/* Decode CSR and create public key object */
 		sc_pkcs15emu_sc_hsm_add_pubkey(p15card, key_info, prkd.label);
-		return SC_SUCCESS;		// Ignore any errors
+		return SC_SUCCESS;		/* Ignore any errors */
 	}
 
 	if (efbin[0] != 0x30) {
@@ -432,7 +620,7 @@ static int sc_pkcs15emu_sc_hsm_add_dcod(sc_pkcs15_card_t * p15card, u8 id) {
 	u8 efbin[512];
 	const u8 *ptr;
 	size_t len;
-	int r, i;
+	int r;
 
 	fid[0] = DCOD_PREFIX;
 	fid[1] = id;
@@ -481,7 +669,7 @@ static int sc_pkcs15emu_sc_hsm_add_cd(sc_pkcs15_card_t * p15card, u8 id) {
 	u8 efbin[512];
 	const u8 *ptr;
 	size_t len;
-	int r, i;
+	int r;
 
 	fid[0] = CD_PREFIX;
 	fid[1] = id;
@@ -516,6 +704,33 @@ static int sc_pkcs15emu_sc_hsm_add_cd(sc_pkcs15_card_t * p15card, u8 id) {
 
 
 
+static int sc_pkcs15emu_sc_hsm_read_tokeninfo (sc_pkcs15_card_t * p15card)
+{
+	sc_card_t *card = p15card->card;
+	sc_file_t *file = NULL;
+	sc_path_t path;
+	int r;
+	u8 efbin[512];
+
+	LOG_FUNC_CALLED(card->ctx);
+
+	/* Read token info */
+	sc_path_set(&path, SC_PATH_TYPE_FILE_ID, (u8 *) "\x2F\x03", 2, 0, 0);
+	r = sc_select_file(card, &path, &file);
+	LOG_TEST_RET(card->ctx, r, "Could not select EF.TokenInfo");
+	sc_file_free(file);
+
+	r = sc_read_binary(p15card->card, 0, efbin, sizeof(efbin), 0);
+	LOG_TEST_RET(card->ctx, r, "Could not read EF.TokenInfo");
+
+	r = sc_pkcs15_parse_tokeninfo(card->ctx, p15card->tokeninfo, efbin, r);
+	LOG_TEST_RET(card->ctx, r, "Could not decode EF.TokenInfo");
+
+	LOG_FUNC_RETURN(card->ctx, SC_SUCCESS);
+}
+
+
+
 /*
  * Initialize PKCS#15 emulation with user PIN, private keys, certificate and data objects
  *
@@ -532,23 +747,18 @@ static int sc_pkcs15emu_sc_hsm_init (sc_pkcs15_card_t * p15card)
 	struct sc_app_info *appinfo;
 	struct sc_pkcs15_auth_info pin_info;
 	struct sc_pkcs15_object pin_obj;
-	u8 fid[2];
 	u8 efbin[512];
 	u8 *ptr;
 	size_t len;
 
 	LOG_FUNC_CALLED(card->ctx);
 
-	p15card->tokeninfo->label = strdup("SmartCard-HSM");
-	p15card->tokeninfo->manufacturer_id = strdup("www.CardContact.de");
-
 	appinfo = calloc(1, sizeof(struct sc_app_info));
 
 	if (appinfo == NULL) {
 		LOG_FUNC_RETURN(card->ctx, SC_ERROR_OUT_OF_MEMORY);
 	}
 
-	appinfo->label = strdup(p15card->tokeninfo->label);
 	appinfo->aid = sc_hsm_aid;
 
 	appinfo->ddo.aid = sc_hsm_aid;
@@ -558,15 +768,15 @@ static int sc_pkcs15emu_sc_hsm_init (sc_pkcs15_card_t * p15card)
 	r = sc_select_file(card, &path, &file);
 	LOG_TEST_RET(card->ctx, r, "Could not select SmartCard-HSM application");
 
-	p15card->card->version.hw_major = 24;	// JCOP 2.4.1r3
+	p15card->card->version.hw_major = 24;	/* JCOP 2.4.1r3 */
 	p15card->card->version.hw_minor = 13;
 	p15card->card->version.fw_major = file->prop_attr[file->prop_attr_len - 2];
 	p15card->card->version.fw_minor = file->prop_attr[file->prop_attr_len - 1];
 
 	sc_file_free(file);
 
-	// Read device certificate to determine serial number
-	sc_path_set(&path, SC_PATH_TYPE_FILE_ID, "\x2F\x02", 2, 0, 0);
+	/* Read device certificate to determine serial number */
+	sc_path_set(&path, SC_PATH_TYPE_FILE_ID, (u8 *) "\x2F\x02", 2, 0, 0);
 	r = sc_select_file(card, &path, &file);
 	LOG_TEST_RET(card->ctx, r, "Could not select EF.C_DevAut");
 	sc_file_free(file);
@@ -581,14 +791,36 @@ static int sc_pkcs15emu_sc_hsm_init (sc_pkcs15_card_t * p15card)
 	r = sc_pkcs15emu_sc_hsm_decode_cvc(p15card, (const u8 **)&ptr, &len, &devcert);
 	LOG_TEST_RET(card->ctx, r, "Could not decode EF.C_DevAut");
 
-	len = strlen(devcert.chr);		// Strip last 5 digit sequence number from CHR
+	sc_pkcs15emu_sc_hsm_read_tokeninfo(p15card);
+
+	if (p15card->tokeninfo->label == NULL) {
+		p15card->tokeninfo->label = strdup("SmartCard-HSM");
+		if (p15card->tokeninfo->label == NULL)
+			LOG_FUNC_RETURN(card->ctx, SC_ERROR_OUT_OF_MEMORY);
+	}
+
+	if ((p15card->tokeninfo->manufacturer_id != NULL) && !strcmp("(unknown)", p15card->tokeninfo->manufacturer_id)) {
+		free(p15card->tokeninfo->manufacturer_id);
+		p15card->tokeninfo->manufacturer_id = NULL;
+	}
+
+	if (p15card->tokeninfo->manufacturer_id == NULL) {
+		p15card->tokeninfo->manufacturer_id = strdup("www.CardContact.de");
+		if (p15card->tokeninfo->manufacturer_id == NULL)
+			LOG_FUNC_RETURN(card->ctx, SC_ERROR_OUT_OF_MEMORY);
+	}
+
+	appinfo->label = strdup(p15card->tokeninfo->label);
+	if (appinfo->label == NULL)
+		LOG_FUNC_RETURN(card->ctx, SC_ERROR_OUT_OF_MEMORY);
+
+	len = strlen(devcert.chr);		/* Strip last 5 digit sequence number from CHR */
 	assert(len >= 8);
 	len -= 5;
 
 	p15card->tokeninfo->serial_number = calloc(len + 1, 1);
-	if (p15card->tokeninfo->serial_number == NULL) {
+	if (p15card->tokeninfo->serial_number == NULL)
 		LOG_FUNC_RETURN(card->ctx, SC_ERROR_OUT_OF_MEMORY);
-	}
 
 	memcpy(p15card->tokeninfo->serial_number, devcert.chr, len);
 	*(p15card->tokeninfo->serial_number + len) = 0;
@@ -597,7 +829,6 @@ static int sc_pkcs15emu_sc_hsm_init (sc_pkcs15_card_t * p15card)
 
 	sc_pkcs15emu_sc_hsm_free_cvc(&devcert);
 
-
 	memset(&pin_info, 0, sizeof(pin_info));
 	memset(&pin_obj, 0, sizeof(pin_obj));
 
@@ -607,9 +838,9 @@ static int sc_pkcs15emu_sc_hsm_init (sc_pkcs15_card_t * p15card)
 	pin_info.attrs.pin.reference = 0x81;
 	pin_info.attrs.pin.flags = SC_PKCS15_PIN_FLAG_LOCAL|SC_PKCS15_PIN_FLAG_INITIALIZED|SC_PKCS15_PIN_FLAG_UNBLOCK_DISABLED|SC_PKCS15_PIN_FLAG_EXCHANGE_REF_DATA;
 	pin_info.attrs.pin.type = SC_PKCS15_PIN_TYPE_ASCII_NUMERIC;
-	pin_info.attrs.pin.min_length = 4;
+	pin_info.attrs.pin.min_length = 6;
 	pin_info.attrs.pin.stored_length = 0;
-	pin_info.attrs.pin.max_length = 16;
+	pin_info.attrs.pin.max_length = 15;
 	pin_info.attrs.pin.pad_char = '\0';
 	pin_info.tries_left = 3;
 	pin_info.max_tries = 3;
@@ -661,7 +892,9 @@ static int sc_pkcs15emu_sc_hsm_init (sc_pkcs15_card_t * p15card)
 			r = sc_pkcs15emu_sc_hsm_add_cd(p15card, filelist[i + 1]);
 			break;
 		}
-		LOG_TEST_RET(card->ctx, r, "Error adding elements to framework");
+		if (r != SC_SUCCESS) {
+			sc_log(card->ctx, "Error %d adding elements to framework", r);
+		}
 	}
 
 	LOG_FUNC_RETURN(card->ctx, SC_SUCCESS);
diff --git a/src/libopensc/pkcs15-sec.c b/src/libopensc/pkcs15-sec.c
index 963b962..e6ebafe 100644
--- a/src/libopensc/pkcs15-sec.c
+++ b/src/libopensc/pkcs15-sec.c
@@ -85,7 +85,7 @@ int sc_pkcs15_decipher(struct sc_pkcs15_card *p15card,
 {
 	sc_context_t *ctx = p15card->card->ctx;
 	int r;
-	sc_algorithm_info_t *alg_info;
+	sc_algorithm_info_t *alg_info = NULL;
 	sc_security_env_t senv;
 	const struct sc_pkcs15_prkey_info *prkey = (const struct sc_pkcs15_prkey_info *) obj->data;
 	unsigned long pad_flags = 0, sec_flags = 0;
@@ -169,7 +169,7 @@ int sc_pkcs15_decipher(struct sc_pkcs15_card *p15card,
 	/* Strip any padding */
 	if (pad_flags & SC_ALGORITHM_RSA_PAD_PKCS1) {
 		size_t s = r;
-		r = sc_pkcs1_strip_02_padding(out, s, out, &s);
+		r = sc_pkcs1_strip_02_padding(ctx, out, s, out, &s);
 		LOG_TEST_RET(ctx, r, "Invalid PKCS#1 padding");
 	}
 
@@ -190,7 +190,7 @@ int sc_pkcs15_derive(struct sc_pkcs15_card *p15card,
 {
 	sc_context_t *ctx = p15card->card->ctx;
 	int r;
-	sc_algorithm_info_t *alg_info;
+	sc_algorithm_info_t *alg_info = NULL;
 	sc_security_env_t senv;
 	const struct sc_pkcs15_prkey_info *prkey = (const struct sc_pkcs15_prkey_info *) obj->data;
 	unsigned long pad_flags = 0, sec_flags = 0;
@@ -276,7 +276,7 @@ int sc_pkcs15_derive(struct sc_pkcs15_card *p15card,
 	/* Strip any padding */
 	if (pad_flags & SC_ALGORITHM_RSA_PAD_PKCS1) {
 		size_t s = r;
-		r = sc_pkcs1_strip_02_padding(out, s, out, &s);
+		r = sc_pkcs1_strip_02_padding(ctx, out, s, out, &s);
 		LOG_TEST_RET(ctx, r, "Invalid PKCS#1 padding");
 	}
 
diff --git a/src/libopensc/pkcs15-syn.c b/src/libopensc/pkcs15-syn.c
index e2f6004..0b189a8 100644
--- a/src/libopensc/pkcs15-syn.c
+++ b/src/libopensc/pkcs15-syn.c
@@ -67,6 +67,8 @@ extern int sc_pkcs15emu_itacns_init_ex(sc_pkcs15_card_t *,
 					sc_pkcs15emu_opt_t *);
 extern int sc_pkcs15emu_sc_hsm_init_ex(sc_pkcs15_card_t *,
 					sc_pkcs15emu_opt_t *);
+extern int sc_pkcs15emu_dnie_init_ex(sc_pkcs15_card_t *,
+					sc_pkcs15emu_opt_t *);
 
 static struct {
 	const char *		name;
@@ -90,6 +92,7 @@ static struct {
 	{ "pteid",	sc_pkcs15emu_pteid_init_ex	},
 	{ "oberthur",   sc_pkcs15emu_oberthur_init_ex	},
 	{ "sc-hsm",   sc_pkcs15emu_sc_hsm_init_ex	},
+	{ "dnie",       sc_pkcs15emu_dnie_init_ex   },
 	{ NULL, NULL }
 };
 
@@ -113,6 +116,11 @@ int sc_pkcs15_is_emulation_only(sc_card_t *card)
 		case SC_CARD_TYPE_OPENPGP_V1:
 		case SC_CARD_TYPE_OPENPGP_V2:
 		case SC_CARD_TYPE_SC_HSM:
+		case SC_CARD_TYPE_DNIE_BASE:
+		case SC_CARD_TYPE_DNIE_BLANK:
+		case SC_CARD_TYPE_DNIE_ADMIN:
+		case SC_CARD_TYPE_DNIE_USER:
+		case SC_CARD_TYPE_DNIE_TERMINATED:
 			return 1;
 		default:
 			return 0;
@@ -165,7 +173,7 @@ sc_pkcs15_bind_synthetic(sc_pkcs15_card_t *p15card)
 							/* we got a hit */
 							goto out;
 					}
-			}	
+			}
 		}
 		else if (builtin_enabled) {
 			sc_debug(ctx, SC_LOG_DEBUG_NORMAL, "no emulator list in config file, trying all builtin emulators\n");
@@ -179,11 +187,12 @@ sc_pkcs15_bind_synthetic(sc_pkcs15_card_t *p15card)
 		}
 
 		/* search for 'emulate foo { ... }' entries in the conf file */
-		sc_debug(ctx, SC_LOG_DEBUG_NORMAL, "searching for 'emulate foo { ... }' blocks\n");
+		sc_log(ctx, "searching for 'emulate foo { ... }' blocks\n");
 		blocks = scconf_find_blocks(ctx->conf, conf_block, "emulate", NULL);
+		sc_log(ctx, "Blocks: %p", blocks);
 		for (i = 0; blocks && (blk = blocks[i]) != NULL; i++) {
 			const char *name = blk->name->data;
-			sc_debug(ctx, SC_LOG_DEBUG_NORMAL, "trying %s\n", name);
+			sc_log(ctx, "trying %s", name);
 			r = parse_emu_block(p15card, blk);
 			if (r == SC_SUCCESS) {
 				free(blocks);
@@ -193,21 +202,22 @@ sc_pkcs15_bind_synthetic(sc_pkcs15_card_t *p15card)
 		if (blocks)
 			free(blocks);
 	}
-		
+
 	/* Total failure */
-	return SC_ERROR_WRONG_CARD;
+	LOG_FUNC_RETURN(ctx, SC_ERROR_WRONG_CARD);
 
 out:	if (r == SC_SUCCESS) {
 		p15card->magic  = SC_PKCS15_CARD_MAGIC;
 		p15card->flags |= SC_PKCS15_CARD_FLAG_EMULATED;
-	} else if (r != SC_ERROR_WRONG_CARD) {
-		sc_debug(ctx, SC_LOG_DEBUG_NORMAL, "Failed to load card emulator: %s\n",
-				sc_strerror(r));
+	}
+	else if (r != SC_ERROR_WRONG_CARD) {
+		sc_log(ctx, "Failed to load card emulator: %s", sc_strerror(r));
 	}
 
-	return r;
+	LOG_FUNC_RETURN(ctx, r);
 }
 
+
 static int parse_emu_block(sc_pkcs15_card_t *p15card, scconf_block *conf)
 {
 	sc_card_t	*card = p15card->card;
diff --git a/src/libopensc/pkcs15.c b/src/libopensc/pkcs15.c
index 1fd56ec..5219ae5 100644
--- a/src/libopensc/pkcs15.c
+++ b/src/libopensc/pkcs15.c
@@ -26,16 +26,22 @@
 #include <string.h>
 #include <stdio.h>
 #include <assert.h>
+#include <ctype.h>
 
 #include "cardctl.h"
 #include "internal.h"
 #include "pkcs15.h"
 #include "asn1.h"
+#include "common/libscdl.h"
 
 #ifdef ENABLE_OPENSSL
 #include <openssl/sha.h>
 #endif
 
+#ifdef HAVE_SYS_TIME_H
+#include <sys/time.h>
+#endif
+
 static const struct sc_asn1_entry c_asn1_twlabel[] = {
 	{ "twlabel", SC_ASN1_UTF8STRING, SC_ASN1_TAG_UTF8STRING, 0, NULL, NULL },
 	{ NULL, 0, 0, 0, NULL, NULL }
@@ -390,13 +396,14 @@ static const struct sc_asn1_entry c_asn1_ddo[] = {
 	{ NULL, 0, 0, 0, NULL, NULL }
 };
 
-static void fix_authentic_ddo(struct sc_pkcs15_card *p15card)
+static void
+fix_authentic_ddo(struct sc_pkcs15_card *p15card)
 {
 	/* AuthentIC v3.2 card has invalid ODF and tokenInfo paths encoded into DDO.
 	 * Cleanup this attributes -- default values must be OK.
 	 */
 	if (p15card->card->type == SC_CARD_TYPE_OBERTHUR_AUTHENTIC_3_2)   {
-        	if (p15card->file_odf != NULL) {
+		if (p15card->file_odf != NULL) {
 			sc_file_free(p15card->file_odf);
 			p15card->file_odf = NULL;
 		}
@@ -408,7 +415,8 @@ static void fix_authentic_ddo(struct sc_pkcs15_card *p15card)
 }
 
 
-static void fix_starcos_pkcs15_card(struct sc_pkcs15_card *p15card)
+static void
+fix_starcos_pkcs15_card(struct sc_pkcs15_card *p15card)
 {
 	struct sc_context *ctx = p15card->card->ctx;
 
@@ -436,6 +444,13 @@ static void fix_starcos_pkcs15_card(struct sc_pkcs15_card *p15card)
 				sc_log(ctx, "D-TRUST 2ca card detected");
 			}
 
+			/* D-TRUST card 2.4 2ce (cards working with all types of hashes
+			 * and no addition of prefix) */
+			else if (strstr(p15card->tokeninfo->label, "2ce") != NULL) {
+				p15card->card->caps |= SC_CARD_CAP_ONLY_RAW_HASH;
+				sc_log(ctx, "D-TRUST 2ce card detected");
+			}
+
 			/* XXX: probably there are more D-Trust card in the wild,
 			 *      which also need these flags to produce valid signatures
 			 */
@@ -443,7 +458,9 @@ static void fix_starcos_pkcs15_card(struct sc_pkcs15_card *p15card)
 	}
 }
 
-static int parse_ddo(struct sc_pkcs15_card *p15card, const u8 * buf, size_t buflen)
+
+static int
+parse_ddo(struct sc_pkcs15_card *p15card, const u8 * buf, size_t buflen)
 {
 	struct sc_context *ctx = p15card->card->ctx;
 	struct sc_asn1_entry asn1_ddo[7];
@@ -512,28 +529,6 @@ mem_err:
 	LOG_FUNC_RETURN(ctx, SC_ERROR_OUT_OF_MEMORY);
 }
 
-#if 0
-static int encode_ddo(struct sc_pkcs15_card *p15card, u8 **buf, size_t *buflen)
-{
-	struct sc_asn1_entry asn1_ddo[5];
-	int r;
-	size_t label_len;
-
-	sc_copy_asn1_entry(c_asn1_ddo, asn1_ddo);
-
-	sc_format_asn1_entry(asn1_ddo + 1, &card->file_odf.path, NULL, 0);
-	sc_format_asn1_entry(asn1_ddo + 2, &card->file_tokeninfo.path, NULL, 0);
-
-	r = sc_asn1_encode(ctx, asn1_dir, buf, buflen);
-	if (r) {
-		sc_debug(ctx, SC_LOG_DEBUG_NORMAL, "sc_asn1_encode() failed: %s",
-		      sc_strerror(r));
-		return r;
-	}
-	return 0;
-}
-#endif
-
 
 char *
 sc_pkcs15_get_lastupdate(struct sc_pkcs15_card *p15card)
@@ -544,6 +539,7 @@ sc_pkcs15_get_lastupdate(struct sc_pkcs15_card *p15card)
         unsigned char *content, last_update[32];
         size_t lupdate_len = sizeof(last_update) - 1;
 	int r, content_len;
+	size_t size;
 
 	if (p15card->tokeninfo->last_update.gtime)
 		goto done;
@@ -555,11 +551,16 @@ sc_pkcs15_get_lastupdate(struct sc_pkcs15_card *p15card)
 	if (r < 0)
 		return NULL;
 
-	content = calloc(file->size, 1);
+	if (file->size) {
+		size = 1024;
+	} else {
+		size = file->size;
+	}
+	content = calloc(size, 1);
 	if (!content)
 		return NULL;
 
-	r = sc_read_binary(p15card->card, 0, content, file->size, 0);
+	r = sc_read_binary(p15card->card, 0, content, size, 0);
 	if (r < 0)
 		return NULL;
 	content_len = r;
@@ -587,7 +588,7 @@ static const struct sc_asn1_entry c_asn1_odf[] = {
 	{ "privateKeys",	 SC_ASN1_STRUCT, SC_ASN1_CTX | 0 | SC_ASN1_CONS, 0, NULL, NULL },
 	{ "publicKeys",		 SC_ASN1_STRUCT, SC_ASN1_CTX | 1 | SC_ASN1_CONS, 0, NULL, NULL },
 	{ "trustedPublicKeys",	 SC_ASN1_STRUCT, SC_ASN1_CTX | 2 | SC_ASN1_CONS, 0, NULL, NULL },
-	{ "secretKeys",	 	 SC_ASN1_STRUCT, SC_ASN1_CTX | 3 | SC_ASN1_CONS, 0, NULL, NULL },
+	{ "secretKeys",		 SC_ASN1_STRUCT, SC_ASN1_CTX | 3 | SC_ASN1_CONS, 0, NULL, NULL },
 	{ "certificates",	 SC_ASN1_STRUCT, SC_ASN1_CTX | 4 | SC_ASN1_CONS, 0, NULL, NULL },
 	{ "trustedCertificates", SC_ASN1_STRUCT, SC_ASN1_CTX | 5 | SC_ASN1_CONS, 0, NULL, NULL },
 	{ "usefulCertificates",  SC_ASN1_STRUCT, SC_ASN1_CTX | 6 | SC_ASN1_CONS, 0, NULL, NULL },
@@ -608,12 +609,14 @@ static const unsigned int odf_indexes[] = {
 	SC_PKCS15_AODF,
 };
 
-static int parse_odf(const u8 * buf, size_t buflen, struct sc_pkcs15_card *p15card)
+
+static int
+parse_odf(const unsigned char * buf, size_t buflen, struct sc_pkcs15_card *p15card)
 {
-	const u8 *p = buf;
+	const unsigned char *p = buf;
 	size_t left = buflen;
 	int r, i, type;
-	sc_path_t path;
+	struct sc_path path;
 	struct sc_asn1_entry asn1_obj_or_path[] = {
 		{ "path", SC_ASN1_PATH, SC_ASN1_CONS | SC_ASN1_SEQUENCE, 0, &path, NULL },
 		{ NULL, 0, 0, 0, NULL, NULL }
@@ -640,11 +643,12 @@ static int parse_odf(const u8 * buf, size_t buflen, struct sc_pkcs15_card *p15ca
 	return 0;
 }
 
-int sc_pkcs15_encode_odf(sc_context_t *ctx,
-			 struct sc_pkcs15_card *p15card,
-			 u8 **buf, size_t *buflen)
+
+int
+sc_pkcs15_encode_odf(struct sc_context *ctx, struct sc_pkcs15_card *p15card,
+			 unsigned char **buf, size_t *buflen)
 {
-	sc_path_t path;
+	struct sc_path path;
 	struct sc_asn1_entry asn1_obj_or_path[] = {
 		{ "path", SC_ASN1_PATH, SC_ASN1_CONS | SC_ASN1_SEQUENCE, 0, &path, NULL },
 		{ NULL, 0, 0, 0, NULL, NULL }
@@ -701,7 +705,9 @@ err:
 	return r;
 }
 
-struct sc_pkcs15_card * sc_pkcs15_card_new(void)
+
+struct sc_pkcs15_card *
+sc_pkcs15_card_new(void)
 {
 	struct sc_pkcs15_card *p15card;
 
@@ -721,7 +727,9 @@ struct sc_pkcs15_card * sc_pkcs15_card_new(void)
 	return p15card;
 }
 
-void sc_pkcs15_free_tokeninfo(struct sc_pkcs15_card *p15card)
+
+void
+sc_pkcs15_free_tokeninfo(struct sc_pkcs15_card *p15card)
 {
 	if (!p15card || !p15card->tokeninfo)
 		return;
@@ -749,7 +757,9 @@ void sc_pkcs15_free_tokeninfo(struct sc_pkcs15_card *p15card)
 	p15card->tokeninfo = NULL;
 }
 
-void sc_pkcs15_free_app(struct sc_pkcs15_card *p15card)
+
+void
+sc_pkcs15_free_app(struct sc_pkcs15_card *p15card)
 {
 	if (!p15card || !p15card->app)
 		return;
@@ -762,7 +772,9 @@ void sc_pkcs15_free_app(struct sc_pkcs15_card *p15card)
 	p15card->app = NULL;
 }
 
-void sc_pkcs15_card_free(struct sc_pkcs15_card *p15card)
+
+void
+sc_pkcs15_card_free(struct sc_pkcs15_card *p15card)
 {
 	if (p15card == NULL)
 		return;
@@ -771,6 +783,11 @@ void sc_pkcs15_card_free(struct sc_pkcs15_card *p15card)
 	if (p15card->ops.clear)
 		p15card->ops.clear(p15card);
 
+	/* For more complicated MD data a dedicated release procedure
+	 * has to be implemented. */
+	if (p15card->md_data)
+		free(p15card->md_data);
+
 	sc_pkcs15_remove_objects(p15card);
 	sc_pkcs15_remove_dfs(p15card);
 	sc_pkcs15_free_unusedspace(p15card);
@@ -791,7 +808,9 @@ void sc_pkcs15_card_free(struct sc_pkcs15_card *p15card)
 	free(p15card);
 }
 
-void sc_pkcs15_card_clear(sc_pkcs15_card_t *p15card)
+
+void
+sc_pkcs15_card_clear(struct sc_pkcs15_card *p15card)
 {
 	if (p15card == NULL)
 		return;
@@ -857,7 +876,9 @@ void sc_pkcs15_card_clear(sc_pkcs15_card_t *p15card)
 	}
 }
 
-struct sc_app_info * sc_find_app(struct sc_card *card, struct sc_aid *aid)
+
+struct sc_app_info *
+sc_find_app(struct sc_card *card, struct sc_aid *aid)
 {
 	int ii;
 
@@ -877,7 +898,9 @@ struct sc_app_info * sc_find_app(struct sc_card *card, struct sc_aid *aid)
 	return NULL;
 }
 
-static struct sc_app_info *sc_dup_app_info(const struct sc_app_info *info)
+
+static struct sc_app_info *
+sc_dup_app_info(const struct sc_app_info *info)
 {
 	struct sc_app_info *out = calloc(1, sizeof(struct sc_app_info));
 
@@ -901,6 +924,7 @@ static struct sc_app_info *sc_dup_app_info(const struct sc_app_info *info)
 	return out;
 }
 
+
 struct sc_app_info *
 sc_pkcs15_get_application_by_type(struct sc_card * card, char *app_type)
 {
@@ -913,7 +937,7 @@ sc_pkcs15_get_application_by_type(struct sc_card * card, char *app_type)
 
 	if (card->app_count < 0)   {
 		rv = sc_enum_apps(card);
-        	if (rv < 0 && rv != SC_ERROR_FILE_NOT_FOUND)
+		if (rv < 0 && rv != SC_ERROR_FILE_NOT_FOUND)
 			return NULL;
 	}
 
@@ -943,14 +967,16 @@ sc_pkcs15_get_application_by_type(struct sc_card * card, char *app_type)
 	return out;
 }
 
-static int sc_pkcs15_bind_internal(sc_pkcs15_card_t *p15card, struct sc_aid *aid)
+
+static int
+sc_pkcs15_bind_internal(struct sc_pkcs15_card *p15card, struct sc_aid *aid)
 {
-	sc_path_t tmppath;
-	sc_card_t    *card = p15card->card;
-	sc_context_t *ctx  = card->ctx;
-	sc_pkcs15_tokeninfo_t tokeninfo;
-	sc_pkcs15_df_t *df;
-	const sc_app_info_t *info = NULL;
+	struct sc_path tmppath;
+	struct sc_card    *card = p15card->card;
+	struct sc_context *ctx  = card->ctx;
+	struct sc_pkcs15_tokeninfo tokeninfo;
+	struct sc_pkcs15_df *df;
+	const struct sc_app_info *info = NULL;
 	unsigned char *buf = NULL;
 	size_t len;
 	int    err, ok = 0;
@@ -972,8 +998,7 @@ static int sc_pkcs15_bind_internal(sc_pkcs15_card_t *p15card, struct sc_aid *aid
 
 	info = sc_find_app(card, aid);
 	if (info)   {
-		sc_log(ctx, "bind to application('%s',aid:'%s')",  info->label,
-				sc_dump_hex(info->aid.value, info->aid.len));
+		sc_log(ctx, "bind to application('%s',aid:'%s')", info->label, sc_dump_hex(info->aid.value, info->aid.len));
 		p15card->app = sc_dup_app_info(info);
 		if (!p15card->app)   {
 			err = SC_ERROR_OUT_OF_MEMORY;
@@ -988,7 +1013,7 @@ static int sc_pkcs15_bind_internal(sc_pkcs15_card_t *p15card, struct sc_aid *aid
 
 	}
 	else if (aid)   {
-		sc_log(ctx, "Application(aid:'%s') not found", sc_dump_hex(aid->value, aid->len));
+		sc_log(ctx, "Application '%s' not found", sc_dump_hex(aid->value, aid->len));
 		err = SC_ERROR_INVALID_ARGUMENTS;
 		goto end;
 	}
@@ -1004,8 +1029,11 @@ static int sc_pkcs15_bind_internal(sc_pkcs15_card_t *p15card, struct sc_aid *aid
 		sc_format_path("3F00", &p15card->file_app->path);
 		err = SC_SUCCESS;
 	}
-	if (err < 0)
+
+	if (err < 0)   {
+		sc_log (ctx, "Cannot select application path");
 		goto end;
+	}
 
 	if (p15card->file_odf == NULL) {
 		/* check if an ODF is present; we don't know yet whether we have a pkcs15 card */
@@ -1037,16 +1065,20 @@ static int sc_pkcs15_bind_internal(sc_pkcs15_card_t *p15card, struct sc_aid *aid
 	}
 	buf = malloc(len);
 	if(buf == NULL)
-		return SC_ERROR_OUT_OF_MEMORY;
+		LOG_FUNC_RETURN(ctx, SC_ERROR_OUT_OF_MEMORY);
 
 	err = sc_read_binary(card, 0, buf, len, 0);
-	if (err < 0)
+	if (err < 0)   {
+		sc_log(ctx, "read EF(ODF) file error: %s", sc_strerror(err));
 		goto end;
-	if (err < 2) {
+	}
+	else if (err < 2) {
 		err = SC_ERROR_PKCS15_APP_NOT_FOUND;
+		sc_log(ctx, "Invalid content of EF(ODF): %s", sc_strerror(err));
 		goto end;
 	}
 	len = err;
+
 	if (parse_odf(buf, len, p15card)) {
 		err = SC_ERROR_PKCS15_APP_NOT_FOUND;
 		sc_log(ctx, "Unable to parse ODF");
@@ -1074,30 +1106,39 @@ static int sc_pkcs15_bind_internal(sc_pkcs15_card_t *p15card, struct sc_aid *aid
 		sc_file_free(p15card->file_tokeninfo);
 		p15card->file_tokeninfo = NULL;
 	}
+
 	err = sc_select_file(card, &tmppath, &p15card->file_tokeninfo);
-	if (err)
+	if (err)   {
+		sc_log(ctx, "cannot select EF(TokenInfo) file: %s", sc_strerror(err));
 		goto end;
+	}
 
-	if ((len = p15card->file_tokeninfo->size) == 0) {
+	len = p15card->file_tokeninfo->size;
+	if (!len) {
 		sc_log(ctx, "EF(TokenInfo) is empty");
 		goto end;
 	}
 	buf = malloc(len);
 	if(buf == NULL)
-		return SC_ERROR_OUT_OF_MEMORY;
+		LOG_FUNC_RETURN(ctx, SC_ERROR_OUT_OF_MEMORY);
 
 	err = sc_read_binary(card, 0, buf, len, 0);
-	if (err < 0)
+	if (err < 0)   {
+		sc_log(ctx, "read EF(TokenInfo) file error: %s", sc_strerror(err));
 		goto end;
+	}
 	if (err <= 2) {
 		err = SC_ERROR_PKCS15_APP_NOT_FOUND;
+		sc_log(ctx, "Invalid content of EF(TokenInfo): %s", sc_strerror(err));
 		goto end;
 	}
 
 	memset(&tokeninfo, 0, sizeof(tokeninfo));
 	err = sc_pkcs15_parse_tokeninfo(ctx, &tokeninfo, buf, (size_t)err);
-	if (err != SC_SUCCESS)
+	if (err != SC_SUCCESS)   {
+		sc_log(ctx, "cannot parse TokenInfo content: %s", sc_strerror(err));
 		goto end;
+	}
 
 	*(p15card->tokeninfo) = tokeninfo;
 
@@ -1118,16 +1159,21 @@ end:
 		free(buf);
 	if (!ok) {
 		sc_pkcs15_card_clear(p15card);
-		return err;
+		if (err == SC_ERROR_FILE_NOT_FOUND)
+			err = SC_ERROR_WRONG_CARD;
+		LOG_FUNC_RETURN(ctx, err);
 	}
 
-	return SC_SUCCESS;
+	LOG_FUNC_RETURN(ctx, SC_SUCCESS);
 }
 
-int sc_pkcs15_bind(sc_card_t *card, struct sc_aid *aid, struct sc_pkcs15_card **p15card_out)
+
+int
+sc_pkcs15_bind(struct sc_card *card, struct sc_aid *aid,
+		struct sc_pkcs15_card **p15card_out)
 {
 	struct sc_pkcs15_card *p15card = NULL;
-	sc_context_t *ctx = card->ctx;
+	struct sc_context *ctx = card->ctx;
 	scconf_block *conf_block = NULL;
 	int r, emu_first, enable_emu;
 
@@ -1151,10 +1197,12 @@ int sc_pkcs15_bind(sc_card_t *card, struct sc_aid *aid, struct sc_pkcs15_card **
 		p15card->opts.use_file_cache = scconf_get_bool(conf_block, "use_file_caching", p15card->opts.use_file_cache);
 		p15card->opts.use_pin_cache = scconf_get_bool(conf_block, "use_pin_caching", p15card->opts.use_pin_cache);
 		p15card->opts.pin_cache_counter = scconf_get_int(conf_block, "pin_cache_counter", p15card->opts.pin_cache_counter);
-		p15card->opts.pin_cache_ignore_user_consent =  scconf_get_bool(conf_block, "pin_cache_ignore_user_consent", p15card->opts.pin_cache_ignore_user_consent);
+		p15card->opts.pin_cache_ignore_user_consent =  scconf_get_bool(conf_block, "pin_cache_ignore_user_consent",
+				p15card->opts.pin_cache_ignore_user_consent);
 	}
 	sc_log(ctx, "PKCS#15 options: use_file_cache=%d use_pin_cache=%d pin_cache_counter=%d pin_cache_ignore_user_consent=%d",
-	         p15card->opts.use_file_cache, p15card->opts.use_pin_cache, p15card->opts.pin_cache_counter, p15card->opts.pin_cache_ignore_user_consent);
+	         p15card->opts.use_file_cache, p15card->opts.use_pin_cache,
+		 p15card->opts.pin_cache_counter, p15card->opts.pin_cache_ignore_user_consent);
 
 	r = sc_lock(card);
 	if (r) {
@@ -1165,6 +1213,7 @@ int sc_pkcs15_bind(sc_card_t *card, struct sc_aid *aid, struct sc_pkcs15_card **
 
 	enable_emu = scconf_get_bool(conf_block, "enable_pkcs15_emulation", 1);
 	if (enable_emu) {
+		sc_log(ctx, "PKCS#15 emulation enabled");
 		emu_first = scconf_get_bool(conf_block, "try_emulation_first", 0);
 		if (emu_first || sc_pkcs15_is_emulation_only(card)) {
 			r = sc_pkcs15_bind_synthetic(p15card);
@@ -1181,7 +1230,8 @@ int sc_pkcs15_bind(sc_card_t *card, struct sc_aid *aid, struct sc_pkcs15_card **
 			if (r < 0)
 				goto error;
 		}
-	} else {
+	}
+	else {
 		r = sc_pkcs15_bind_internal(p15card, aid);
 		if (r < 0)
 			goto error;
@@ -1198,9 +1248,12 @@ error:
 	LOG_FUNC_RETURN(ctx, r);
 }
 
-int sc_pkcs15_unbind(struct sc_pkcs15_card *p15card)
+
+int
+sc_pkcs15_unbind(struct sc_pkcs15_card *p15card)
 {
 	assert(p15card != NULL && p15card->magic == SC_PKCS15_CARD_MAGIC);
+
 	LOG_FUNC_CALLED(p15card->card->ctx);
 	if (p15card->dll_handle)
 		sc_dlclose(p15card->dll_handle);
@@ -1209,18 +1262,16 @@ int sc_pkcs15_unbind(struct sc_pkcs15_card *p15card)
 	return 0;
 }
 
+
 static int
-__sc_pkcs15_search_objects(sc_pkcs15_card_t *p15card,
-			unsigned int class_mask, unsigned int type,
-			int (*func)(sc_pkcs15_object_t *, void *),
-			void *func_arg,
+__sc_pkcs15_search_objects(struct sc_pkcs15_card *p15card, unsigned int class_mask, unsigned int type,
+			int (*func)(sc_pkcs15_object_t *, void *), void *func_arg,
 			sc_pkcs15_object_t **ret, size_t ret_size)
 {
-	sc_pkcs15_object_t *obj;
-	sc_pkcs15_df_t	*df;
+	struct sc_pkcs15_object *obj = NULL;
+	struct sc_pkcs15_df	*df = NULL;
 	unsigned int	df_mask = 0;
 	size_t		match_count = 0;
-	int		r = 0;
 
 	if (type)
 		class_mask |= SC_PKCS15_TYPE_TO_CLASS(type);
@@ -1259,7 +1310,8 @@ __sc_pkcs15_search_objects(sc_pkcs15_card_t *p15card,
 			continue;
 		/* Enumerate the DF's, so p15card->obj_list is
 		 * populated. */
-		r = sc_pkcs15_parse_df(p15card, df);
+		/* FIXME dont ignore errors */
+		sc_pkcs15_parse_df(p15card, df);
 	}
 
 	/* And now loop over all objects */
@@ -1287,13 +1339,17 @@ __sc_pkcs15_search_objects(sc_pkcs15_card_t *p15card,
 	return match_count;
 }
 
-int sc_pkcs15_get_objects(struct sc_pkcs15_card *p15card, unsigned int type,
-			  struct sc_pkcs15_object **ret, size_t ret_size)
+
+int
+sc_pkcs15_get_objects(struct sc_pkcs15_card *p15card, unsigned int type,
+		struct sc_pkcs15_object **ret, size_t ret_size)
 {
 	return sc_pkcs15_get_objects_cond(p15card, type, NULL, NULL, ret, ret_size);
 }
 
-static int compare_obj_id(struct sc_pkcs15_object *obj, const sc_pkcs15_id_t *id)
+
+static int
+compare_obj_id(struct sc_pkcs15_object *obj, const struct sc_pkcs15_id *id)
 {
 	void *data = obj->data;
 
@@ -1324,14 +1380,18 @@ static int compare_obj_id(struct sc_pkcs15_object *obj, const sc_pkcs15_id_t *id
 	return 0;
 }
 
-static int sc_obj_app_oid(struct sc_pkcs15_object *obj, const struct sc_object_id *app_oid)
+
+static int
+sc_obj_app_oid(struct sc_pkcs15_object *obj, const struct sc_object_id *app_oid)
 {
 	if (obj->type & SC_PKCS15_TYPE_DATA_OBJECT)
 		return sc_compare_oid(&((struct sc_pkcs15_data_info *) obj->data)->app_oid, app_oid);
 	return 0;
 }
 
-static int compare_obj_usage(sc_pkcs15_object_t *obj, unsigned int mask, unsigned int value)
+
+static int
+compare_obj_usage(struct sc_pkcs15_object *obj, unsigned int mask, unsigned int value)
 {
 	void		*data = obj->data;
 	unsigned int	usage;
@@ -1355,7 +1415,9 @@ static int compare_obj_usage(sc_pkcs15_object_t *obj, unsigned int mask, unsigne
 	return (usage & mask & value) != 0;
 }
 
-static int compare_obj_flags(sc_pkcs15_object_t *obj, unsigned int mask, unsigned int value)
+
+static int
+compare_obj_flags(struct sc_pkcs15_object *obj, unsigned int mask, unsigned int value)
 {
 	struct sc_pkcs15_auth_info *auth_info;
 	unsigned int	flags;
@@ -1373,7 +1435,9 @@ static int compare_obj_flags(sc_pkcs15_object_t *obj, unsigned int mask, unsigne
 	return !((flags ^ value) & mask);
 }
 
-static int compare_obj_reference(sc_pkcs15_object_t *obj, int value)
+
+static int
+compare_obj_reference(struct sc_pkcs15_object *obj, int value)
 {
 	struct sc_pkcs15_auth_info *auth_info;
 	void		*data = obj->data;
@@ -1398,7 +1462,9 @@ static int compare_obj_reference(sc_pkcs15_object_t *obj, int value)
 	return reference == value;
 }
 
-static int compare_obj_path(sc_pkcs15_object_t *obj, const sc_path_t *path)
+
+static int
+compare_obj_path(struct sc_pkcs15_object *obj, const struct sc_path *path)
 {
 	void *data = obj->data;
 
@@ -1423,7 +1489,9 @@ static int compare_obj_path(sc_pkcs15_object_t *obj, const sc_path_t *path)
 	return 0;
 }
 
-static int compare_obj_data_name(sc_pkcs15_object_t *obj, const char *app_label, const char *label)
+
+static int
+compare_obj_data_name(struct sc_pkcs15_object *obj, const char *app_label, const char *label)
 {
 	struct sc_pkcs15_data_info *cinfo = (struct sc_pkcs15_data_info *) obj->data;
 
@@ -1434,7 +1502,9 @@ static int compare_obj_data_name(sc_pkcs15_object_t *obj, const char *app_label,
 		!strcmp(obj->label, label);
 }
 
-static int compare_obj_key(struct sc_pkcs15_object *obj, void *arg)
+
+static int
+compare_obj_key(struct sc_pkcs15_object *obj, void *arg)
 {
 	struct sc_pkcs15_search_key *sk = (struct sc_pkcs15_search_key *) arg;
 
@@ -1460,9 +1530,10 @@ static int compare_obj_key(struct sc_pkcs15_object *obj, void *arg)
 	return 1;
 }
 
-static int find_by_key(struct sc_pkcs15_card *p15card,
-		       unsigned int type, struct sc_pkcs15_search_key *sk,
-		       struct sc_pkcs15_object **out)
+
+static int
+find_by_key(struct sc_pkcs15_card *p15card, unsigned int type, struct sc_pkcs15_search_key *sk,
+		struct sc_pkcs15_object **out)
 {
 	int r;
 
@@ -1474,9 +1545,10 @@ static int find_by_key(struct sc_pkcs15_card *p15card,
 	return 0;
 }
 
+
 int
-sc_pkcs15_search_objects(sc_pkcs15_card_t *p15card, sc_pkcs15_search_key_t *sk,
-			sc_pkcs15_object_t **ret, size_t ret_size)
+sc_pkcs15_search_objects(struct sc_pkcs15_card *p15card, struct sc_pkcs15_search_key *sk,
+			struct sc_pkcs15_object **ret, size_t ret_size)
 {
 	return __sc_pkcs15_search_objects(p15card,
 			sk->class_mask, sk->type,
@@ -1484,7 +1556,9 @@ sc_pkcs15_search_objects(sc_pkcs15_card_t *p15card, sc_pkcs15_search_key_t *sk,
 			ret, ret_size);
 }
 
-int sc_pkcs15_get_objects_cond(struct sc_pkcs15_card *p15card, unsigned int type,
+
+int
+sc_pkcs15_get_objects_cond(struct sc_pkcs15_card *p15card, unsigned int type,
 			       int (* func)(struct sc_pkcs15_object *, void *),
 			       void *func_arg,
 			       struct sc_pkcs15_object **ret, size_t ret_size)
@@ -1493,11 +1567,12 @@ int sc_pkcs15_get_objects_cond(struct sc_pkcs15_card *p15card, unsigned int type
 			func, func_arg, ret, ret_size);
 }
 
-int sc_pkcs15_find_object_by_id(sc_pkcs15_card_t *p15card,
-				unsigned int type, const sc_pkcs15_id_t *id,
-				sc_pkcs15_object_t **out)
+
+int sc_pkcs15_find_object_by_id(struct sc_pkcs15_card *p15card,
+				unsigned int type, const struct sc_pkcs15_id *id,
+				struct sc_pkcs15_object **out)
 {
-	sc_pkcs15_search_key_t sk;
+	struct sc_pkcs15_search_key sk;
 	int	r;
 
 	memset(&sk, 0, sizeof(sk));
@@ -1511,44 +1586,50 @@ int sc_pkcs15_find_object_by_id(sc_pkcs15_card_t *p15card,
 	return 0;
 }
 
-int sc_pkcs15_find_cert_by_id(struct sc_pkcs15_card *p15card,
-			      const struct sc_pkcs15_id *id,
-			      struct sc_pkcs15_object **out)
+
+int
+sc_pkcs15_find_cert_by_id(struct sc_pkcs15_card *p15card, const struct sc_pkcs15_id *id,
+		struct sc_pkcs15_object **out)
 {
 	return sc_pkcs15_find_object_by_id(p15card, SC_PKCS15_TYPE_CERT, id, out);
 }
 
-int sc_pkcs15_find_prkey_by_id(struct sc_pkcs15_card *p15card,
-			       const struct sc_pkcs15_id *id,
-			       struct sc_pkcs15_object **out)
+
+int
+sc_pkcs15_find_prkey_by_id(struct sc_pkcs15_card *p15card, const struct sc_pkcs15_id *id,
+		struct sc_pkcs15_object **out)
 {
 	return sc_pkcs15_find_object_by_id(p15card, SC_PKCS15_TYPE_PRKEY, id, out);
 }
 
-int sc_pkcs15_find_pubkey_by_id(struct sc_pkcs15_card *p15card,
-				const struct sc_pkcs15_id *id,
-				struct sc_pkcs15_object **out)
+
+int
+sc_pkcs15_find_pubkey_by_id(struct sc_pkcs15_card *p15card, const struct sc_pkcs15_id *id,
+		struct sc_pkcs15_object **out)
 {
 	return sc_pkcs15_find_object_by_id(p15card, SC_PKCS15_TYPE_PUBKEY, id, out);
 }
 
-int sc_pkcs15_find_skey_by_id(struct sc_pkcs15_card *p15card,
-				const struct sc_pkcs15_id *id,
-				struct sc_pkcs15_object **out)
+
+int
+sc_pkcs15_find_skey_by_id(struct sc_pkcs15_card *p15card, const struct sc_pkcs15_id *id,
+		struct sc_pkcs15_object **out)
 {
 	return sc_pkcs15_find_object_by_id(p15card, SC_PKCS15_TYPE_SKEY, id, out);
 }
 
-int sc_pkcs15_find_pin_by_auth_id(struct sc_pkcs15_card *p15card,
-			     const struct sc_pkcs15_id *id,
-			     struct sc_pkcs15_object **out)
+
+int
+sc_pkcs15_find_pin_by_auth_id(struct sc_pkcs15_card *p15card, const struct sc_pkcs15_id *id,
+		struct sc_pkcs15_object **out)
 {
 	return sc_pkcs15_find_object_by_id(p15card, SC_PKCS15_TYPE_AUTH, id, out);
 }
 
-int sc_pkcs15_find_pin_by_reference(struct sc_pkcs15_card *p15card,
-				const sc_path_t *path, int reference,
-				struct sc_pkcs15_object **out)
+
+int
+sc_pkcs15_find_pin_by_reference(struct sc_pkcs15_card *p15card, const sc_path_t *path, int reference,
+		struct sc_pkcs15_object **out)
 {
 	struct sc_pkcs15_search_key sk;
 
@@ -1560,8 +1641,9 @@ int sc_pkcs15_find_pin_by_reference(struct sc_pkcs15_card *p15card,
 	return find_by_key(p15card, SC_PKCS15_TYPE_AUTH_PIN, &sk, out);
 }
 
-int sc_pkcs15_find_pin_by_type_and_reference(struct sc_pkcs15_card *p15card,
-				const sc_path_t *path,
+
+int
+sc_pkcs15_find_pin_by_type_and_reference(struct sc_pkcs15_card *p15card, const struct sc_path *path,
 				unsigned auth_method, int reference,
 				struct sc_pkcs15_object **out)
 {
@@ -1596,7 +1678,9 @@ int sc_pkcs15_find_pin_by_type_and_reference(struct sc_pkcs15_card *p15card,
 	return SC_ERROR_OBJECT_NOT_FOUND;
 }
 
-int sc_pkcs15_find_so_pin(struct sc_pkcs15_card *p15card, struct sc_pkcs15_object **out)
+
+int
+sc_pkcs15_find_so_pin(struct sc_pkcs15_card *p15card, struct sc_pkcs15_object **out)
 {
 	struct sc_pkcs15_search_key sk;
 
@@ -1606,11 +1690,13 @@ int sc_pkcs15_find_so_pin(struct sc_pkcs15_card *p15card, struct sc_pkcs15_objec
 	return find_by_key(p15card, SC_PKCS15_TYPE_AUTH_PIN, &sk, out);
 }
 
-int sc_pkcs15_find_pin_by_flags(struct sc_pkcs15_card *p15card,
+
+int
+sc_pkcs15_find_pin_by_flags(struct sc_pkcs15_card *p15card,
 		unsigned flags, unsigned mask, int *index,
 		struct sc_pkcs15_object **out)
 {
-	sc_context_t *ctx = p15card->card->ctx;
+	struct sc_context *ctx = p15card->card->ctx;
 	struct sc_pkcs15_object *auths[SC_PKCS15_MAX_PINS];
 	int r, i, num, idx = 0;
 
@@ -1644,18 +1730,20 @@ int sc_pkcs15_find_pin_by_flags(struct sc_pkcs15_card *p15card,
 	LOG_FUNC_RETURN(ctx, SC_ERROR_OBJECT_NOT_FOUND);
 }
 
-int sc_pkcs15_find_data_object_by_id(struct sc_pkcs15_card *p15card,
-				const struct sc_pkcs15_id *id,
-				struct sc_pkcs15_object **out)
+
+int
+sc_pkcs15_find_data_object_by_id(struct sc_pkcs15_card *p15card, const struct sc_pkcs15_id *id,
+		struct sc_pkcs15_object **out)
 {
 	return sc_pkcs15_find_object_by_id(p15card, SC_PKCS15_TYPE_DATA_OBJECT, id, out);
 }
 
-int sc_pkcs15_find_data_object_by_app_oid(struct sc_pkcs15_card *p15card,
-				const struct sc_object_id *app_oid,
-				struct sc_pkcs15_object **out)
+
+int
+sc_pkcs15_find_data_object_by_app_oid(struct sc_pkcs15_card *p15card, const struct sc_object_id *app_oid,
+		struct sc_pkcs15_object **out)
 {
-	sc_pkcs15_search_key_t sk;
+	struct sc_pkcs15_search_key sk;
 	int	r;
 
 	memset(&sk, 0, sizeof(sk));
@@ -1671,12 +1759,12 @@ int sc_pkcs15_find_data_object_by_app_oid(struct sc_pkcs15_card *p15card,
 	return 0;
 }
 
-int sc_pkcs15_find_data_object_by_name(struct sc_pkcs15_card *p15card,
-				const char *app_label,
-				const char *label,
-				struct sc_pkcs15_object **out)
+
+int
+sc_pkcs15_find_data_object_by_name(struct sc_pkcs15_card *p15card, const char *app_label, const char *label,
+		struct sc_pkcs15_object **out)
 {
-	sc_pkcs15_search_key_t sk;
+	struct sc_pkcs15_search_key sk;
 	int	r;
 
 	memset(&sk, 0, sizeof(sk));
@@ -1693,8 +1781,9 @@ int sc_pkcs15_find_data_object_by_name(struct sc_pkcs15_card *p15card,
 	return 0;
 }
 
-int sc_pkcs15_find_prkey_by_id_usage(struct sc_pkcs15_card *p15card,
-			       const struct sc_pkcs15_id *id,
+
+int
+sc_pkcs15_find_prkey_by_id_usage(struct sc_pkcs15_card *p15card, const struct sc_pkcs15_id *id,
 			       unsigned int usage,
 			       struct sc_pkcs15_object **out)
 {
@@ -1707,8 +1796,9 @@ int sc_pkcs15_find_prkey_by_id_usage(struct sc_pkcs15_card *p15card,
 	return find_by_key(p15card, SC_PKCS15_TYPE_PRKEY, &sk, out);
 }
 
-int sc_pkcs15_find_prkey_by_reference(sc_pkcs15_card_t *p15card,
-				const sc_path_t *path,
+
+int
+sc_pkcs15_find_prkey_by_reference(struct sc_pkcs15_card *p15card, const struct sc_path *path,
 				int reference,
 				struct sc_pkcs15_object **out)
 {
@@ -1722,8 +1812,9 @@ int sc_pkcs15_find_prkey_by_reference(sc_pkcs15_card_t *p15card,
 	return find_by_key(p15card, SC_PKCS15_TYPE_PRKEY, &sk, out);
 }
 
-int sc_pkcs15_add_object(struct sc_pkcs15_card *p15card,
-			 struct sc_pkcs15_object *obj)
+
+int
+sc_pkcs15_add_object(struct sc_pkcs15_card *p15card, struct sc_pkcs15_object *obj)
 {
 	struct sc_pkcs15_object *p = p15card->obj_list;
 
@@ -1735,15 +1826,16 @@ int sc_pkcs15_add_object(struct sc_pkcs15_card *p15card,
 		return 0;
 	}
 	while (p->next != NULL)
- 		p = p->next;
+		p = p->next;
 	p->next = obj;
 	obj->prev = p;
 
 	return 0;
 }
 
-void sc_pkcs15_remove_object(struct sc_pkcs15_card *p15card,
-			     struct sc_pkcs15_object *obj)
+
+void
+sc_pkcs15_remove_object(struct sc_pkcs15_card *p15card, struct sc_pkcs15_object *obj)
 {
 	if (!obj)
 		return;
@@ -1755,6 +1847,7 @@ void sc_pkcs15_remove_object(struct sc_pkcs15_card *p15card,
 		obj->next->prev = obj->prev;
 }
 
+
 static void
 sc_pkcs15_remove_objects(struct sc_pkcs15_card *p15card)
 {
@@ -1770,7 +1863,9 @@ sc_pkcs15_remove_objects(struct sc_pkcs15_card *p15card)
 	p15card->obj_list = NULL;
 }
 
-void sc_pkcs15_free_object(struct sc_pkcs15_object *obj)
+
+void
+sc_pkcs15_free_object(struct sc_pkcs15_object *obj)
 {
 	if (!obj)
 		return;
@@ -1794,15 +1889,14 @@ void sc_pkcs15_free_object(struct sc_pkcs15_object *obj)
 		free(obj->data);
 	}
 
-	if (obj->guid != NULL)
-		free(obj->guid);
-
 	sc_pkcs15_free_object_content(obj);
 
 	free(obj);
 }
 
-int sc_pkcs15_add_df(struct sc_pkcs15_card *p15card, unsigned int type, const sc_path_t *path)
+
+int
+sc_pkcs15_add_df(struct sc_pkcs15_card *p15card, unsigned int type, const sc_path_t *path)
 {
 	struct sc_pkcs15_df *p, *newdf;
 
@@ -1826,6 +1920,7 @@ int sc_pkcs15_add_df(struct sc_pkcs15_card *p15card, unsigned int type, const sc
 	return 0;
 }
 
+
 static void
 sc_pkcs15_remove_dfs(struct sc_pkcs15_card *p15card)
 {
@@ -1842,16 +1937,16 @@ sc_pkcs15_remove_dfs(struct sc_pkcs15_card *p15card)
 	p15card->df_list = NULL;
 }
 
-int sc_pkcs15_encode_df(sc_context_t *ctx,
-			struct sc_pkcs15_card *p15card,
-			struct sc_pkcs15_df *df,
-			u8 **buf_out, size_t *bufsize_out)
+
+int
+sc_pkcs15_encode_df(struct sc_context *ctx, struct sc_pkcs15_card *p15card, struct sc_pkcs15_df *df,
+		unsigned char **buf_out, size_t *bufsize_out)
 {
-	u8 *buf = NULL, *tmp = NULL;
+	unsigned char *buf = NULL, *tmp = NULL, *p;
 	size_t bufsize = 0, tmpsize;
 	const struct sc_pkcs15_object *obj;
-	int (* func)(sc_context_t *, const struct sc_pkcs15_object *nobj,
-		     u8 **nbuf, size_t *nbufsize) = NULL;
+	int (* func)(struct sc_context *, const struct sc_pkcs15_object *nobj,
+		     unsigned char **nbuf, size_t *nbufsize) = NULL;
 	int r;
 
 	assert(p15card != NULL && p15card->magic == SC_PKCS15_CARD_MAGIC);
@@ -1890,7 +1985,13 @@ int sc_pkcs15_encode_df(sc_context_t *ctx,
 			free(buf);
 			return r;
 		}
-		buf = (u8 *) realloc(buf, bufsize + tmpsize);
+		p = (u8 *) realloc(buf, bufsize + tmpsize);
+		if (!p) {
+			free(tmp);
+			free(buf);
+			return SC_ERROR_OUT_OF_MEMORY;
+		}
+		buf = p;
 		memcpy(buf + bufsize, tmp, tmpsize);
 		free(tmp);
 		bufsize += tmpsize;
@@ -1901,12 +2002,13 @@ int sc_pkcs15_encode_df(sc_context_t *ctx,
 	return 0;
 }
 
-int sc_pkcs15_parse_df(struct sc_pkcs15_card *p15card,
-		       struct sc_pkcs15_df *df)
+
+int
+sc_pkcs15_parse_df(struct sc_pkcs15_card *p15card, struct sc_pkcs15_df *df)
 {
-	sc_context_t *ctx = p15card->card->ctx;
-	u8 *buf;
-	const u8 *p;
+	struct sc_context *ctx = p15card->card->ctx;
+	unsigned char *buf;
+	const unsigned char *p;
 	size_t bufsize;
 	int r;
 	struct sc_pkcs15_object *obj = NULL;
@@ -1990,11 +2092,13 @@ ret:
 	LOG_FUNC_RETURN(ctx, r);
 }
 
-int sc_pkcs15_add_unusedspace(struct sc_pkcs15_card *p15card,
-		     const sc_path_t *path, const sc_pkcs15_id_t *auth_id)
+
+int
+sc_pkcs15_add_unusedspace(struct sc_pkcs15_card *p15card, const struct sc_path *path,
+		const struct sc_pkcs15_id *auth_id)
 {
 	struct sc_context *ctx = p15card->card->ctx;
-	sc_pkcs15_unusedspace_t *p = p15card->unusedspace_list, *new_unusedspace;
+	struct sc_pkcs15_unusedspace *p = p15card->unusedspace_list, *new_unusedspace;
 
 	if (path->count == -1) {
 		char pbuf[SC_MAX_PATH_STRING_SIZE];
@@ -2026,8 +2130,9 @@ int sc_pkcs15_add_unusedspace(struct sc_pkcs15_card *p15card,
 	return 0;
 }
 
-void sc_pkcs15_remove_unusedspace(struct sc_pkcs15_card *p15card,
-			 sc_pkcs15_unusedspace_t *unusedspace)
+
+void
+sc_pkcs15_remove_unusedspace(struct sc_pkcs15_card *p15card, struct sc_pkcs15_unusedspace *unusedspace)
 {
 	if (!unusedspace)
 		return;
@@ -2043,6 +2148,7 @@ void sc_pkcs15_remove_unusedspace(struct sc_pkcs15_card *p15card,
 	free(unusedspace);
 }
 
+
 static void
 sc_pkcs15_free_unusedspace(struct sc_pkcs15_card *p15card)
 {
@@ -2058,11 +2164,12 @@ sc_pkcs15_free_unusedspace(struct sc_pkcs15_card *p15card)
 	p15card->unusedspace_list = NULL;
 }
 
-int sc_pkcs15_encode_unusedspace(sc_context_t *ctx,
-			 struct sc_pkcs15_card *p15card,
-			 u8 **buf, size_t *buflen)
+
+int
+sc_pkcs15_encode_unusedspace(struct sc_context *ctx, struct sc_pkcs15_card *p15card,
+			 unsigned char **buf, size_t *buflen)
 {
-	sc_path_t dummy_path;
+	struct sc_path dummy_path;
 	static const struct sc_asn1_entry c_asn1_unusedspace[] = {
 		{ "UnusedSpace", SC_ASN1_STRUCT, SC_ASN1_TAG_SEQUENCE | SC_ASN1_CONS, 0, NULL, NULL },
 		{ NULL, 0, 0, 0, NULL, NULL }
@@ -2075,7 +2182,7 @@ int sc_pkcs15_encode_unusedspace(sc_context_t *ctx,
 	struct sc_asn1_entry *asn1_unusedspace = NULL;
 	struct sc_asn1_entry *asn1_values = NULL;
 	int unusedspace_count = 0, r, c = 0;
-	sc_pkcs15_unusedspace_t *unusedspace;
+	struct sc_pkcs15_unusedspace *unusedspace = NULL;
 
 	sc_format_path("3F00", &dummy_path);
 	dummy_path.index = dummy_path.count = 0;
@@ -2130,13 +2237,15 @@ err:
 	return r;
 }
 
-int sc_pkcs15_parse_unusedspace(const u8 * buf, size_t buflen, struct sc_pkcs15_card *p15card)
+
+int
+sc_pkcs15_parse_unusedspace(const unsigned char *buf, size_t buflen, struct sc_pkcs15_card *p15card)
 {
-	const u8 *p = buf;
+	const unsigned char *p = buf;
 	size_t left = buflen;
 	int r;
-	sc_path_t path, dummy_path;
-	sc_pkcs15_id_t auth_id;
+	struct sc_path path, dummy_path;
+	struct sc_pkcs15_id auth_id;
 	struct sc_asn1_entry asn1_unusedspace[] = {
 		{ "UnusedSpace", SC_ASN1_STRUCT, SC_ASN1_TAG_SEQUENCE | SC_ASN1_CONS, 0, NULL, NULL },
 		{ NULL, 0, 0, 0, NULL, NULL }
@@ -2182,13 +2291,14 @@ int sc_pkcs15_parse_unusedspace(const u8 * buf, size_t buflen, struct sc_pkcs15_
 	return 0;
 }
 
-int sc_pkcs15_read_file(struct sc_pkcs15_card *p15card,
-			const sc_path_t *in_path,
-			u8 **buf, size_t *buflen)
+
+int
+sc_pkcs15_read_file(struct sc_pkcs15_card *p15card, const struct sc_path *in_path,
+		unsigned char **buf, size_t *buflen)
 {
 	struct sc_context *ctx = p15card->card->ctx;
-	sc_file_t *file = NULL;
-	u8	*data = NULL;
+	struct sc_file *file = NULL;
+	unsigned char *data = NULL;
 	size_t	len = 0, offset = 0;
 	int	r;
 
@@ -2211,7 +2321,10 @@ int sc_pkcs15_read_file(struct sc_pkcs15_card *p15card,
 		/* Handle the case where the ASN.1 Path object specified
 		 * index and length values */
 		if (in_path->count < 0) {
-			len = file->size;
+			if (file->size)
+				len = file->size;
+			else
+				len = 1024;
 			offset = 0;
 		}
 		else {
@@ -2232,9 +2345,8 @@ int sc_pkcs15_read_file(struct sc_pkcs15_card *p15card,
 		if (file->ef_structure == SC_FILE_EF_LINEAR_VARIABLE_TLV) {
 			int i;
 			size_t l, record_len;
-			unsigned char *head;
+			unsigned char *head = data;
 
-			head = data;
 			for (i=1;  ; i++) {
 				l = len - (head - data);
 				if (l > 256) { l = 256; }
@@ -2251,7 +2363,8 @@ int sc_pkcs15_read_file(struct sc_pkcs15_card *p15card,
 				if (record_len != 0xff) {
 					memmove(head,head+2,r-2);
 					head += (r-2);
-				} else {
+				}
+				else {
 					if (r < 4)
 						break;
 					memmove(head,head+4,r-4);
@@ -2259,7 +2372,8 @@ int sc_pkcs15_read_file(struct sc_pkcs15_card *p15card,
 				}
 			}
 			len = head-data;
-		} else {
+		}
+		else {
 			r = sc_read_binary(p15card->card, offset, data, len, 0);
 			if (r < 0) {
 				free(data);
@@ -2283,8 +2397,9 @@ fail_unlock:
 	LOG_FUNC_RETURN(ctx, r);
 }
 
-int sc_pkcs15_compare_id(const struct sc_pkcs15_id *id1,
-			 const struct sc_pkcs15_id *id2)
+
+int
+sc_pkcs15_compare_id(const struct sc_pkcs15_id *id1, const struct sc_pkcs15_id *id2)
 {
 	assert(id1 != NULL && id2 != NULL);
 	if (id1->len != id2->len)
@@ -2292,7 +2407,9 @@ int sc_pkcs15_compare_id(const struct sc_pkcs15_id *id1,
 	return memcmp(id1->value, id2->value, id1->len) == 0;
 }
 
-void sc_pkcs15_format_id(const char *str, struct sc_pkcs15_id *id)
+
+void
+sc_pkcs15_format_id(const char *str, struct sc_pkcs15_id *id)
 {
 	size_t len = sizeof(id->value);
 
@@ -2300,7 +2417,9 @@ void sc_pkcs15_format_id(const char *str, struct sc_pkcs15_id *id)
 		id->len = len;
 }
 
-const char *sc_pkcs15_print_id(const struct sc_pkcs15_id *id)
+
+const char *
+sc_pkcs15_print_id(const struct sc_pkcs15_id *id)
 {
 	static char buffer[256];
 
@@ -2308,13 +2427,17 @@ const char *sc_pkcs15_print_id(const struct sc_pkcs15_id *id)
 	return buffer;
 }
 
-int sc_pkcs15_hex_string_to_id(const char *in, struct sc_pkcs15_id *out)
+
+int
+sc_pkcs15_hex_string_to_id(const char *in, struct sc_pkcs15_id *out)
 {
 	out->len = sizeof(out->value);
 	return sc_hex_to_bin(in, out->value, &out->len);
 }
 
-int sc_pkcs15_make_absolute_path(const sc_path_t *parent, sc_path_t *child)
+
+int
+sc_pkcs15_make_absolute_path(const struct sc_path *parent, struct sc_path *child)
 {
 	/* nothing to do if child has valid 'aid' */
 	if (child->aid.len)
@@ -2356,6 +2479,7 @@ int sc_pkcs15_make_absolute_path(const sc_path_t *parent, sc_path_t *child)
 	return sc_concatenate_path(child, parent, child);
 }
 
+
 void sc_pkcs15_free_object_content(struct sc_pkcs15_object *obj)
 {
 	if (obj->content.value && obj->content.len)   {
@@ -2366,8 +2490,9 @@ void sc_pkcs15_free_object_content(struct sc_pkcs15_object *obj)
 	obj->content.len = 0;
 }
 
-int sc_pkcs15_allocate_object_content(struct sc_context *ctx,
-		struct sc_pkcs15_object *obj,
+
+int
+sc_pkcs15_allocate_object_content(struct sc_context *ctx, struct sc_pkcs15_object *obj,
 		const unsigned char *value, size_t len)
 {
 	unsigned char *tmp_buf;
@@ -2397,9 +2522,9 @@ int sc_pkcs15_allocate_object_content(struct sc_context *ctx,
 	return SC_SUCCESS;
 }
 
+
 struct sc_supported_algo_info *
-sc_pkcs15_get_supported_algo(struct sc_pkcs15_card *p15card,
-		unsigned operation, unsigned mechanism)
+sc_pkcs15_get_supported_algo(struct sc_pkcs15_card *p15card, unsigned operation, unsigned mechanism)
 {
 	struct sc_context *ctx = p15card->card->ctx;
 	struct sc_supported_algo_info *info = NULL;
@@ -2411,18 +2536,53 @@ sc_pkcs15_get_supported_algo(struct sc_pkcs15_card *p15card,
 			break;
 
 	if (ii < SC_MAX_SUPPORTED_ALGORITHMS && p15card->tokeninfo->supported_algos[ii].reference)   {
-        	info = &p15card->tokeninfo->supported_algos[ii];
-        	sc_log(ctx, "found supported algorithm (ref:%X,mech:%X,ops:%X,algo_ref:%X)",
+		info = &p15card->tokeninfo->supported_algos[ii];
+		sc_log(ctx, "found supported algorithm (ref:%X,mech:%X,ops:%X,algo_ref:%X)",
 				info->reference, info->mechanism, info->operations, info->algo_ref);
 	}
 
 	return info;
 }
 
+int
+sc_pkcs15_get_generalized_time(struct sc_context *ctx, char **out)
+{
+#ifdef HAVE_GETTIMEOFDAY
+	struct timeval tv;
+#endif
+	struct tm *tm_time;
+	time_t t;
+
+	if (!ctx || !out)
+		return SC_ERROR_INVALID_ARGUMENTS;
+	*out = NULL;
+
+#ifdef HAVE_GETTIMEOFDAY
+	gettimeofday(&tv, NULL);
+	t = tv.tv_sec;
+#else
+	t = time(NULL);
+#endif
+	tm_time = gmtime(&t);
+	if (!tm_time)
+		LOG_TEST_RET(ctx, SC_ERROR_INTERNAL, "gmtime failed");
+
+	*out = calloc(1, 16);
+	if (*out == NULL)
+		LOG_TEST_RET(ctx, SC_ERROR_OUT_OF_MEMORY, "memory failure");
+
+	/* print time in generalized time format */
+	if (!strftime(*out, 16, "%Y%m%d%H%M%SZ", tm_time)) {
+		free(*out);
+		LOG_TEST_RET(ctx, SC_ERROR_INTERNAL, "strftime failed");
+	}
+
+	return SC_SUCCESS;
+}
+
 
 int
-sc_pkcs15_add_supported_algo_ref(struct sc_pkcs15_object *obj,
-		struct sc_supported_algo_info *algo)
+sc_pkcs15_add_supported_algo_ref(struct sc_pkcs15_object *obj, struct sc_supported_algo_info *algo)
 {
 	unsigned int ii, *algo_refs = NULL;
 
@@ -2497,7 +2657,7 @@ sc_pkcs15_get_object_id(const struct sc_pkcs15_object *obj, struct sc_pkcs15_id
  * There is no variant, version number and other special meaning fields
  *  that are described in RFC-4122 .
  */
-static int
+int
 sc_pkcs15_serialize_guid(unsigned char *in, size_t in_size, unsigned flags,
 		char *out, size_t out_size)
 {
@@ -2527,37 +2687,45 @@ sc_pkcs15_serialize_guid(unsigned char *in, size_t in_size, unsigned flags,
 	return SC_SUCCESS;
 }
 
+
 int
-sc_pkcs15_get_guid(struct sc_pkcs15_card *p15card, const struct sc_pkcs15_object *obj,
-		                unsigned flags, char *out, size_t out_size)
+sc_pkcs15_get_object_guid(struct sc_pkcs15_card *p15card, const struct sc_pkcs15_object *obj,
+		                unsigned flags, unsigned char *out, size_t *out_size)
 {
+	struct sc_context *ctx = p15card->card->ctx;
 	struct sc_serial_number serialnr;
 	struct sc_pkcs15_id  id;
 	unsigned char guid_bin[SC_PKCS15_MAX_ID_SIZE + SC_MAX_SERIALNR];
 	int rv;
 
-	if (p15card->ops.get_guid)
-		return p15card->ops.get_guid(p15card, obj, out, out_size);
+	LOG_FUNC_CALLED(ctx);
+	if(!out || !out_size)
+		LOG_FUNC_RETURN(ctx, SC_ERROR_INVALID_ARGUMENTS);
 
-	if (obj->guid)   {
-		if (out_size < strlen(obj->guid))
-			return SC_ERROR_BUFFER_TOO_SMALL;
-		memset(out, 0, out_size);
+	if (p15card->ops.get_guid)   {
+		rv = p15card->ops.get_guid(p15card, obj, out, out_size);
+		LOG_FUNC_RETURN(ctx, rv);
+	}
 
-		if (out_size > strlen(obj->guid))
-			out_size = strlen(obj->guid);
-		memcpy(out, obj->guid, out_size);
+	memset(out, 0, *out_size);
+	if ((obj->type & SC_PKCS15_TYPE_CLASS_MASK) == SC_PKCS15_TYPE_PRKEY)   {
+		struct sc_pkcs15_prkey_info *info = (struct sc_pkcs15_prkey_info *)obj->data;
 
-		return SC_SUCCESS;
+		if (info->cmap_record.guid && info->cmap_record.guid_len)   {
+			if (*out_size < info->cmap_record.guid_len)
+				LOG_FUNC_RETURN(ctx, SC_ERROR_BUFFER_TOO_SMALL);
+
+			memcpy(out, info->cmap_record.guid, info->cmap_record.guid_len);
+			*out_size = info->cmap_record.guid_len;
+			LOG_FUNC_RETURN(ctx, SC_SUCCESS);
+		}
 	}
 
 	rv = sc_pkcs15_get_object_id(obj, &id);
-	if (rv)
-		return rv;
+	LOG_TEST_RET(ctx, rv, "Cannot get object's ID");
 
 	rv = sc_card_ctl(p15card->card, SC_CARDCTL_GET_SERIALNR, &serialnr);
-	if (rv)
-		return rv;
+	LOG_TEST_RET(ctx, rv, "'GET_SERIALNR' failed");
 
 	memset(guid_bin, 0, sizeof(guid_bin));
 	memcpy(guid_bin, id.value, id.len);
@@ -2571,7 +2739,11 @@ sc_pkcs15_get_guid(struct sc_pkcs15_card *p15card, const struct sc_pkcs15_object
         serialnr.len = 0;
 #endif
 
-	return sc_pkcs15_serialize_guid(guid_bin, id.len + serialnr.len, flags, out, out_size);
+	rv = sc_pkcs15_serialize_guid(guid_bin, id.len + serialnr.len, flags, (char *)out, *out_size);
+	LOG_TEST_RET(ctx, rv, "Serialize GUID error");
+
+	*out_size = strlen((char *)out);
+	LOG_FUNC_RETURN(ctx, rv);
 }
 
 void sc_pkcs15_free_key_params(struct sc_pkcs15_key_params *params)
diff --git a/src/libopensc/pkcs15.h b/src/libopensc/pkcs15.h
index a72cc74..6dfb071 100644
--- a/src/libopensc/pkcs15.h
+++ b/src/libopensc/pkcs15.h
@@ -77,11 +77,11 @@ typedef struct sc_pkcs15_id sc_pkcs15_id_t;
 	( SC_PKCS15_PIN_FLAG_INITIALIZED | SC_PKCS15_PIN_FLAG_LOCAL)
 
 #define SC_PKCS15_PIN_TYPE_FLAGS_PUK_GLOBAL				\
-	( SC_PKCS15_PIN_FLAG_UNBLOCKING_PIN 				\
+	( SC_PKCS15_PIN_FLAG_UNBLOCKING_PIN				\
 	| SC_PKCS15_PIN_FLAG_INITIALIZED )
 
 #define SC_PKCS15_PIN_TYPE_FLAGS_PUK_LOCAL				\
-	( SC_PKCS15_PIN_FLAG_UNBLOCKING_PIN 				\
+	( SC_PKCS15_PIN_FLAG_UNBLOCKING_PIN				\
 	| SC_PKCS15_PIN_FLAG_INITIALIZED | SC_PKCS15_PIN_FLAG_LOCAL)
 
 #define SC_PKCS15_PIN_TYPE_BCD				0
@@ -128,7 +128,8 @@ struct sc_pkcs15_auth_info {
 	/* authentication method: CHV, SEN, SYMBOLIC, ... */
 	unsigned int  auth_method;
 
-	int  tries_left, max_tries;
+	int tries_left, max_tries;
+	int max_unlocks;
  };
 typedef struct sc_pkcs15_auth_info sc_pkcs15_auth_info_t;
 
@@ -154,6 +155,12 @@ struct sc_pkcs15_der {
 };
 typedef struct sc_pkcs15_der sc_pkcs15_der_t;
 
+struct sc_pkcs15_u8 {
+	u8 *		value;
+	size_t		len;
+};
+typedef struct sc_pkcs15_u8 sc_pkcs15_u8_t;
+
 struct sc_pkcs15_pubkey_rsa {
 	sc_pkcs15_bignum_t modulus;
 	sc_pkcs15_bignum_t exponent;
@@ -202,7 +209,7 @@ struct sc_pkcs15_prkey_dsa {
 struct sc_pkcs15_ec_parameters {
 	char *named_curve;
 	struct sc_object_id id;
-	sc_pkcs15_der_t der;
+	struct sc_pkcs15_der der;
 	size_t field_length; /* in bits */
 };
 
@@ -214,13 +221,13 @@ struct sc_pkcs15_gost_parameters {
 
 struct sc_pkcs15_pubkey_ec {
 	struct sc_pkcs15_ec_parameters params;
-	sc_pkcs15_der_t		ecpointQ; /* note this is der */
+	struct sc_pkcs15_u8 ecpointQ; /* This is NOT DER, just value and length */
 };
 
 struct sc_pkcs15_prkey_ec {
 	struct sc_pkcs15_ec_parameters params;
 	sc_pkcs15_bignum_t	privateD; /* note this is bignum */
-	sc_pkcs15_der_t		ecpointQ; /* note this is der */
+	struct sc_pkcs15_u8		ecpointQ; /* This is NOT DER, just value and length */
 };
 
 struct sc_pkcs15_pubkey_gostr3410 {
@@ -244,9 +251,6 @@ struct sc_pkcs15_pubkey {
 		struct sc_pkcs15_pubkey_ec ec;
 		struct sc_pkcs15_pubkey_gostr3410 gostr3410;
 	} u;
-
-	/* DER encoded raw key */
-	sc_pkcs15_der_t data;
 };
 typedef struct sc_pkcs15_pubkey sc_pkcs15_pubkey_t;
 
@@ -300,7 +304,7 @@ struct sc_pkcs15_cert_info {
 	/* identifiers [2] SEQUENCE OF CredentialIdentifier{{KeyIdentifiers}} */
 	struct sc_path path;
 
-	sc_pkcs15_der_t value;
+	struct sc_pkcs15_der value;
 };
 typedef struct sc_pkcs15_cert_info sc_pkcs15_cert_info_t;
 
@@ -320,9 +324,12 @@ struct sc_pkcs15_data_info {
 	struct sc_object_id app_oid;
 
 	struct sc_path path;
+
+	struct sc_pkcs15_der data;
 };
 typedef struct sc_pkcs15_data_info sc_pkcs15_data_info_t;
 
+/* keyUsageFlags are the same for all key types */
 #define SC_PKCS15_PRKEY_USAGE_ENCRYPT		0x01
 #define SC_PKCS15_PRKEY_USAGE_DECRYPT		0x02
 #define SC_PKCS15_PRKEY_USAGE_SIGN		0x04
@@ -334,18 +341,6 @@ typedef struct sc_pkcs15_data_info sc_pkcs15_data_info_t;
 #define SC_PKCS15_PRKEY_USAGE_DERIVE		0x100
 #define SC_PKCS15_PRKEY_USAGE_NONREPUDIATION	0x200
 
-/* keyUsageFlags  are the same for all key types */
-#define SC_PKCS15_KEY_USAGE_ENCRYPT		0x01
-#define SC_PKCS15_KEY_USAGE_DECRYPT		0x02
-#define SC_PKCS15_KEY_USAGE_SIGN		0x04
-#define SC_PKCS15_KEY_USAGE_SIGNRECOVER		0x08
-#define SC_PKCS15_KEY_USAGE_WRAP		0x10
-#define SC_PKCS15_KEY_USAGE_UNWRAP		0x20
-#define SC_PKCS15_KEY_USAGE_VERIFY		0x40
-#define SC_PKCS15_KEY_USAGE_VERIFYRECOVER	0x80
-#define SC_PKCS15_KEY_USAGE_DERIVE		0x100
-#define SC_PKCS15_KEY_USAGE_NONREPUDIATION	0x200
-
 #define SC_PKCS15_PRKEY_ACCESS_SENSITIVE	0x01
 #define SC_PKCS15_PRKEY_ACCESS_EXTRACTABLE	0x02
 #define SC_PKCS15_PRKEY_ACCESS_ALWAYSSENSITIVE	0x04
@@ -390,6 +385,56 @@ struct sc_pkcs15_key_params {
 	void (*free_params)(void *);
 };
 
+/* From Windows Smart Card Minidriver Specification
+ * Version 7.06
+ *
+ * #define MAX_CONTAINER_NAME_LEN       39
+ * #define CONTAINER_MAP_VALID_CONTAINER        1
+ * #define CONTAINER_MAP_DEFAULT_CONTAINER      2
+ * typedef struct _CONTAINER_MAP_RECORD
+ * {
+ *      WCHAR wszGuid [MAX_CONTAINER_NAME_LEN + 1];
+ *      BYTE bFlags;
+ *      BYTE bReserved;
+ *      WORD wSigKeySizeBits;
+ *      WORD wKeyExchangeKeySizeBits;
+ * } CONTAINER_MAP_RECORD, *PCONTAINER_MAP_RECORD;
+ */
+#define SC_MD_MAX_CONTAINER_NAME_LEN 39
+#define SC_MD_CONTAINER_MAP_VALID_CONTAINER	0x01
+#define SC_MD_CONTAINER_MAP_DEFAULT_CONTAINER	0x02
+struct sc_md_cmap_record {
+	unsigned char *guid;
+	size_t guid_len;
+	unsigned flags;
+	unsigned keysize_sign;
+	unsigned keysize_keyexchange;
+};
+
+/* From Windows Smart Card Minidriver Specification
+ * Version 7.06
+ *
+ * typedef struct _CARD_CACHE_FILE_FORMAT
+ * {
+ *	BYTE bVersion;		// Cache version
+ *	BYTE bPinsFreshness;	// Card PIN
+ *	WORD wContainersFreshness;
+ *	WORD wFilesFreshness;
+ * } CARD_CACHE_FILE_FORMAT, *PCARD_CACHE_FILE_FORMAT;
+ */
+struct sc_md_cardcf {
+	unsigned char version;
+	unsigned char pin_freshness;
+	unsigned cont_freshness;
+	unsigned files_freshness;
+
+};
+
+struct sc_md_data {
+	struct sc_md_cardcf cardcf;
+	void *prop_data;
+};
+
 struct sc_pkcs15_prkey_info {
 	struct sc_pkcs15_id id;	/* correlates to public certificate id */
 	unsigned int usage, access_flags;
@@ -405,6 +450,9 @@ struct sc_pkcs15_prkey_info {
 	struct sc_pkcs15_key_params params;
 
 	struct sc_path path;
+
+	/* Used by minidriver and its on-card support */
+	struct sc_md_cmap_record cmap_record;
 };
 typedef struct sc_pkcs15_prkey_info sc_pkcs15_prkey_info_t;
 
@@ -423,6 +471,11 @@ struct sc_pkcs15_pubkey_info {
 	struct sc_pkcs15_key_params params;
 
 	struct sc_path path;
+
+	struct {
+		struct sc_pkcs15_der raw;
+		struct sc_pkcs15_der spki;
+	} direct;
 };
 typedef struct sc_pkcs15_pubkey_info sc_pkcs15_pubkey_info_t;
 
@@ -501,9 +554,6 @@ struct sc_pkcs15_object {
 	struct sc_pkcs15_object *next, *prev; /* used only internally */
 
 	struct sc_pkcs15_der content;
-
-	/* Used by minidriver and its on-card support */
-	char *guid;
 };
 typedef struct sc_pkcs15_object sc_pkcs15_object_t;
 
@@ -579,7 +629,7 @@ struct sc_pkcs15_operations   {
 	int (*parse_df)(struct sc_pkcs15_card *, struct sc_pkcs15_df *);
 	void (*clear)(struct sc_pkcs15_card *);
 	int (*get_guid)(struct sc_pkcs15_card *, const struct sc_pkcs15_object *,
-			char *, size_t);
+			unsigned char *, size_t *);
 };
 
 typedef struct sc_pkcs15_card {
@@ -606,7 +656,8 @@ typedef struct sc_pkcs15_card {
 
 	unsigned int magic;
 
-	void *dll_handle;		/* shared lib for emulated cards */
+	void *dll_handle;	/* shared lib for emulated cards */
+	struct sc_md_data *md_data;	/* minidriver specific data */
 
 	struct sc_pkcs15_operations ops;
 
@@ -618,7 +669,7 @@ typedef struct sc_pkcs15_card {
 #define SC_PKCS15_TOKEN_PRN_GENERATION			0x04
 #define SC_PKCS15_TOKEN_EID_COMPLIANT			0x08
 
-/* flags suitable for sc_pkcs15_card_t */
+/* flags suitable for struct sc_pkcs15_card */
 #define SC_PKCS15_CARD_FLAG_EMULATED			0x02000000
 
 /* sc_pkcs15_bind:  Binds a card object to a PKCS #15 card object
@@ -637,13 +688,13 @@ int sc_pkcs15_get_objects_cond(struct sc_pkcs15_card *card, unsigned int type,
 			       int (* func)(struct sc_pkcs15_object *, void *),
 			       void *func_arg,
 			       struct sc_pkcs15_object **ret, size_t ret_count);
-int sc_pkcs15_find_object_by_id(sc_pkcs15_card_t *, unsigned int,
+int sc_pkcs15_find_object_by_id(struct sc_pkcs15_card *, unsigned int,
 				const sc_pkcs15_id_t *,
-				sc_pkcs15_object_t **);
+				struct sc_pkcs15_object **);
 
 struct sc_pkcs15_card * sc_pkcs15_card_new(void);
 void sc_pkcs15_card_free(struct sc_pkcs15_card *p15card);
-void sc_pkcs15_card_clear(sc_pkcs15_card_t *p15card);
+void sc_pkcs15_card_clear(struct sc_pkcs15_card *p15card);
 
 int sc_pkcs15_decipher(struct sc_pkcs15_card *p15card,
 		       const struct sc_pkcs15_object *prkey_obj,
@@ -661,43 +712,41 @@ int sc_pkcs15_compute_signature(struct sc_pkcs15_card *p15card,
 				size_t inlen, u8 *out, size_t outlen);
 
 int sc_pkcs15_read_pubkey(struct sc_pkcs15_card *,
-			const struct sc_pkcs15_object *,
-			struct sc_pkcs15_pubkey **);
+		const struct sc_pkcs15_object *, struct sc_pkcs15_pubkey **);
 int sc_pkcs15_decode_pubkey_rsa(struct sc_context *,
-	       		struct sc_pkcs15_pubkey_rsa *,
-			const u8 *, size_t);
+		struct sc_pkcs15_pubkey_rsa *, const u8 *, size_t);
 int sc_pkcs15_encode_pubkey_rsa(struct sc_context *,
-			struct sc_pkcs15_pubkey_rsa *, u8 **, size_t *);
+		struct sc_pkcs15_pubkey_rsa *, u8 **, size_t *);
 int sc_pkcs15_decode_pubkey_dsa(struct sc_context *,
-	       		struct sc_pkcs15_pubkey_dsa *,
-			const u8 *, size_t);
+		struct sc_pkcs15_pubkey_dsa *, const u8 *, size_t);
 int sc_pkcs15_encode_pubkey_dsa(struct sc_context *,
-			struct sc_pkcs15_pubkey_dsa *, u8 **, size_t *);
-int sc_pkcs15_decode_pubkey_gostr3410(sc_context_t *,
+		struct sc_pkcs15_pubkey_dsa *, u8 **, size_t *);
+int sc_pkcs15_decode_pubkey_gostr3410(struct sc_context *,
 		struct sc_pkcs15_pubkey_gostr3410 *, const u8 *, size_t);
-int sc_pkcs15_encode_pubkey_gostr3410(sc_context_t *,
+int sc_pkcs15_encode_pubkey_gostr3410(struct sc_context *,
 		struct sc_pkcs15_pubkey_gostr3410 *, u8 **, size_t *);
 int sc_pkcs15_decode_pubkey_ec(struct sc_context *,
-			struct sc_pkcs15_pubkey_ec *, const u8 *, size_t);
+		struct sc_pkcs15_pubkey_ec *, const u8 *, size_t);
 int sc_pkcs15_encode_pubkey_ec(struct sc_context *,
-				struct sc_pkcs15_pubkey_ec *, u8 **, size_t *);
+		struct sc_pkcs15_pubkey_ec *, u8 **, size_t *);
 int sc_pkcs15_decode_pubkey(struct sc_context *,
-	       		struct sc_pkcs15_pubkey *, const u8 *, size_t);
+		struct sc_pkcs15_pubkey *, const u8 *, size_t);
 int sc_pkcs15_encode_pubkey(struct sc_context *,
-			struct sc_pkcs15_pubkey *, u8 **, size_t *);
+		struct sc_pkcs15_pubkey *, u8 **, size_t *);
+int sc_pkcs15_encode_pubkey_as_spki(struct sc_context *,
+		struct sc_pkcs15_pubkey *, u8 **, size_t *);
 void sc_pkcs15_erase_pubkey(struct sc_pkcs15_pubkey *);
 void sc_pkcs15_free_pubkey(struct sc_pkcs15_pubkey *);
 int sc_pkcs15_pubkey_from_prvkey(struct sc_context *, struct sc_pkcs15_prkey *,
-			struct sc_pkcs15_pubkey **);
+		struct sc_pkcs15_pubkey **);
 int sc_pkcs15_pubkey_from_cert(struct sc_context *, struct sc_pkcs15_der *,
-			struct sc_pkcs15_pubkey **);
-int sc_pkcs15_pubkey_from_spki_filename(struct sc_context *,
-			char *, sc_pkcs15_pubkey_t ** );
-int sc_pkcs15_pubkey_from_spki(struct sc_context *,
-			sc_pkcs15_pubkey_t **, u8 *, size_t, int);
+		struct sc_pkcs15_pubkey **);
+int sc_pkcs15_pubkey_from_spki_file(struct sc_context *,
+		char *, struct sc_pkcs15_pubkey ** );
+int sc_pkcs15_pubkey_from_spki_fields(struct sc_context *,
+		struct sc_pkcs15_pubkey **, u8 *, size_t, int);
 int sc_pkcs15_encode_prkey(struct sc_context *,
-			struct sc_pkcs15_prkey *,
-			u8 **, size_t *);
+		struct sc_pkcs15_prkey *, u8 **, size_t *);
 void sc_pkcs15_free_prkey(struct sc_pkcs15_prkey *prkey);
 void sc_pkcs15_free_key_params(struct sc_pkcs15_key_params *params);
 
@@ -738,9 +787,9 @@ int sc_pkcs15_find_prkey_by_id_usage(struct sc_pkcs15_card *card,
 			       const struct sc_pkcs15_id *id,
 			       unsigned int usage,
 			       struct sc_pkcs15_object **out);
-int sc_pkcs15_find_prkey_by_reference(sc_pkcs15_card_t *,
+int sc_pkcs15_find_prkey_by_reference(struct sc_pkcs15_card *,
 			       const sc_path_t *, int,
-			       sc_pkcs15_object_t **);
+			       struct sc_pkcs15_object **);
 int sc_pkcs15_find_pubkey_by_id(struct sc_pkcs15_card *card,
 			       const struct sc_pkcs15_id *id,
 			       struct sc_pkcs15_object **out);
@@ -778,13 +827,13 @@ int sc_pkcs15_find_pin_by_flags(struct sc_pkcs15_card *p15card,
 void sc_pkcs15_pincache_add(struct sc_pkcs15_card *, struct sc_pkcs15_object *,
 			const u8 *, size_t);
 int sc_pkcs15_pincache_revalidate(struct sc_pkcs15_card *p15card,
-			const sc_pkcs15_object_t *obj);
+			const struct sc_pkcs15_object *obj);
 void sc_pkcs15_pincache_clear(struct sc_pkcs15_card *p15card);
 
 int sc_pkcs15_encode_dir(struct sc_context *ctx,
 			struct sc_pkcs15_card *card,
 			u8 **buf, size_t *buflen);
-int sc_pkcs15_parse_tokeninfo(sc_context_t *ctx,
+int sc_pkcs15_parse_tokeninfo(struct sc_context *ctx,
 			sc_pkcs15_tokeninfo_t *ti,
 			const u8 *buf, size_t blen);
 int sc_pkcs15_encode_tokeninfo(struct sc_context *ctx,
@@ -853,7 +902,7 @@ int sc_pkcs15_add_unusedspace(struct sc_pkcs15_card *p15card,
 		     const sc_path_t *path, const sc_pkcs15_id_t *auth_id);
 int sc_pkcs15_parse_unusedspace(const u8 * buf, size_t buflen,
 			struct sc_pkcs15_card *card);
-int sc_pkcs15_encode_unusedspace(sc_context_t *ctx,
+int sc_pkcs15_encode_unusedspace(struct sc_context *ctx,
 			 struct sc_pkcs15_card *p15card,
 			 u8 **buf, size_t *buflen);
 
@@ -866,7 +915,7 @@ void sc_pkcs15_free_pubkey_info(sc_pkcs15_pubkey_info_t *key);
 void sc_pkcs15_free_cert_info(sc_pkcs15_cert_info_t *cert);
 void sc_pkcs15_free_data_info(sc_pkcs15_data_info_t *data);
 void sc_pkcs15_free_auth_info(sc_pkcs15_auth_info_t *auth_info);
-void sc_pkcs15_free_object(sc_pkcs15_object_t *obj);
+void sc_pkcs15_free_object(struct sc_pkcs15_object *obj);
 
 /* Generic file i/o */
 int sc_pkcs15_read_file(struct sc_pkcs15_card *p15card,
@@ -887,10 +936,11 @@ int sc_pkcs15_compare_id(const struct sc_pkcs15_id *id1,
 const char *sc_pkcs15_print_id(const struct sc_pkcs15_id *id);
 void sc_pkcs15_format_id(const char *id_in, struct sc_pkcs15_id *id_out);
 int sc_pkcs15_hex_string_to_id(const char *in, struct sc_pkcs15_id *out);
-int sc_der_copy(sc_pkcs15_der_t *, const sc_pkcs15_der_t *);
+int sc_der_copy(struct sc_pkcs15_der *, const struct sc_pkcs15_der *);
 int sc_pkcs15_get_object_id(const struct sc_pkcs15_object *, struct sc_pkcs15_id *);
-int sc_pkcs15_get_guid(struct sc_pkcs15_card *, const struct sc_pkcs15_object *, unsigned,
-		char *, size_t);
+int sc_pkcs15_get_object_guid(struct sc_pkcs15_card *, const struct sc_pkcs15_object *, unsigned,
+		unsigned char *, size_t *);
+int sc_pkcs15_serialize_guid(unsigned char *, size_t, unsigned, char *, size_t);
 int sc_encode_oid (struct sc_context *, struct sc_object_id *,
 		unsigned char **, size_t *);
 
@@ -922,6 +972,9 @@ int sc_pkcs15_convert_pubkey(struct sc_pkcs15_pubkey *key, void *evp_key);
 /* Get 'LastUpdate' string */
 char *sc_pkcs15_get_lastupdate(struct sc_pkcs15_card *p15card);
 
+/* Allocate generalized time string */
+int sc_pkcs15_get_generalized_time(struct sc_context *ctx, char **out);
+
 /* New object search API.
  * More complex, but also more powerful.
  */
@@ -940,8 +993,8 @@ typedef struct sc_pkcs15_search_key {
 	const char *		label;
 } sc_pkcs15_search_key_t;
 
-int sc_pkcs15_search_objects(sc_pkcs15_card_t *, sc_pkcs15_search_key_t *,
-			sc_pkcs15_object_t **, size_t);
+int sc_pkcs15_search_objects(struct sc_pkcs15_card *, sc_pkcs15_search_key_t *,
+			struct sc_pkcs15_object **, size_t);
 
 /* This structure is passed to the new sc_pkcs15emu_*_init functions */
 typedef struct sc_pkcs15emu_opt {
@@ -951,26 +1004,26 @@ typedef struct sc_pkcs15emu_opt {
 
 #define SC_PKCS15EMU_FLAGS_NO_CHECK	0x00000001
 
-extern int sc_pkcs15_bind_synthetic(sc_pkcs15_card_t *);
+extern int sc_pkcs15_bind_synthetic(struct sc_pkcs15_card *);
 extern int sc_pkcs15_is_emulation_only(sc_card_t *);
 
-int sc_pkcs15emu_object_add(sc_pkcs15_card_t *, unsigned int,
-			const sc_pkcs15_object_t *, const void *);
+int sc_pkcs15emu_object_add(struct sc_pkcs15_card *, unsigned int,
+			const struct sc_pkcs15_object *, const void *);
 /* some wrapper functions for sc_pkcs15emu_object_add */
-int sc_pkcs15emu_add_pin_obj(sc_pkcs15_card_t *,
-	const sc_pkcs15_object_t *, const sc_pkcs15_auth_info_t *);
-int sc_pkcs15emu_add_rsa_prkey(sc_pkcs15_card_t *,
-	const sc_pkcs15_object_t *, const sc_pkcs15_prkey_info_t *);
-int sc_pkcs15emu_add_rsa_pubkey(sc_pkcs15_card_t *,
-	const sc_pkcs15_object_t *, const sc_pkcs15_pubkey_info_t *);
-int sc_pkcs15emu_add_ec_prkey(sc_pkcs15_card_t *,
-	const sc_pkcs15_object_t *, const sc_pkcs15_prkey_info_t *);
-int sc_pkcs15emu_add_ec_pubkey(sc_pkcs15_card_t *,
-	const sc_pkcs15_object_t *, const sc_pkcs15_pubkey_info_t *);
-int sc_pkcs15emu_add_x509_cert(sc_pkcs15_card_t *,
-	const sc_pkcs15_object_t *, const sc_pkcs15_cert_info_t *);
-int sc_pkcs15emu_add_data_object(sc_pkcs15_card_t *,
-	const sc_pkcs15_object_t *, const sc_pkcs15_data_info_t *);
+int sc_pkcs15emu_add_pin_obj(struct sc_pkcs15_card *,
+	const struct sc_pkcs15_object *, const sc_pkcs15_auth_info_t *);
+int sc_pkcs15emu_add_rsa_prkey(struct sc_pkcs15_card *,
+	const struct sc_pkcs15_object *, const sc_pkcs15_prkey_info_t *);
+int sc_pkcs15emu_add_rsa_pubkey(struct sc_pkcs15_card *,
+	const struct sc_pkcs15_object *, const sc_pkcs15_pubkey_info_t *);
+int sc_pkcs15emu_add_ec_prkey(struct sc_pkcs15_card *,
+	const struct sc_pkcs15_object *, const sc_pkcs15_prkey_info_t *);
+int sc_pkcs15emu_add_ec_pubkey(struct sc_pkcs15_card *,
+	const struct sc_pkcs15_object *, const sc_pkcs15_pubkey_info_t *);
+int sc_pkcs15emu_add_x509_cert(struct sc_pkcs15_card *,
+	const struct sc_pkcs15_object *, const sc_pkcs15_cert_info_t *);
+int sc_pkcs15emu_add_data_object(struct sc_pkcs15_card *,
+	const struct sc_pkcs15_object *, const sc_pkcs15_data_info_t *);
 
 #ifdef __cplusplus
 }
diff --git a/src/libopensc/reader-ctapi.c b/src/libopensc/reader-ctapi.c
index 7caea90..c85c560 100644
--- a/src/libopensc/reader-ctapi.c
+++ b/src/libopensc/reader-ctapi.c
@@ -386,8 +386,11 @@ static int ctapi_load_module(sc_context_t *ctx,
 		
 		reader = calloc(1, sizeof(sc_reader_t));
 		priv = calloc(1, sizeof(struct ctapi_private_data));
-		if (!priv)
+		if (!priv || !reader) {
+			free(reader);
+			free(priv);
 			return SC_ERROR_OUT_OF_MEMORY;
+		}
 		reader->drv_data = priv;
 		reader->ops = &ctapi_ops;
 		reader->driver = &ctapi_drv;
diff --git a/src/libopensc/reader-pcsc.c b/src/libopensc/reader-pcsc.c
index 920b6f1..b6a33c7 100644
--- a/src/libopensc/reader-pcsc.c
+++ b/src/libopensc/reader-pcsc.c
@@ -2,7 +2,7 @@
  * reader-pcsc.c: Reader driver for PC/SC interface
  *
  * Copyright (C) 2002  Juha Yrjölä <juha.yrjola at iki.fi>
- * Copyright (C) 2009,2010 Martin Paljak <martin at paljak.pri.ee>
+ * Copyright (C) 2009,2010 Martin Paljak <martin at martinpaljak.net>
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
@@ -923,7 +923,7 @@ static void detect_reader_features(sc_reader_t *reader, SCARDHANDLE card_handle)
 	}
 
 	if (priv->pace_ioctl) {
-		char *log_text = "Reader supports PACE";
+		const char *log_text = "Reader supports PACE";
 		if (priv->gpriv->enable_pace) {
 			reader->capabilities |= part10_detect_pace_capabilities(reader);
 
@@ -1393,7 +1393,7 @@ static int part10_build_verify_pin_block(struct sc_reader *reader, u8 * buf, siz
 
 	pin_verify->ulDataLength = HOST_TO_CCID_32(offset); /* APDU size */
 
-	count = sizeof(PIN_VERIFY_STRUCTURE) + offset -1;
+	count = sizeof(PIN_VERIFY_STRUCTURE) + offset;
 	*size = count;
 	return SC_SUCCESS;
 }
@@ -1408,6 +1408,9 @@ static int part10_build_modify_pin_block(struct sc_reader *reader, u8 * buf, siz
 	u8 tmp;
 	unsigned int tmp16;
 	PIN_MODIFY_STRUCTURE *pin_modify  = (PIN_MODIFY_STRUCTURE *)buf;
+	struct sc_pin_cmd_pin *pin_ref =
+	   	data->flags & SC_PIN_CMD_IMPLICIT_CHANGE ?
+	   	&data->pin2 : &data->pin1;
 
 	/* PIN verification control message */
 	pin_modify->bTimerOut = SC_CCID_PIN_TIMEOUT;	/* bTimeOut */
@@ -1415,18 +1418,18 @@ static int part10_build_modify_pin_block(struct sc_reader *reader, u8 * buf, siz
 
 	/* bmFormatString */
 	tmp = 0x00;
-	if (data->pin1.encoding == SC_PIN_ENCODING_ASCII) {
+	if (pin_ref->encoding == SC_PIN_ENCODING_ASCII) {
 		tmp |= SC_CCID_PIN_ENCODING_ASCII;
 
 		/* if the effective PIN length offset is specified, use it */
-		if (data->pin1.length_offset > 4) {
+		if (pin_ref->length_offset > 4) {
 			tmp |= SC_CCID_PIN_UNITS_BYTES;
-			tmp |= (data->pin1.length_offset - 5) << 3;
+			tmp |= (pin_ref->length_offset - 5) << 3;
 		}
-	} else if (data->pin1.encoding == SC_PIN_ENCODING_BCD) {
+	} else if (pin_ref->encoding == SC_PIN_ENCODING_BCD) {
 		tmp |= SC_CCID_PIN_ENCODING_BCD;
 		tmp |= SC_CCID_PIN_UNITS_BYTES;
-	} else if (data->pin1.encoding == SC_PIN_ENCODING_GLP) {
+	} else if (pin_ref->encoding == SC_PIN_ENCODING_GLP) {
 		/* see comment about GLP PINs in sec.c */
 		tmp |= SC_CCID_PIN_ENCODING_BCD;
 		tmp |= 0x08 << 3;
@@ -1437,24 +1440,24 @@ static int part10_build_modify_pin_block(struct sc_reader *reader, u8 * buf, siz
 
 	/* bmPINBlockString */
 	tmp = 0x00;
-	if (data->pin1.encoding == SC_PIN_ENCODING_GLP) {
+	if (pin_ref->encoding == SC_PIN_ENCODING_GLP) {
 		/* GLP PIN length is encoded in 4 bits and block size is always 8 bytes */
 		tmp |= 0x40 | 0x08;
-	} else if (data->pin1.encoding == SC_PIN_ENCODING_ASCII && data->pin1.pad_length) {
-		tmp |= data->pin1.pad_length;
+	} else if (pin_ref->encoding == SC_PIN_ENCODING_ASCII && pin_ref->pad_length) {
+		tmp |= pin_ref->pad_length;
 	}
 	pin_modify->bmPINBlockString = tmp; /* bmPINBlockString */
 
 	/* bmPINLengthFormat */
 	tmp = 0x00;
-	if (data->pin1.encoding == SC_PIN_ENCODING_GLP) {
+	if (pin_ref->encoding == SC_PIN_ENCODING_GLP) {
 		/* GLP PINs expect the effective PIN length from bit 4 */
 		tmp |= 0x04;
 	}
 	pin_modify->bmPINLengthFormat = tmp;	/* bmPINLengthFormat */
 
 	/* Set offsets if not Case 1 APDU */
-	if (data->pin1.length_offset != 4) {
+	if (pin_ref->length_offset != 4) {
 		pin_modify->bInsertionOffsetOld = data->pin1.offset - 5;
 		pin_modify->bInsertionOffsetNew = data->pin2.offset - 5;
 	} else {
@@ -1462,10 +1465,10 @@ static int part10_build_modify_pin_block(struct sc_reader *reader, u8 * buf, siz
 		pin_modify->bInsertionOffsetNew = 0x00;
 	}
 
-	if (!data->pin1.min_length || !data->pin1.max_length)
+	if (!pin_ref->min_length || !pin_ref->max_length)
 		return SC_ERROR_INVALID_ARGUMENTS;
 
-	tmp16 = (data->pin1.min_length << 8 ) + data->pin1.max_length;
+	tmp16 = (pin_ref->min_length << 8 ) + pin_ref->max_length;
 	pin_modify->wPINMaxExtraDigit = HOST_TO_CCID_16(tmp16); /* Min Max */
 
 	/* bConfirmPIN flags
@@ -1501,7 +1504,7 @@ static int part10_build_modify_pin_block(struct sc_reader *reader, u8 * buf, siz
 	pin_modify->abData[offset++] = apdu->p2;
 
 	/* Copy data if not Case 1 */
-	if (data->pin1.length_offset != 4) {
+	if (pin_ref->length_offset != 4) {
 		pin_modify->abData[offset++] = apdu->lc;
 		memcpy(&pin_modify->abData[offset], apdu->data, apdu->datalen);
 		offset += apdu->datalen;
@@ -1509,7 +1512,7 @@ static int part10_build_modify_pin_block(struct sc_reader *reader, u8 * buf, siz
 
 	pin_modify->ulDataLength = HOST_TO_CCID_32(offset); /* APDU size */
 
-	count = sizeof(PIN_MODIFY_STRUCTURE) + offset -1;
+	count = sizeof(PIN_MODIFY_STRUCTURE) + offset;
 	*size = count;
 	return SC_SUCCESS;
 }
@@ -1568,6 +1571,9 @@ part10_check_pin_min_max(sc_reader_t *reader, struct sc_pin_cmd_data *data)
 	unsigned char buffer[256];
 	size_t length = sizeof buffer;
 	struct pcsc_private_data *priv = GET_PRIV_DATA(reader);
+	struct sc_pin_cmd_pin *pin_ref =
+	   	data->flags & SC_PIN_CMD_IMPLICIT_CHANGE ?
+	   	&data->pin1 : &data->pin2;
 
 	r = pcsc_internal_transmit(reader, NULL, 0, buffer, &length,
 		priv->get_tlv_properties);
@@ -1581,8 +1587,8 @@ part10_check_pin_min_max(sc_reader_t *reader, struct sc_pin_cmd_data *data)
 	{
 		unsigned int value = r;
 
-		if (data->pin1.min_length < value)
-			data->pin1.min_length = r;
+		if (pin_ref->min_length < value)
+			pin_ref->min_length = r;
 	}
 
 	/* maximum pin size */
@@ -1592,8 +1598,8 @@ part10_check_pin_min_max(sc_reader_t *reader, struct sc_pin_cmd_data *data)
 	{
 		unsigned int value = r;
 
-		if (data->pin1.max_length > value)
-			data->pin1.max_length = r;
+		if (pin_ref->max_length > value)
+			pin_ref->max_length = r;
 	}
 
 	return 0;
@@ -1604,8 +1610,11 @@ static int
 pcsc_pin_cmd(sc_reader_t *reader, struct sc_pin_cmd_data *data)
 {
 	struct pcsc_private_data *priv = GET_PRIV_DATA(reader);
-	u8 rbuf[SC_MAX_APDU_BUFFER_SIZE], sbuf[SC_MAX_APDU_BUFFER_SIZE];
-	char dbuf[SC_MAX_APDU_BUFFER_SIZE * 3];
+	u8 rbuf[SC_MAX_APDU_BUFFER_SIZE];
+	/* sbuf holds a pin verification/modification structure plus an APDU. */
+	u8 sbuf[sizeof(PIN_VERIFY_STRUCTURE)>sizeof(PIN_MODIFY_STRUCTURE)?
+		sizeof(PIN_VERIFY_STRUCTURE)+SC_MAX_APDU_BUFFER_SIZE:
+		sizeof(PIN_MODIFY_STRUCTURE)+SC_MAX_APDU_BUFFER_SIZE];
 	size_t rcount = sizeof(rbuf), scount = 0;
 	int r;
 	DWORD ioctl = 0;
@@ -1651,8 +1660,7 @@ pcsc_pin_cmd(sc_reader_t *reader, struct sc_pin_cmd_data *data)
 	/* If PIN block building failed, we fail too */
 	SC_TEST_RET(reader->ctx, SC_LOG_DEBUG_NORMAL, r, "PC/SC v2 pinpad block building failed!");
 	/* If not, debug it, just for fun */
-	sc_bin_to_hex(sbuf, scount, dbuf, sizeof(dbuf), ':');
-	sc_debug(reader->ctx, SC_LOG_DEBUG_NORMAL, "PC/SC v2 pinpad block: %s", dbuf);
+	sc_debug(reader->ctx, SC_LOG_DEBUG_NORMAL, "PC/SC v2 pinpad block: %s", sc_dump_hex(sbuf, scount));
 
 	r = pcsc_internal_transmit(reader, sbuf, scount, rbuf, &rcount, ioctl);
 
@@ -1708,7 +1716,6 @@ static int transform_pace_input(
         struct establish_pace_channel_input *pace_input,
         u8 *sbuf, size_t *scount)
 {
-	char dbuf[SC_MAX_APDU_BUFFER_SIZE * 3];
     u8 *p = sbuf;
     uint16_t lengthInputData, lengthCertificateDescription;
     uint8_t lengthCHAT, lengthPIN;
@@ -1719,7 +1726,7 @@ static int transform_pace_input(
     lengthInputData = 5 + pace_input->pin_length + pace_input->chat_length
         + pace_input->certificate_description_length;
 
-    if (lengthInputData + 3 > *scount)
+    if ((unsigned)(lengthInputData + 3) > *scount)
         return SC_ERROR_OUT_OF_MEMORY;
 
     /* idxFunction */
@@ -1910,8 +1917,9 @@ pcsc_perform_pace(struct sc_reader *reader, void *input_pace, void *output_pace)
 	u8 rbuf[SC_MAX_EXT_APDU_BUFFER_SIZE], sbuf[SC_MAX_EXT_APDU_BUFFER_SIZE];
 	size_t rcount = sizeof rbuf, scount = sizeof sbuf;
 
-    if (!reader || !reader->capabilities & SC_READER_CAP_PACE_GENERIC)
+    if (!reader || !(reader->capabilities & SC_READER_CAP_PACE_GENERIC))
         return SC_ERROR_INVALID_ARGUMENTS;
+
     priv = GET_PRIV_DATA(reader);
     if (!priv)
         return SC_ERROR_INVALID_ARGUMENTS;
diff --git a/src/libopensc/sc.c b/src/libopensc/sc.c
index 070468b..027b2ab 100644
--- a/src/libopensc/sc.c
+++ b/src/libopensc/sc.c
@@ -518,6 +518,8 @@ void sc_file_free(sc_file_t *file)
 		free(file->prop_attr);
 	if (file->type_attr)
 		free(file->type_attr);
+	if (file->encoded_content)
+		free(file->encoded_content);
 	free(file);
 }
 
@@ -560,6 +562,8 @@ void sc_file_dup(sc_file_t **dest, const sc_file_t *src)
 		goto err;
 	if (sc_file_set_type_attr(newf, src->type_attr, src->type_attr_len) < 0)
 		goto err;
+	if (sc_file_set_content(newf, src->encoded_content, src->encoded_content_len) < 0)
+		goto err;
 	return;
 err:
 	if (newf != NULL)
@@ -651,6 +655,38 @@ int sc_file_set_type_attr(sc_file_t *file, const u8 *type_attr,
 	return 0;
 }
 
+
+int sc_file_set_content(sc_file_t *file, const u8 *content,
+			 size_t content_len)
+{
+	u8 *tmp;
+	assert(sc_file_valid(file));
+
+	if (content == NULL) {
+		if (file->encoded_content != NULL)
+			free(file->encoded_content);
+		file->encoded_content = NULL;
+		file->encoded_content_len = 0;
+		return SC_SUCCESS;
+	}
+
+	tmp = (u8 *) realloc(file->encoded_content, content_len);
+	if (!tmp) {
+		if (file->encoded_content)
+			free(file->encoded_content);
+		file->encoded_content = NULL;
+		file->encoded_content_len = 0;
+		return SC_ERROR_OUT_OF_MEMORY;
+	}
+
+	file->encoded_content = tmp;
+	memcpy(file->encoded_content, content, content_len);
+	file->encoded_content_len = content_len;
+
+	return SC_SUCCESS;
+}
+
+
 int sc_file_valid(const sc_file_t *file) {
 #ifndef NDEBUG
 	assert(file != NULL);
diff --git a/src/libopensc/sm.c b/src/libopensc/sm.c
new file mode 100644
index 0000000..5f4bd89
--- /dev/null
+++ b/src/libopensc/sm.c
@@ -0,0 +1,180 @@
+/*
+ * sm.c: Secure Messaging helper functions
+ *
+ * Copyright (C) 2013 Viktor Tarasov <viktor.tarasov at gmail.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+#include "config.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <assert.h>
+#include <string.h>
+
+#include "internal.h"
+#include "asn1.h"
+#include "sm.h"
+
+static const struct sc_asn1_entry c_asn1_sm_response[4] = {
+	{ "encryptedData",	SC_ASN1_OCTET_STRING,   SC_ASN1_CTX | 7,        SC_ASN1_OPTIONAL,       NULL, NULL },
+	{ "statusWord",		SC_ASN1_OCTET_STRING,   SC_ASN1_CTX | 0x19,     0,                      NULL, NULL },
+	{ "mac",		SC_ASN1_OCTET_STRING,   SC_ASN1_CTX | 0x0E,     0,                      NULL, NULL },
+	{ NULL, 0, 0, 0, NULL, NULL }
+};
+
+#ifdef ENABLE_SM
+int
+sc_sm_parse_answer(struct sc_card *card, unsigned char *resp_data, size_t resp_len,
+		struct sm_card_response *out)
+{
+	struct sc_asn1_entry asn1_sm_response[4];
+	unsigned char data[SC_MAX_APDU_BUFFER_SIZE];
+	size_t data_len = sizeof(data);
+	unsigned char status[2] = {0, 0};
+	size_t status_len = sizeof(status);
+	unsigned char mac[8];
+	size_t mac_len = sizeof(mac);
+	int rv;
+
+	if (!resp_data || !resp_len || !out)
+		return SC_ERROR_INVALID_ARGUMENTS;
+
+	sc_copy_asn1_entry(c_asn1_sm_response, asn1_sm_response);
+
+	sc_format_asn1_entry(asn1_sm_response + 0, data, &data_len, 0);
+	sc_format_asn1_entry(asn1_sm_response + 1, status, &status_len, 0);
+	sc_format_asn1_entry(asn1_sm_response + 2, mac, &mac_len, 0);
+
+	rv = sc_asn1_decode(card->ctx, asn1_sm_response, resp_data, resp_len, NULL, NULL);
+	if (rv)
+		return rv;
+
+	if (asn1_sm_response[0].flags & SC_ASN1_PRESENT)   {
+		if (data_len > sizeof(out->data))
+			return SC_ERROR_BUFFER_TOO_SMALL;
+		memcpy(out->data, data, data_len);
+		out->data_len = data_len;
+	}
+	if (asn1_sm_response[1].flags & SC_ASN1_PRESENT)   {
+		if (!status[0])
+			return SC_ERROR_INVALID_DATA;
+		out->sw1 = status[0];
+		out->sw2 = status[1];
+	}
+	if (asn1_sm_response[2].flags & SC_ASN1_PRESENT)   {
+		memcpy(out->mac, mac, mac_len);
+		out->mac_len = mac_len;
+	}
+
+	return SC_SUCCESS;
+}
+
+/**  parse answer of SM protected APDU returned by APDU or by 'GET RESPONSE'
+ *  @param  card 'sc_card' smartcard object
+ *  @param  resp_data 'raw data returned by SM protected APDU
+ *  @param  resp_len 'length of raw data returned by SM protected APDU
+ *  @param  ref_rv 'status word returned by APDU or 'GET RESPONSE' (can be different from status word encoded into SM response date)
+ *  @param  apdu 'sc_apdu' object to update
+ *  @return SC_SUCCESS on success and an error code otherwise
+ */
+int
+sc_sm_update_apdu_response(struct sc_card *card, unsigned char *resp_data, size_t resp_len,
+		int ref_rv, struct sc_apdu *apdu)
+{
+	struct sm_card_response sm_resp;
+	int r;
+
+	if (!apdu)
+		return SC_ERROR_INVALID_ARGUMENTS;
+	else if (!resp_data || !resp_len)
+		return SC_SUCCESS;
+
+	memset(&sm_resp, 0, sizeof(sm_resp));
+	r = sc_sm_parse_answer(card, resp_data, resp_len, &sm_resp);
+	if (r)
+		return r;
+
+	if (sm_resp.mac_len)   {
+		if (sm_resp.mac_len > sizeof(apdu->mac))
+			return SC_ERROR_INVALID_DATA;
+		memcpy(apdu->mac, sm_resp.mac, sm_resp.mac_len);
+		apdu->mac_len = sm_resp.mac_len;
+	}
+
+	apdu->sw1 = sm_resp.sw1;
+	apdu->sw2 = sm_resp.sw2;
+
+	return SC_SUCCESS;
+}
+
+int
+sc_sm_single_transmit(struct sc_card *card, struct sc_apdu *apdu)
+{
+	struct sc_context *ctx  = card->ctx;
+	struct sc_apdu *sm_apdu = NULL;
+	int rv;
+
+	LOG_FUNC_CALLED(ctx);
+	sc_log(ctx, "SM_MODE:%X", card->sm_ctx.sm_mode);
+	if (!card->sm_ctx.ops.get_sm_apdu || !card->sm_ctx.ops.free_sm_apdu)
+		LOG_FUNC_RETURN(ctx, SC_ERROR_NOT_SUPPORTED);
+
+	/* get SM encoded APDU */
+	rv = card->sm_ctx.ops.get_sm_apdu(card, apdu, &sm_apdu);
+	if (rv == SC_ERROR_SM_NOT_APPLIED)   {
+		/* SM wrap of this APDU is ignored by card driver.
+		 * Send plain APDU to the reader driver */
+		rv = card->reader->ops->transmit(card->reader, apdu);
+		LOG_FUNC_RETURN(ctx, rv);
+	}
+	LOG_TEST_RET(ctx, rv, "get SM APDU error");
+
+	/* check if SM APDU is still valid */
+	rv = sc_check_apdu(card, sm_apdu);
+	if (rv < 0)   {
+		card->sm_ctx.ops.free_sm_apdu(card, apdu, &sm_apdu);
+		LOG_TEST_RET(ctx, rv, "cannot validate SM encoded APDU");
+	}
+
+	/* send APDU to the reader driver */
+	rv = card->reader->ops->transmit(card->reader, sm_apdu);
+	LOG_TEST_RET(ctx, rv, "unable to transmit APDU");
+
+	/* decode SM answer and free temporary SM related data */
+	rv = card->sm_ctx.ops.free_sm_apdu(card, apdu, &sm_apdu);
+
+	LOG_FUNC_RETURN(ctx, rv);
+}
+#else
+int
+sc_sm_parse_answer(struct sc_card *card, unsigned char *resp_data, size_t resp_len,
+		struct sm_card_response *out)
+{
+	return SC_ERROR_NOT_SUPPORTED;
+}
+int
+sc_sm_update_apdu_response(struct sc_card *card, unsigned char *resp_data, size_t resp_len,
+		int ref_rv, struct sc_apdu *apdu)
+{
+	return SC_ERROR_NOT_SUPPORTED;
+}
+int
+sc_sm_single_transmit(struct sc_card *card, struct sc_apdu *apdu)
+{
+	return SC_ERROR_NOT_SUPPORTED;
+}
+#endif
diff --git a/src/libopensc/sm.h b/src/libopensc/sm.h
index fe65bd4..d62e0c6 100644
--- a/src/libopensc/sm.h
+++ b/src/libopensc/sm.h
@@ -43,21 +43,22 @@ extern "C" {
 
 #define SM_TYPE_GP_SCP01	0x100
 #define SM_TYPE_CWA14890	0x400
+#define SM_TYPE_DH_RSA		0x500
 
 #define SM_MODE_NONE		0x0
 #define SM_MODE_ACL		0x100
 #define SM_MODE_TRANSMIT	0x200
 
-#define SM_CMD_INITIALIZE 		0x10
+#define SM_CMD_INITIALIZE		0x10
 #define SM_CMD_MUTUAL_AUTHENTICATION	0x20
-#define SM_CMD_RSA 			0x100
-#define SM_CMD_RSA_GENERATE 		0x101
+#define SM_CMD_RSA			0x100
+#define SM_CMD_RSA_GENERATE		0x101
 #define SM_CMD_RSA_UPDATE		0x102
-#define SM_CMD_RSA_READ_PUBLIC 		0x103
+#define SM_CMD_RSA_READ_PUBLIC		0x103
 #define SM_CMD_FILE			0x200
 #define SM_CMD_FILE_READ		0x201
-#define SM_CMD_FILE_UPDATE 		0x202
-#define SM_CMD_FILE_CREATE 		0x203
+#define SM_CMD_FILE_UPDATE		0x202
+#define SM_CMD_FILE_CREATE		0x203
 #define SM_CMD_FILE_DELETE		0x204
 #define SM_CMD_PIN			0x300
 #define SM_CMD_PIN_VERIFY		0x301
@@ -201,6 +202,26 @@ struct sm_cwa_session {
 };
 
 /*
+ * @struct sm_dh_session
+ *	DH SM session data:
+ */
+struct sm_dh_session {
+	struct sc_tlv_data g;
+	struct sc_tlv_data N;
+	struct sc_tlv_data ifd_p;
+	struct sc_tlv_data ifd_y;
+	struct sc_tlv_data icc_p;
+	struct sc_tlv_data shared_secret;
+
+	unsigned char session_enc[16];
+	unsigned char session_mac[16];
+
+	unsigned char card_challenge[32];
+
+	unsigned char ssc[8];
+};
+
+/*
  * @struct sc_info is the
  *	placehold for the secure messaging working data:
  *	- SM type;
@@ -219,6 +240,7 @@ struct sm_info   {
 	union {
 		struct sm_gp_session gp;
 		struct sm_cwa_session cwa;
+		struct sm_dh_session dh;
 	} session;
 
 	struct sc_serial_number serialnr;
@@ -329,6 +351,10 @@ typedef struct sm_context   {
 
 int iasecc_sm_external_authentication(struct sc_card *, unsigned, int *);
 
+int sc_sm_parse_answer(struct sc_card *, unsigned char *, size_t, struct sm_card_response *);
+int sc_sm_update_apdu_response(struct sc_card *, unsigned char *, size_t, int, struct sc_apdu *);
+int sc_sm_single_transmit(struct sc_card *, struct sc_apdu *);
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/src/libopensc/types.h b/src/libopensc/types.h
index e1a24fe..7a37924 100644
--- a/src/libopensc/types.h
+++ b/src/libopensc/types.h
@@ -174,8 +174,12 @@ struct sc_crt {
 #define SC_AC_OP_WRITE			24
 #define SC_AC_OP_RESIZE			25
 #define SC_AC_OP_GENERATE		26
+#define SC_AC_OP_CREATE_EF		27
+#define SC_AC_OP_CREATE_DF		28
+#define SC_AC_OP_ADMIN			29
+#define SC_AC_OP_PIN_USE		30
 /* If you add more OPs here, make sure you increase SC_MAX_AC_OPS*/
-#define SC_MAX_AC_OPS			27
+#define SC_MAX_AC_OPS			31
 
 /* the use of SC_AC_OP_ERASE is deprecated, SC_AC_OP_DELETE should be used
  * instead  */
@@ -215,7 +219,7 @@ typedef struct sc_acl_entry {
 						(at least for SetCOS 4.4 */
 typedef struct sc_file {
 	struct sc_path path;
-	u8 name[16];	/* DF name */
+	unsigned char name[16];	/* DF name */
 	size_t namelen; /* length of DF name */
 
 	unsigned int type, ef_structure, status; /* See constant values defined above */
@@ -227,13 +231,19 @@ typedef struct sc_file {
 	int record_length; /* In case of fixed-length or cyclic EF */
 	int record_count;  /* Valid, if not transparent EF or DF */
 
-	u8 *sec_attr;
+	unsigned char *sec_attr;	/* security data in proprietary format. tag '86' */
 	size_t sec_attr_len;
-	u8 *prop_attr;
+
+	unsigned char *prop_attr;	/* proprietary information. tag '85'*/
 	size_t prop_attr_len;
-	u8 *type_attr;
+
+	unsigned char *type_attr;	/* file descriptor data. tag '82'.
+					   replaces the file's type information (DF, EF, ...) */
 	size_t type_attr_len;
 
+	unsigned char *encoded_content;	/* file's content encoded to be used in the file creation command */
+	size_t encoded_content_len;	/* size of file's encoded content in bytes */
+
 	unsigned int magic;
 } sc_file_t;
 
@@ -263,18 +273,23 @@ typedef struct sc_file {
  */
 #define SC_APDU_FLAGS_NO_RETRY_WL	0x00000004UL
 
+#define SC_APDU_ALLOCATE_FLAG		0x01
+#define SC_APDU_ALLOCATE_FLAG_DATA	0x02
+#define SC_APDU_ALLOCATE_FLAG_RESP	0x04
+
 typedef struct sc_apdu {
-	int cse;		/* APDU case */
-	u8 cla, ins, p1, p2;	/* CLA, INS, P1 and P2 bytes */
-	size_t lc, le;		/* Lc and Le bytes */
-	const u8 *data;		/* C-APDU data */
-	size_t datalen;		/* length of data in C-APDU */
-	u8 *resp;		/* R-APDU data buffer */
-	size_t resplen;		/* in: size of R-APDU buffer,
-				 * out: length of data returned in R-APDU */
-	u8 control;		/* Set if APDU should go to the reader */
-
-	unsigned int sw1, sw2;	/* Status words returned in R-APDU */
+	int cse;			/* APDU case */
+	unsigned char cla, ins, p1, p2;	/* CLA, INS, P1 and P2 bytes */
+	size_t lc, le;			/* Lc and Le bytes */
+	unsigned char *data;		/* S-APDU data */
+	size_t datalen;			/* length of data in S-APDU */
+	unsigned char *resp;		/* R-APDU data buffer */
+	size_t resplen;			/* in: size of R-APDU buffer,
+					 * out: length of data returned in R-APDU */
+	unsigned char control;		/* Set if APDU should go to the reader */
+	unsigned allocation_flags;	/* APDU allocation flags */
+
+	unsigned int sw1, sw2;		/* Status words returned in R-APDU */
 	unsigned char mac[8];
 	size_t mac_len;
 
diff --git a/src/libopensc/user-interface.c b/src/libopensc/user-interface.c
new file mode 100644
index 0000000..f88aee0
--- /dev/null
+++ b/src/libopensc/user-interface.c
@@ -0,0 +1,317 @@
+/**
+ * user-interface.c: Support for GUI functions
+ *
+ * This file contains code for several related user-interface
+ * functions:
+ * - Ask user confirmation
+ * - Let user enter pin
+ *
+ * Copyright (C) 2010 Juan Antonio Martinez <jonsito at terra.es>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+#define __USER_INTERFACE_C__
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <stdlib.h>
+#include <string.h>
+#include <stdarg.h>
+#include <sys/stat.h>
+
+#ifdef _WIN32
+#define UNICODE
+#include <windows.h>
+#endif
+#ifdef __APPLE__
+#include <Carbon/Carbon.h>
+#endif
+/* default titles */
+#define USER_CONSENT_TITLE "Confirm"
+#define USER_PIN_TITLE "PIN Request"
+#define USER_PIN_PROMPT "Enter PIN:"
+
+#include "libopensc/opensc.h"
+#include "libopensc/log.h"
+#include "libopensc/user-interface.h"
+#include "libopensc/cwa-dnie.h"
+
+#ifdef ENABLE_DNIE_UI 
+/**
+ * Messages used on pinentry protocol
+ */
+char *user_consent_msgs[] = { "SETTITLE", "SETDESC", "CONFIRM", "BYE" };
+char *user_pin_msgs[] = { "SETTITLE", "SETPROMPT", "GETPIN", "BYE" };
+
+static int ui_ask_user_pin(
+	sc_context_t *ctx,	/* Card context */
+	const char *title,	/* Title of the window */
+	const char *msg,	/* Text to be shown to the user */
+	char *pinbuf,		/* Where to store the user entered data */
+	size_t *pinlen) {		/* buffer length; on return user data length */
+
+	/* TODO: write :-) */
+	return SC_ERROR_NOT_SUPPORTED;
+}
+
+/**
+ * Ask user for pin.
+ * 
+ * Check the user pin configuration,
+ * Invoke proper gui app and check result
+ * 
+ * @param card pointer to sc_card structure
+ * @param title Text to appear in the window header
+ * @param pin Structure to handle/store pin related data
+ * @return SC_SUCCESS if user accepts , else error code
+ */
+int sc_ask_user_pin(struct sc_card * card, const char *title, struct sc_pin_cmd_pin *pin) {
+	char *pinbuf=NULL;
+	size_t pinlen=0;
+	int res=SC_ERROR_INTERNAL;
+	char *msg=NULL;
+	
+	if ( (card==NULL) || (card->ctx==NULL) ) 
+		return SC_ERROR_INVALID_ARGUMENTS;
+	LOG_FUNC_CALLED(card->ctx);
+	if (pin==NULL) LOG_FUNC_RETURN(card->ctx,SC_ERROR_INVALID_ARGUMENTS);
+
+	/* use a temporary buffer to ask for pin */
+	if (pin->max_length<=0) {
+		msg="Invalid pin max lenght";
+		res=SC_ERROR_INVALID_ARGUMENTS;
+		goto ask_user_pin_end;
+	}
+	pinlen=pin->max_length;
+
+	pinbuf= calloc(pin->max_length, sizeof(char));
+	if (!pinbuf) {
+		msg="Cannot create pin buffer";
+		res=SC_ERROR_OUT_OF_MEMORY;
+		goto ask_user_pin_end;
+	}
+
+	res= ui_ask_user_pin(
+		card->ctx,
+		(title==NULL)?USER_PIN_TITLE:title,
+		(pin->prompt==NULL)?USER_PIN_PROMPT:pin->prompt,
+		pinbuf,
+		&pinlen);
+	if (res!=SC_SUCCESS) {
+		msg="Error in ui_ask_user_pin";
+		goto ask_user_pin_end;
+	}
+
+	/* TODO: parse received data and fill result structure */
+
+	/* arriving here means success */
+	res=SC_SUCCESS;
+
+ask_user_pin_end:
+	if (msg!=NULL) sc_log(card->ctx,msg);
+	if (pinbuf!=NULL) {
+		memset(pinbuf,0,pinlen);
+		free(pinbuf);
+	}
+	LOG_FUNC_RETURN(card->ctx,res);
+}
+
+/**
+ * Ask for user consent.
+ *
+ * Check for user consent configuration,
+ * Invoke proper gui app and check result
+ *
+ * @param card pointer to sc_card structure
+ * @param title Text to appear in the window header
+ * @param text Message to show to the user
+ * @return SC_SUCCESS on user consent OK , else error code
+ */
+int sc_ask_user_consent(struct sc_card * card, const char *title, const char *message)
+{
+#ifdef __APPLE__
+	CFOptionFlags result;  /* result code from the message box */
+	/* convert the strings from char* to CFStringRef */
+	CFStringRef header_ref; /* to store title */
+	CFStringRef message_ref; /* to store message */
+#endif
+#ifdef linux
+	pid_t pid;
+	FILE *fin=NULL;
+	FILE *fout=NULL;	/* to handle pipes as streams */
+	struct stat st_file;	/* to verify that executable exists */
+	int srv_send[2];	/* to send data from server to client */
+	int srv_recv[2];	/* to receive data from client to server */
+	char outbuf[1024];	/* to compose and send messages */	
+	char buf[1024];		/* to store client responses */
+	int n = 0;		/* to iterate on to-be-sent messages */
+#endif
+	int res = SC_ERROR_INTERNAL;	/* by default error :-( */
+	char *msg = NULL;	/* to makr errors */
+
+	if ((card == NULL) || (card->ctx == NULL))
+		return SC_ERROR_INVALID_ARGUMENTS;
+	LOG_FUNC_CALLED(card->ctx);
+
+	if ((title==NULL) || (message==NULL)) 
+		LOG_FUNC_RETURN(card->ctx, SC_ERROR_INVALID_ARGUMENTS);
+
+	if (GET_DNIE_UI_CTX(card).user_consent_enabled == 0) {
+		sc_log(card->ctx,
+		       "User Consent is disabled in configuration file");
+		LOG_FUNC_RETURN(card->ctx, SC_SUCCESS);
+	}
+#ifdef _WIN32
+	/* in Windows, do not use pinentry, but MessageBox system call */
+	res = MessageBox (
+		NULL,
+		TEXT(message),
+		TEXT(title),
+		MB_ICONWARNING | MB_OKCANCEL | MB_DEFBUTTON2 | MB_APPLMODAL
+		);
+	if ( res == IDOK ) 
+		LOG_FUNC_RETURN(card->ctx, SC_SUCCESS);
+	LOG_FUNC_RETURN(card->ctx, SC_ERROR_NOT_ALLOWED);
+#elif __APPLE__
+	/* Also in Mac OSX use native functions */
+
+	/* convert the strings from char* to CFStringRef */
+	header_ref = CFStringCreateWithCString( NULL, title, strlen(title) );
+	message_ref = CFStringCreateWithCString( NULL,message, strlen(message) );
+
+	/* Displlay user notification alert */
+	CFUserNotificationDisplayAlert(
+		0, /* no timeout */
+		kCFUserNotificationNoteAlertLevel,  /* Alert level */
+		NULL,	/* IconURL, use default, you can change */
+			/* it depending message_type flags */
+		NULL,	/* SoundURL (not used) */ 
+		NULL,	/* localization of strings */
+		header_ref,	/* header. Cannot be null */
+		message_ref,	/* message text */
+		CFSTR("Cancel"), /* default ( "OK" if null) button text */ 
+		CFSTR("OK"), /* second button title */
+                NULL, /* third button title, null--> no other button */
+		&result /* response flags */
+	);
+
+	/* Clean up the strings */
+	CFRelease( header_ref );
+        CFRelease( message_ref );
+	/* Return 0 only if "OK" is selected */
+	if( result == kCFUserNotificationAlternateResponse )
+		LOG_FUNC_RETURN(card->ctx, SC_SUCCESS);
+	LOG_FUNC_RETURN(card->ctx, SC_ERROR_NOT_ALLOWED);
+#elif linux
+	/* check that user_consent_app exists. TODO: check if executable */
+	res = stat(GET_DNIE_UI_CTX(card).user_consent_app, &st_file);
+	if (res != 0) {
+		sc_log(card->ctx, "Invalid pinentry application: %s\n",
+		       GET_DNIE_UI_CTX(card).user_consent_app);
+		LOG_FUNC_RETURN(card->ctx, SC_ERROR_INVALID_ARGUMENTS);
+	}
+
+	/* just a simple bidirectional pipe+fork+exec implementation */
+	/* In a pipe, xx[0] is for reading, xx[1] is for writing */
+	if (pipe(srv_send) < 0) {
+		msg = "pipe(srv_send)";
+		goto do_error;
+	}
+	if (pipe(srv_recv) < 0) {
+		msg = "pipe(srv_recv)";
+		goto do_error;
+	}
+	pid = fork();
+	switch (pid) {
+	case -1:		/* error  */
+		msg = "fork()";
+		goto do_error;
+	case 0:		/* child  */
+		/* make our pipes, our new stdin & stderr, closing older ones */
+		dup2(srv_send[0], STDIN_FILENO);	/* map srv send for input */
+		dup2(srv_recv[1], STDOUT_FILENO);	/* map srv_recv for output */
+		/* once dup2'd pipes are no longer needed on client; so close */
+		close(srv_send[0]);
+		close(srv_send[1]);
+		close(srv_recv[0]);
+		close(srv_recv[1]);
+		/* call exec() with proper user_consent_app from configuration */
+		/* if ok should never return */
+		execlp(GET_DNIE_UI_CTX(card).user_consent_app, GET_DNIE_UI_CTX(card).user_consent_app, (char *)NULL);
+		res = SC_ERROR_INTERNAL;
+		msg = "execlp() error";	/* exec() failed */
+		goto do_error;
+	default:		/* parent */
+		/* Close the pipe ends that the child uses to read from / write to 
+		 * so when we close the others, an EOF will be transmitted properly.
+		 */
+		close(srv_send[0]);
+		close(srv_recv[1]);
+		/* use iostreams to take care on newlines and text based data */
+		fin = fdopen(srv_recv[0], "r");
+		if (fin == NULL) {
+			msg = "fdopen(in)";
+			goto do_error;
+		}
+		fout = fdopen(srv_send[1], "w");
+		if (fout == NULL) {
+			msg = "fdopen(out)";
+			goto do_error;
+		}
+		/* read and ignore first line */
+		fflush(stdin);
+		for (n = 0; n<4; n++) {
+			char *pt;
+			memset(outbuf, 0, sizeof(outbuf));
+			if (n==0) snprintf(outbuf,1023,"%s %s\n",user_consent_msgs[0],title);
+			else if (n==1) snprintf(outbuf,1023,"%s %s\n",user_consent_msgs[1],message);
+			else snprintf(outbuf,1023,"%s\n",user_consent_msgs[n]);
+			/* send message */
+			fputs(outbuf, fout);
+			fflush(fout);
+			/* get response */
+			memset(buf, 0, sizeof(buf));
+			pt=fgets(buf, sizeof(buf) - 1, fin);
+			if (pt==NULL) {
+				res = SC_ERROR_INTERNAL;
+				msg = "fgets() Unexpected IOError/EOF";
+				goto do_error;
+			}
+			if (strstr(buf, "OK") == NULL) {
+				res = SC_ERROR_NOT_ALLOWED;
+				msg = "fail/cancel";
+				goto do_error;
+			}
+		}
+	}			/* switch */
+	/* arriving here means signature has been accepted by user */
+	res = SC_SUCCESS;
+	msg = NULL;
+do_error:
+	/* close out channel to force client receive EOF and also die */
+	if (fout != NULL) fclose(fout);
+	if (fin != NULL) fclose(fin);
+#else
+#error "Don't know how to handle user consent in this (rare) Operating System"
+#endif
+	if (msg != NULL)
+		sc_log(card->ctx, "%s", msg);
+	LOG_FUNC_RETURN(card->ctx, res);
+}
+
+#endif
diff --git a/src/libopensc/user-interface.h b/src/libopensc/user-interface.h
new file mode 100644
index 0000000..14f635a
--- /dev/null
+++ b/src/libopensc/user-interface.h
@@ -0,0 +1,66 @@
+/**
+ * user-interface.c: Support for GUI functions
+ *
+ * This file contains code for several related user-interface
+ * functions:
+ * - Ask user confirmation
+ * - Let user enter pin
+ *
+ * Copyright (C) 2010 Juan Antonio Martinez <jonsito at terra.es>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+#ifndef __USER_INTERFACE_H__
+#define __USER_INTERFACE_H__
+
+/**
+ * To handle user interface routines
+ */
+typedef struct ui_context {
+    int user_consent_enabled;
+    char *user_consent_app;
+} ui_context_t;
+
+struct sc_card;
+struct sc_pin_cmd_pin;
+
+/**
+ * Ask for user consent.
+ *
+ * Check for user consent configuration,
+ * invoke proper gui app and check result
+ *
+ * @param card pointer to sc_card structure
+ * @param title Text to appear in the window header
+ * @param text Message to show to the user
+ * @return SC_SUCCESS if user accepts , else error code
+ */
+int sc_ask_user_consent(struct sc_card * card, const char *title, const char *message);
+
+/**
+ * Ask user for pin.
+ *
+ * Check the user pin configuration,
+ * invoke proper gui app and check result
+ *
+ * @param card pointer to sc_card structure
+ * @param title Text to appear in the window header
+ * @param pin Structure to handle/store pin related data
+ * @return SC_SUCCESS if user accepts , else error code
+ */
+int sc_ask_user_pin(struct sc_card * card, const char *title, struct sc_pin_cmd_pin *pin);
+
+#endif
diff --git a/src/libsm/Makefile.am b/src/libsm/Makefile.am
new file mode 100644
index 0000000..988a428
--- /dev/null
+++ b/src/libsm/Makefile.am
@@ -0,0 +1,12 @@
+# Process this file with automake to create Makefile.in
+
+MAINTAINERCLEANFILES = Makefile.in
+EXTRA_DIST = Makefile.mak
+
+noinst_LTLIBRARIES = libsm.la
+noinst_HEADERS = sm-common.h
+
+AM_CFLAGS = $(OPTIONAL_OPENSSL_CFLAGS) $(OPTIONAL_READLINE_CFLAGS)
+AM_CPPFLAGS = -I$(top_srcdir)/src -I$(top_builddir)/src/include
+
+libsm_la_SOURCES = sm-common.c sm-common.h
diff --git a/src/libsm/Makefile.mak b/src/libsm/Makefile.mak
new file mode 100644
index 0000000..0592eec
--- /dev/null
+++ b/src/libsm/Makefile.mak
@@ -0,0 +1,11 @@
+TOPDIR = ..\..
+
+TARGET = libsm.lib
+OBJECTS = sm-common.obj
+
+all: $(TARGET)
+
+$(TARGET): $(OBJECTS)
+        lib $(LIBFLAGS) /out:$(TARGET) $(OBJECTS)
+
+!INCLUDE $(TOPDIR)\win32\Make.rules.mak
diff --git a/src/sm/sm-common.c b/src/libsm/sm-common.c
similarity index 95%
rename from src/sm/sm-common.c
rename to src/libsm/sm-common.c
index 7861099..cb500b4 100644
--- a/src/sm/sm-common.c
+++ b/src/libsm/sm-common.c
@@ -1,6 +1,6 @@
 /*
  * sm-common.c: Common cryptographic procedures related to
- * 		Secure Messaging
+ *		Secure Messaging
  *
  * Copyright (C) 2010  Viktor Tarasov <vtarasov at opentrust.com>
  *                      OpenTrust <www.opentrust.com>
@@ -47,7 +47,7 @@
 #include "libopensc/asn1.h"
 #include "libopensc/log.h"
 
-#include "sm-module.h"
+#include "sm-common.h"
 
 /*
  * From crypto/des/des_locl.h of OpenSSL .
@@ -98,11 +98,11 @@ DES_3cbc_encrypt(DES_cblock *input, DES_cblock *output, long length,
 				(unsigned char*)output,l8,ks2,iv,!enc);
 		DES_cbc_encrypt((unsigned char*)output,
 				(unsigned char*)output,l8,ks1,iv,enc);
-		if (length >= sizeof(DES_cblock))
+		if ((unsigned)length >= sizeof(DES_cblock))
 			memcpy(icv_out,output[off],sizeof(DES_cblock));
 	}
 	else   {
-		if (length >= sizeof(DES_cblock))
+		if ((unsigned)length >= sizeof(DES_cblock))
 			memcpy(icv_out,input[off],sizeof(DES_cblock));
 		DES_cbc_encrypt((unsigned char*)input,
 				(unsigned char*)output,l8,ks1,iv,enc);
@@ -326,14 +326,8 @@ sm_encrypt_des_cbc3(struct sc_context *ctx, unsigned char *key,
 		memcpy(data, in, in_len);
 
 	memcpy(data + in_len, "\x80\0\0\0\0\0\0\0", 8);
-	if (not_force_pad)   {
-		data_len = in_len + 7;
-		data_len -= (data_len%8);
-	}
-	else   {
-		data_len = in_len + 8;
-		data_len -= (data_len%8);
-	}
+	data_len = in_len + (not_force_pad ? 7 : 8);
+	data_len -= (data_len%8);
 	sc_log(ctx, "SM encrypt_des_cbc3: data to encrypt (len:%i,%s)", data_len, sc_dump_hex(data, data_len));
 
 	*out_len = data_len;
@@ -353,3 +347,19 @@ sm_encrypt_des_cbc3(struct sc_context *ctx, unsigned char *key,
 	free(data);
 	LOG_FUNC_RETURN(ctx, SC_SUCCESS);
 }
+
+
+void
+sm_incr_ssc(unsigned char *ssc, size_t ssc_len)
+{
+	int ii;
+
+	if (!ssc)
+		return;
+
+	for (ii = ssc_len - 1;ii >= 0; ii++)   {
+		*(ssc + ii) += 1;
+		if (*(ssc + ii) != 0)
+			break;
+	}
+}
diff --git a/src/libsm/sm-common.h b/src/libsm/sm-common.h
new file mode 100644
index 0000000..7e83014
--- /dev/null
+++ b/src/libsm/sm-common.h
@@ -0,0 +1,52 @@
+/*
+ * sm-commot.h: Common SM cryptographic procedures
+ *
+ * Copyright (C) 2013  Viktor Tarasov <viktor.tarasov at gmail.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+#ifndef _SM_COMMON_H
+#define _SM_COMMON_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <openssl/des.h>
+#include <openssl/sha.h>
+
+#include "libopensc/sm.h"
+
+DES_LONG DES_cbc_cksum_3des(const unsigned char *in, DES_cblock *output, long length,
+		DES_key_schedule *schedule, DES_key_schedule *schedule2, const_DES_cblock *ivec);
+DES_LONG DES_cbc_cksum_3des_emv96(const unsigned char *in, DES_cblock *output,
+		long length, DES_key_schedule *schedule, DES_key_schedule *schedule2,
+		const_DES_cblock *ivec);
+int sm_encrypt_des_ecb3(unsigned char *key, unsigned char *data, int data_len,
+		unsigned char **out, int *out_len);
+int sm_encrypt_des_cbc3(struct sc_context *ctx, unsigned char *key,
+		const unsigned char *in, size_t in_len,
+		unsigned char **out, size_t *out_len, int
+		not_force_pad);
+int sm_decrypt_des_cbc3(struct sc_context *ctx, unsigned char *key,
+		unsigned char *data, size_t data_len, unsigned char **out, size_t *out_len);
+void sm_incr_ssc(unsigned char *ssc, size_t ssc_len);
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
diff --git a/src/minidriver/Makefile.am b/src/minidriver/Makefile.am
index 796795d..419a7dc 100644
--- a/src/minidriver/Makefile.am
+++ b/src/minidriver/Makefile.am
@@ -1,21 +1,20 @@
 include $(top_srcdir)/win32/ltrc.inc
 
-MAINTAINERCLEANFILES = $(srcdir)/Makefile.in
-EXTRA_DIST = Makefile.mak
+MAINTAINERCLEANFILES = $(srcdir)/Makefile.in $(srcdir)/versioninfo-minidriver.rc
+EXTRA_DIST = Makefile.mak versioninfo-minidriver.rc.in
 
 if ENABLE_MINIDRIVER
 lib_LTLIBRARIES = opensc-minidriver at LIBRARY_BITNESS@.la
 # Do we need this on bin? Why can't we
 # put it in dedicated directory
-dist_sbin_SCRIPTS = opensc-minidriver.inf minidriver-westcos.reg minidriver-sc-hsm.reg
+dist_sbin_SCRIPTS = opensc-minidriver.inf minidriver-westcos.reg minidriver-sc-hsm.reg minidriver-feitian.reg
 else
-dist_noinst_DATA = opensc-minidriver.inf minidriver-westcos.reg minidriver-sc-hsm.reg
+dist_noinst_DATA = opensc-minidriver.inf minidriver-westcos.reg minidriver-sc-hsm.reg minidriver-feitian.reg
 endif
 
 AM_CPPFLAGS = -I$(top_srcdir)/src
 
-opensc_minidriver at LIBRARY_BITNESS@_la_SOURCES = minidriver.c minidriver.exports \
-	$(top_builddir)/win32/versioninfo.rc
+opensc_minidriver at LIBRARY_BITNESS@_la_SOURCES = minidriver.c minidriver.exports versioninfo-minidriver.rc
 opensc_minidriver at LIBRARY_BITNESS@_la_LIBADD =  \
 	$(top_builddir)/src/libopensc/libopensc.la \
 	-lcrypt32
diff --git a/src/minidriver/Makefile.in b/src/minidriver/Makefile.in
deleted file mode 100644
index 7a20450..0000000
--- a/src/minidriver/Makefile.in
+++ /dev/null
@@ -1,689 +0,0 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
- at SET_MAKE@
-
-# Required to build Windows resource file
-
-
-
-VPATH = @srcdir@
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-DIST_COMMON = $(am__dist_noinst_DATA_DIST) \
-	$(am__dist_sbin_SCRIPTS_DIST) $(srcdir)/Makefile.am \
-	$(srcdir)/Makefile.in $(srcdir)/opensc-minidriver.inf.in \
-	$(top_srcdir)/win32/ltrc.inc
-subdir = src/minidriver
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_pthread.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES = opensc-minidriver.inf
-CONFIG_CLEAN_VPATH_FILES =
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
-  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
-  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
-  for p in $$list; do echo "$$p $$p"; done | \
-  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
-  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
-    if (++n[$$2] == $(am__install_max)) \
-      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
-    END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
-  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
-  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(sbindir)"
-LTLIBRARIES = $(lib_LTLIBRARIES)
-opensc_minidriver at LIBRARY_BITNESS@_la_DEPENDENCIES =  \
-	$(top_builddir)/src/libopensc/libopensc.la
-am__dirstamp = $(am__leading_dot)dirstamp
-am_opensc_minidriver at LIBRARY_BITNESS@_la_OBJECTS = minidriver.lo \
-	$(top_builddir)/win32/versioninfo.lo
-opensc_minidriver at LIBRARY_BITNESS@_la_OBJECTS =  \
-	$(am_opensc_minidriver at LIBRARY_BITNESS@_la_OBJECTS)
-AM_V_lt = $(am__v_lt_$(V))
-am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
-am__v_lt_0 = --silent
-opensc_minidriver at LIBRARY_BITNESS@_la_LINK = $(LIBTOOL) $(AM_V_lt) \
-	--tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \
-	$(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(opensc_minidriver at LIBRARY_BITNESS@_la_LDFLAGS) $(LDFLAGS) -o \
-	$@
- at ENABLE_MINIDRIVER_TRUE@am_opensc_minidriver at LIBRARY_BITNESS@_la_rpath =  \
- at ENABLE_MINIDRIVER_TRUE@	-rpath $(libdir)
-am__dist_sbin_SCRIPTS_DIST = opensc-minidriver.inf \
-	minidriver-westcos.reg minidriver-sc-hsm.reg
-SCRIPTS = $(dist_sbin_SCRIPTS)
-DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
-depcomp = $(SHELL) $(top_srcdir)/depcomp
-am__depfiles_maybe = depfiles
-am__mv = mv -f
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
-	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
-	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
-	$(AM_CFLAGS) $(CFLAGS)
-AM_V_CC = $(am__v_CC_$(V))
-am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
-am__v_CC_0 = @echo "  CC    " $@;
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
-am__v_at_0 = @
-CCLD = $(CC)
-LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CCLD = $(am__v_CCLD_$(V))
-am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
-am__v_CCLD_0 = @echo "  CCLD  " $@;
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo "  GEN   " $@;
-SOURCES = $(opensc_minidriver at LIBRARY_BITNESS@_la_SOURCES)
-DIST_SOURCES = $(opensc_minidriver at LIBRARY_BITNESS@_la_SOURCES)
-am__dist_noinst_DATA_DIST = opensc-minidriver.inf \
-	minidriver-westcos.reg minidriver-sc-hsm.reg
-DATA = $(dist_noinst_DATA)
-ETAGS = etags
-CTAGS = ctags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AR = @AR@
-AS = @AS@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEBUG_FILE = @DEBUG_FILE@
-DEFAULT_PCSC_PROVIDER = @DEFAULT_PCSC_PROVIDER@
-DEFAULT_SM_MODULE = @DEFAULT_SM_MODULE@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DLLTOOL = @DLLTOOL@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-FGREP = @FGREP@
-GIT = @GIT@
-GREP = @GREP@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBOBJS = @LIBOBJS@
-LIBRARY_BITNESS = @LIBRARY_BITNESS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-NM = @NM@
-NMEDIT = @NMEDIT@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OPENCT_CFLAGS = @OPENCT_CFLAGS@
-OPENCT_LIBS = @OPENCT_LIBS@
-OPENSC_LT_AGE = @OPENSC_LT_AGE@
-OPENSC_LT_CURRENT = @OPENSC_LT_CURRENT@
-OPENSC_LT_OLDEST = @OPENSC_LT_OLDEST@
-OPENSC_LT_REVISION = @OPENSC_LT_REVISION@
-OPENSC_VERSION_FIX = @OPENSC_VERSION_FIX@
-OPENSC_VERSION_MAJOR = @OPENSC_VERSION_MAJOR@
-OPENSC_VERSION_MINOR = @OPENSC_VERSION_MINOR@
-OPENSSL_CFLAGS = @OPENSSL_CFLAGS@
-OPENSSL_LIBS = @OPENSSL_LIBS@
-OPTIONAL_OPENCT_CFLAGS = @OPTIONAL_OPENCT_CFLAGS@
-OPTIONAL_OPENCT_LIBS = @OPTIONAL_OPENCT_LIBS@
-OPTIONAL_OPENSSL_CFLAGS = @OPTIONAL_OPENSSL_CFLAGS@
-OPTIONAL_OPENSSL_LIBS = @OPTIONAL_OPENSSL_LIBS@
-OPTIONAL_PCSC_CFLAGS = @OPTIONAL_PCSC_CFLAGS@
-OPTIONAL_READLINE_CFLAGS = @OPTIONAL_READLINE_CFLAGS@
-OPTIONAL_READLINE_LIBS = @OPTIONAL_READLINE_LIBS@
-OPTIONAL_ZLIB_CFLAGS = @OPTIONAL_ZLIB_CFLAGS@
-OPTIONAL_ZLIB_LIBS = @OPTIONAL_ZLIB_LIBS@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PCSC_CFLAGS = @PCSC_CFLAGS@
-PCSC_LIBS = @PCSC_LIBS@
-PKG_CONFIG = @PKG_CONFIG@
-PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
-PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
-PTHREAD_CC = @PTHREAD_CC@
-PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
-PTHREAD_LIBS = @PTHREAD_LIBS@
-RANLIB = @RANLIB@
-RC = @RC@
-READLINE_CFLAGS = @READLINE_CFLAGS@
-READLINE_LIBS = @READLINE_LIBS@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-WIN_LIBPREFIX = @WIN_LIBPREFIX@
-XSLTPROC = @XSLTPROC@
-ZLIB_CFLAGS = @ZLIB_CFLAGS@
-ZLIB_LIBS = @ZLIB_LIBS@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-ax_pthread_config = @ax_pthread_config@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-git = @git@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-pkcs11dir = @pkcs11dir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-xslstylesheetsdir = @xslstylesheetsdir@
-RCCOMPILE = $(RC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS)
-
-LTRCCOMPILE = $(LIBTOOL) --mode=compile --tag=RC $(RCCOMPILE)
-MAINTAINERCLEANFILES = $(srcdir)/Makefile.in
-EXTRA_DIST = Makefile.mak
- at ENABLE_MINIDRIVER_TRUE@lib_LTLIBRARIES = opensc-minidriver at LIBRARY_BITNESS@.la
-# Do we need this on bin? Why can't we
-# put it in dedicated directory
- at ENABLE_MINIDRIVER_TRUE@dist_sbin_SCRIPTS = opensc-minidriver.inf minidriver-westcos.reg minidriver-sc-hsm.reg
- at ENABLE_MINIDRIVER_FALSE@dist_noinst_DATA = opensc-minidriver.inf minidriver-westcos.reg minidriver-sc-hsm.reg
-AM_CPPFLAGS = -I$(top_srcdir)/src
-opensc_minidriver at LIBRARY_BITNESS@_la_SOURCES = minidriver.c minidriver.exports \
-	$(top_builddir)/win32/versioninfo.rc
-
-opensc_minidriver at LIBRARY_BITNESS@_la_LIBADD = \
-	$(top_builddir)/src/libopensc/libopensc.la \
-	-lcrypt32
-
-opensc_minidriver at LIBRARY_BITNESS@_la_LDFLAGS = $(AM_LDFLAGS) \
-	-export-symbols "$(srcdir)/minidriver.exports" \
-	-module -avoid-version -no-undefined
-
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .c .lo .o .obj .rc
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am $(top_srcdir)/win32/ltrc.inc $(am__configure_deps)
-	@for dep in $?; do \
-	  case '$(am__configure_deps)' in \
-	    *$$dep*) \
-	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
-	        && { if test -f $@; then exit 0; else break; fi; }; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/minidriver/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --foreign src/minidriver/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-	@case '$?' in \
-	  *config.status*) \
-	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-	esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure:  $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-opensc-minidriver.inf: $(top_builddir)/config.status $(srcdir)/opensc-minidriver.inf.in
-	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
-install-libLTLIBRARIES: $(lib_LTLIBRARIES)
-	@$(NORMAL_INSTALL)
-	test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)"
-	@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
-	list2=; for p in $$list; do \
-	  if test -f $$p; then \
-	    list2="$$list2 $$p"; \
-	  else :; fi; \
-	done; \
-	test -z "$$list2" || { \
-	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \
-	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \
-	}
-
-uninstall-libLTLIBRARIES:
-	@$(NORMAL_UNINSTALL)
-	@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
-	for p in $$list; do \
-	  $(am__strip_dir) \
-	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \
-	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \
-	done
-
-clean-libLTLIBRARIES:
-	-test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
-	@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
-	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
-	  test "$$dir" != "$$p" || dir=.; \
-	  echo "rm -f \"$${dir}/so_locations\""; \
-	  rm -f "$${dir}/so_locations"; \
-	done
-$(top_builddir)/win32/$(am__dirstamp):
-	@$(MKDIR_P) $(top_builddir)/win32
-	@: > $(top_builddir)/win32/$(am__dirstamp)
-$(top_builddir)/win32/$(DEPDIR)/$(am__dirstamp):
-	@$(MKDIR_P) $(top_builddir)/win32/$(DEPDIR)
-	@: > $(top_builddir)/win32/$(DEPDIR)/$(am__dirstamp)
-$(top_builddir)/win32/versioninfo.lo:  \
-	$(top_builddir)/win32/$(am__dirstamp) \
-	$(top_builddir)/win32/$(DEPDIR)/$(am__dirstamp)
-opensc-minidriver at LIBRARY_BITNESS@.la: $(opensc_minidriver at LIBRARY_BITNESS@_la_OBJECTS) $(opensc_minidriver at LIBRARY_BITNESS@_la_DEPENDENCIES) 
-	$(AM_V_CCLD)$(opensc_minidriver at LIBRARY_BITNESS@_la_LINK) $(am_opensc_minidriver at LIBRARY_BITNESS@_la_rpath) $(opensc_minidriver at LIBRARY_BITNESS@_la_OBJECTS) $(opensc_minidriver at LIBRARY_BITNESS@_la_LIBADD) $(LIBS)
-install-dist_sbinSCRIPTS: $(dist_sbin_SCRIPTS)
-	@$(NORMAL_INSTALL)
-	test -z "$(sbindir)" || $(MKDIR_P) "$(DESTDIR)$(sbindir)"
-	@list='$(dist_sbin_SCRIPTS)'; test -n "$(sbindir)" || list=; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \
-	done | \
-	sed -e 'p;s,.*/,,;n' \
-	    -e 'h;s|.*|.|' \
-	    -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \
-	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \
-	  { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
-	    if ($$2 == $$4) { files[d] = files[d] " " $$1; \
-	      if (++n[d] == $(am__install_max)) { \
-		print "f", d, files[d]; n[d] = 0; files[d] = "" } } \
-	    else { print "f", d "/" $$4, $$1 } } \
-	  END { for (d in files) print "f", d, files[d] }' | \
-	while read type dir files; do \
-	     if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
-	     test -z "$$files" || { \
-	       echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(sbindir)$$dir'"; \
-	       $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(sbindir)$$dir" || exit $$?; \
-	     } \
-	; done
-
-uninstall-dist_sbinSCRIPTS:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_sbin_SCRIPTS)'; test -n "$(sbindir)" || exit 0; \
-	files=`for p in $$list; do echo "$$p"; done | \
-	       sed -e 's,.*/,,;$(transform)'`; \
-	test -n "$$list" || exit 0; \
-	echo " ( cd '$(DESTDIR)$(sbindir)' && rm -f" $$files ")"; \
-	cd "$(DESTDIR)$(sbindir)" && rm -f $$files
-
-mostlyclean-compile:
-	-rm -f *.$(OBJEXT)
-	-rm -f $(top_builddir)/win32/versioninfo.$(OBJEXT)
-	-rm -f $(top_builddir)/win32/versioninfo.lo
-
-distclean-compile:
-	-rm -f *.tab.c
-
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/minidriver.Plo at am__quote@
-
-.c.o:
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(COMPILE) -c $<
-
-.c.obj:
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
-
-.c.lo:
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
- at am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $<
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf $(top_builddir)/win32/.libs $(top_builddir)/win32/_libs
-	-rm -rf .libs _libs
-
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	set x; \
-	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	shift; \
-	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
-	  test -n "$$unique" || unique=$$empty_fix; \
-	  if test $$# -gt 0; then \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      "$$@" $$unique; \
-	  else \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      $$unique; \
-	  fi; \
-	fi
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	test -z "$(CTAGS_ARGS)$$unique" \
-	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$unique
-
-GTAGS:
-	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && $(am__cd) $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) "$$here"
-
-distclean-tags:
-	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d "$(distdir)/$$file"; then \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-	  else \
-	    test -f "$(distdir)/$$file" \
-	    || cp -p $$d/$$file "$(distdir)/$$file" \
-	    || exit 1; \
-	  fi; \
-	done
-check-am: all-am
-check: check-am
-all-am: Makefile $(LTLIBRARIES) $(SCRIPTS) $(DATA)
-installdirs:
-	for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(sbindir)"; do \
-	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
-	done
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-	-test -z "$(top_builddir)/win32/$(DEPDIR)/$(am__dirstamp)" || rm -f $(top_builddir)/win32/$(DEPDIR)/$(am__dirstamp)
-	-test -z "$(top_builddir)/win32/$(am__dirstamp)" || rm -f $(top_builddir)/win32/$(am__dirstamp)
-
-maintainer-clean-generic:
-	@echo "This command is intended for maintainers to use"
-	@echo "it deletes files that may require special tools to rebuild."
-	-test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
- at ENABLE_MINIDRIVER_FALSE@install-exec-hook:
-clean: clean-am
-
-clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \
-	mostlyclean-am
-
-distclean: distclean-am
-	-rm -rf ./$(DEPDIR)
-	-rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
-	distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am:
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am: install-dist_sbinSCRIPTS install-libLTLIBRARIES
-	@$(NORMAL_INSTALL)
-	$(MAKE) $(AM_MAKEFLAGS) install-exec-hook
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
-	-rm -rf ./$(DEPDIR)
-	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-compile mostlyclean-generic \
-	mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-dist_sbinSCRIPTS uninstall-libLTLIBRARIES
-
-.MAKE: install-am install-exec-am install-strip
-
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
-	clean-libLTLIBRARIES clean-libtool ctags distclean \
-	distclean-compile distclean-generic distclean-libtool \
-	distclean-tags distdir dvi dvi-am html html-am info info-am \
-	install install-am install-data install-data-am \
-	install-dist_sbinSCRIPTS install-dvi install-dvi-am \
-	install-exec install-exec-am install-exec-hook install-html \
-	install-html-am install-info install-info-am \
-	install-libLTLIBRARIES install-man install-pdf install-pdf-am \
-	install-ps install-ps-am install-strip installcheck \
-	installcheck-am installdirs maintainer-clean \
-	maintainer-clean-generic mostlyclean mostlyclean-compile \
-	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-	tags uninstall uninstall-am uninstall-dist_sbinSCRIPTS \
-	uninstall-libLTLIBRARIES
-
-
-.rc.lo:
-	$(LTRCCOMPILE) -i "$<" -o "$@"
-
-.rc.o:
-	$(RCCOMPILE) -i "$<" -o "$@"
-
- at ENABLE_MINIDRIVER_TRUE@install-exec-hook:
- at ENABLE_MINIDRIVER_TRUE@	mv "$(DESTDIR)$(libdir)/opensc-minidriver at LIBRARY_BITNESS@.dll" "$(DESTDIR)$(bindir)/"
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/src/minidriver/Makefile.mak b/src/minidriver/Makefile.mak
index dde6f81..85bf56d 100644
--- a/src/minidriver/Makefile.mak
+++ b/src/minidriver/Makefile.mak
@@ -1,11 +1,11 @@
 TOPDIR = ..\..
 
 TARGET = opensc-minidriver.dll
-OBJECTS = minidriver.obj
+OBJECTS = minidriver.obj versioninfo-minidriver.res
 
 !INCLUDE $(TOPDIR)\win32\Make.rules.mak
 
-all: $(TARGET)
+all: versioninfo-minidriver.res $(TARGET)
 
 $(TARGET): $(OBJECTS) ..\libopensc\opensc_a.lib ..\pkcs15init\pkcs15init.lib
 	echo LIBRARY $* > $*.def
diff --git a/src/minidriver/minidriver-feitian.reg b/src/minidriver/minidriver-feitian.reg
new file mode 100644
index 0000000..446ef1c
--- /dev/null
+++ b/src/minidriver/minidriver-feitian.reg
@@ -0,0 +1,30 @@
+Windows Registry Editor Version 5.00
+
+[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\Calais\SmartCards\ePass2003]
+"ATR"=hex:3b,9f,95,81,31,fe,9f,00,66,46,53,05,01,00,11,71,df,00,00,03,6a,82,f8
+"ATRMask"=hex,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff
+"Crypto Provider"="Microsoft Base Smart Card Crypto Provider"
+"Smart Card Key Storage Provider"="Microsoft Smart Card Key Storage Provider"
+"80000001"="opensc-minidriver.dll"
+
+[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Cryptography\Calais\SmartCards\ePass2003]
+"ATR"=hex:3b,9f,95,81,31,fe,9f,00,66,46,53,05,01,00,11,71,df,00,00,03,6a,82,f8
+"ATRMask"=hex:ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,00,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff
+"Crypto Provider"="Microsoft Base Smart Card Crypto Provider"
+"Smart Card Key Storage Provider"="Microsoft Smart Card Key Storage Provider"
+"80000001"="opensc-minidriver.dll"
+
+
+[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\Calais\SmartCards\FTCOS/PK-01C]
+"ATR"=hex:3b,9f,95,81,31,fe,9f,00,65,46,53,05,00,06,71,df,00,00,00,00,00,00,00
+"ATRMask"=hex:ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,00,ff,ff,ff,ff,ff,ff,00,00,00,00
+"Crypto Provider"="Microsoft Base Smart Card Crypto Provider"
+"Smart Card Key Storage Provider"="Microsoft Smart Card Key Storage Provider"
+"80000001"="opensc-minidriver.dll"
+
+[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Cryptography\Calais\SmartCards\FTCOS/PK-01C]
+"ATR"=hex:3b,9f,95,81,31,fe,9f,00,65,46,53,05,00,06,71,df,00,00,00,00,00,00,00
+"ATRMask"=hex:ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,00,ff,ff,ff,ff,ff,ff,00,00,00,00
+"Crypto Provider"="Microsoft Base Smart Card Crypto Provider"
+"Smart Card Key Storage Provider"="Microsoft Smart Card Key Storage Provider"
+"80000001"="opensc-minidriver.dll"
diff --git a/src/minidriver/minidriver.c b/src/minidriver/minidriver.c
index 97e7252..a7f3dbe 100644
--- a/src/minidriver/minidriver.c
+++ b/src/minidriver/minidriver.c
@@ -149,6 +149,12 @@ typedef struct _VENDOR_SPECIFIC
 
 	SCARDCONTEXT hSCardCtx;
 	SCARDHANDLE hScard;
+
+	/* These will be used in CardAuthenticateEx to display a dialog box when doing
+	 * external PIN verification.
+	 */
+	HWND hwndParent;
+	LPWSTR wszPinContext;
 }VENDOR_SPECIFIC;
 
 /*
@@ -159,9 +165,15 @@ typedef struct _VENDOR_SPECIFIC
  *
  * TODO: resolve multi-thread issues on the OpenSC side
  */
-#define MD_STATIC_FLAG_READ_ONLY		1
-#define MD_STATIC_FLAG_SUPPORTS_X509_ENROLLMENT	2
-#define MD_STATIC_FLAG_CONTEXT_DELETED		4
+#define MD_STATIC_FLAG_READ_ONLY			1
+#define MD_STATIC_FLAG_SUPPORTS_X509_ENROLLMENT		2
+#define MD_STATIC_FLAG_CONTEXT_DELETED			4
+#define MD_STATIC_FLAG_GUID_AS_ID			8
+#define MD_STATIC_FLAG_GUID_AS_LABEL			16
+#define MD_STATIC_FLAG_CREATE_CONTAINER_KEY_IMPORT	32
+#define MD_STATIC_FLAG_CREATE_CONTAINER_KEY_GEN		64
+#define MD_STATIC_FLAG_IGNORE_PIN_LENGTH		128
+
 #define MD_STATIC_PROCESS_ATTACHED		0xA11AC4EDL
 struct md_opensc_static_data {
 	unsigned flags, flags_checked;
@@ -380,19 +392,18 @@ md_get_pin_by_role(PCARD_DATA pCardData, PIN_ID role, struct sc_pkcs15_object **
 }
 
 
-/* 'Write' mode can be enabled from the OpenSC configuration file*/
 static BOOL
-md_is_read_only(PCARD_DATA pCardData)
+md_get_config_bool(PCARD_DATA pCardData, char *flag_name, unsigned flag, BOOL ret_default)
 {
 	VENDOR_SPECIFIC *vs;
-	BOOL ret = TRUE;
+	BOOL ret = ret_default;
 
 	if (!pCardData)
-		return TRUE;
+		return ret;
 
-	logprintf(pCardData, 2, "Is read-only?\n");
-	if (md_static_data.flags_checked & MD_STATIC_FLAG_READ_ONLY)   {
-		ret = (md_static_data.flags & MD_STATIC_FLAG_READ_ONLY) ? TRUE : FALSE;
+	logprintf(pCardData, 2, "Get '%s' option\n", flag_name);
+	if (md_static_data.flags_checked & flag)   {
+		ret = (md_static_data.flags & flag) ? TRUE : FALSE;
 		logprintf(pCardData, 2, "Returns checked flag: %s\n", ret ? "TRUE" : "FALSE");
 		return ret;
 	}
@@ -401,67 +412,80 @@ md_is_read_only(PCARD_DATA pCardData)
 	if (vs->ctx && vs->reader)   {
 		/* TODO: use atr from pCardData */
 		scconf_block *atrblock = _sc_match_atr_block(vs->ctx, NULL, &vs->reader->atr);
-		logprintf(pCardData, 2, "Match ATR:\n", atrblock);
+		logprintf(pCardData, 2, "Match ATR:\n");
 		loghex(pCardData, 3, vs->reader->atr.value, vs->reader->atr.len);
 
 		if (atrblock)
-			if (scconf_get_bool(atrblock, "md_read_only", 1) == 0)
-				ret = FALSE;
+			ret = scconf_get_bool(atrblock, flag_name, ret_default) ? TRUE : FALSE;
 	}
 
-	md_static_data.flags_checked |= MD_STATIC_FLAG_READ_ONLY;
+	md_static_data.flags_checked |= flag;
 	if (ret == TRUE)
-		md_static_data.flags |= MD_STATIC_FLAG_READ_ONLY;
+		md_static_data.flags |= flag;
 	else
-		md_static_data.flags &= ~MD_STATIC_FLAG_READ_ONLY;
+		md_static_data.flags &= ~flag;
 
-	logprintf(pCardData, 2, "Returns read-only flag '%s', static flags %X/%X\n",
-			ret ? "TRUE" : "FALSE",
+	logprintf(pCardData, 2, "Returns '%s' flag '%s', static flags/checked %X/%X\n",
+			flag_name, ret ? "TRUE" : "FALSE",
 			md_static_data.flags, md_static_data.flags_checked);
 	return ret;
 }
 
+
 /* 'Write' mode can be enabled from the OpenSC configuration file*/
 static BOOL
-md_is_supports_X509_enrollment(PCARD_DATA pCardData)
+md_is_read_only(PCARD_DATA pCardData)
 {
-	VENDOR_SPECIFIC *vs;
-	BOOL ret = FALSE;
+	logprintf(pCardData, 2, "Is read-only?\n");
+	return md_get_config_bool(pCardData, "md_read_only", MD_STATIC_FLAG_READ_ONLY, TRUE);
+}
 
-	if (!pCardData)
-		return FALSE;
 
+/* 'Write' mode can be enabled from the OpenSC configuration file*/
+static BOOL
+md_is_supports_X509_enrollment(PCARD_DATA pCardData)
+{
 	logprintf(pCardData, 2, "Is supports X509 enrollment?\n");
-	if (md_static_data.flags_checked & MD_STATIC_FLAG_SUPPORTS_X509_ENROLLMENT)   {
-		ret = (md_static_data.flags & MD_STATIC_FLAG_SUPPORTS_X509_ENROLLMENT) ? TRUE : FALSE;
-		logprintf(pCardData, 2, "Returns checked flag: %s\n", ret ? "TRUE" : "FALSE");
-		return ret;
-	}
+	return md_get_config_bool(pCardData, "md_supports_X509_enrollment", MD_STATIC_FLAG_SUPPORTS_X509_ENROLLMENT, FALSE);
+}
 
-	vs = pCardData->pvVendorSpecific;
-	if (vs->ctx && vs->reader)   {
-		/* TODO: use atr from pCardData */
-		scconf_block *atrblock = _sc_match_atr_block(vs->ctx, NULL, &vs->reader->atr);
-		logprintf(pCardData, 2, "Match ATR:\n");
-		loghex(pCardData, 3, vs->reader->atr.value, vs->reader->atr.len);
 
-		if (atrblock)
-			if (scconf_get_bool(atrblock, "md_supports_X509_enrollment", 0))
-				ret = TRUE;
-	}
+/* Get know if the GUID has to used as ID of crypto objects */
+static BOOL
+md_is_guid_as_id(PCARD_DATA pCardData)
+{
+	logprintf(pCardData, 2, "Is GUID has to be used as ID of crypto objects?\n");
+	return md_get_config_bool(pCardData, "md_guid_as_id", MD_STATIC_FLAG_GUID_AS_ID, FALSE);
+}
 
-	md_static_data.flags_checked |= MD_STATIC_FLAG_SUPPORTS_X509_ENROLLMENT;
-	if (ret == TRUE)
-		md_static_data.flags |= MD_STATIC_FLAG_SUPPORTS_X509_ENROLLMENT;
-	else
-		md_static_data.flags &= ~MD_STATIC_FLAG_SUPPORTS_X509_ENROLLMENT;
 
-	logprintf(pCardData, 2, "Returns x509-enrollment flag '%s', static flags %X/%X\n",
-			ret ? "TRUE" : "FALSE",
-			md_static_data.flags, md_static_data.flags_checked);
-	return ret;
+/* Get know if the GUID has to used as label of crypto objects */
+static BOOL
+md_is_guid_as_label(PCARD_DATA pCardData)
+{
+	logprintf(pCardData, 2, "Is GUID has to be used as label of crypto objects?\n");
+	return md_get_config_bool(pCardData, "md_guid_as_label", MD_STATIC_FLAG_GUID_AS_LABEL, FALSE);
+}
+
+
+/* Get know if disabled CARD_CREATE_CONTAINER_KEY_GEN mechanism */
+static BOOL
+md_is_supports_container_key_gen(PCARD_DATA pCardData)
+{
+	logprintf(pCardData, 2, "Is supports 'key generation' create_container mechanism?\n");
+	return md_get_config_bool(pCardData, "md_supports_container_key_gen", MD_STATIC_FLAG_CREATE_CONTAINER_KEY_GEN, TRUE);
 }
 
+
+/* Get know if disabled CARD_CREATE_CONTAINER_KEY_IMPORT mechanism */
+static BOOL
+md_is_supports_container_key_import(PCARD_DATA pCardData)
+{
+	logprintf(pCardData, 2, "Is supports 'key import' create container mechanism?\n");
+	return md_get_config_bool(pCardData, "md_supports_container_key_import", MD_STATIC_FLAG_CREATE_CONTAINER_KEY_IMPORT, TRUE);
+}
+
+
 /* Check if specified PIN has been verified */
 static BOOL
 md_is_pin_set(PCARD_DATA pCardData, DWORD role)
@@ -768,7 +792,7 @@ static DWORD
 md_pkcs15_encode_cmapfile(PCARD_DATA pCardData, unsigned char **out, size_t *out_len)
 {
 	VENDOR_SPECIFIC *vs;
-	unsigned char *encoded, *ret;
+	unsigned char *encoded, *ret, *p;
 	size_t guid_len, encoded_len, flags_len, ret_len;
 	int idx;
 
@@ -808,11 +832,13 @@ md_pkcs15_encode_cmapfile(PCARD_DATA pCardData, unsigned char **out, size_t *out
 			return SCARD_F_INTERNAL_ERROR;
 		}
 
-		ret = realloc(ret, ret_len + encoded_len);
-		if (!ret)   {
+		p = realloc(ret, ret_len + encoded_len);
+		if (!p)   {
 			logprintf(pCardData, 3, "MdEncodeCMapFile(): realloc failed\n");
+			free(ret);
 			return SCARD_E_NO_MEMORY;
 		}
+		ret = p;
 		memcpy(ret + ret_len, encoded, encoded_len);
 		free(encoded);
 		ret_len += encoded_len;
@@ -1074,7 +1100,7 @@ md_set_cardid(PCARD_DATA pCardData, struct md_file *file)
 			}
 			memcpy(sn_bin, vs->p15card->tokeninfo->serial_number, sn_len);
 		}
-		
+
 		for (offs=0; offs < MD_CARDID_SIZE; )   {
 			wr = MD_CARDID_SIZE - offs;
 			if (wr > sn_len)
@@ -1176,10 +1202,15 @@ md_set_cardcf(PCARD_DATA pCardData, struct md_file *file)
 	empty.bVersion = CARD_CACHE_FILE_CURRENT_VERSION;
 
 	last_update = sc_pkcs15_get_lastupdate(vs->p15card);
-	if (last_update)   {
+	if (vs->p15card->md_data)    {
+		logprintf(pCardData, 2, "Set 'cardcf' using internal MD data\n");
+		empty.wContainersFreshness = vs->p15card->md_data->cardcf.cont_freshness;
+		empty.wFilesFreshness = vs->p15card->md_data->cardcf.files_freshness;
+	}
+	else if (last_update)   {
 		unsigned crc32 = sc_crc32(last_update, strlen(last_update));
-		logprintf(pCardData, 2, "Set 'cardcf' using lastUpdate '%s'; CRC32 %X\n", last_update, crc32);
 
+		logprintf(pCardData, 2, "Set 'cardcf' using lastUpdate '%s'; CRC32 %X\n", last_update, crc32);
 		empty.wContainersFreshness = crc32;
 		empty.wFilesFreshness = crc32;
 	}
@@ -1297,26 +1328,44 @@ md_set_cmapfile(PCARD_DATA pCardData, struct md_file *file)
 			continue;
 		}
 
-		rv = sc_pkcs15_get_guid(vs->p15card, key_obj, 0, cont->guid, sizeof(cont->guid));
-		if (rv)   {
-			logprintf(pCardData, 2, "sc_pkcs15_get_guid() error %d\n", rv);
-			return SCARD_F_INTERNAL_ERROR;
+		if (prkey_info->cmap_record.guid)   {
+			strncpy(cont->guid, prkey_info->cmap_record.guid, sizeof(cont->guid));
+
+			cont->size_key_exchange = prkey_info->cmap_record.keysize_keyexchange;
+			cont->size_sign = prkey_info->cmap_record.keysize_sign;
+
+			cont->flags = prkey_info->cmap_record.flags;
+			if (cont->flags & CONTAINER_MAP_DEFAULT_CONTAINER)
+				found_default = 1;
 		}
+		else   {
+			size_t guid_len;
 
-		logprintf(pCardData, 7, "Container[%i]'s guid=%s\n", ii, cont->guid);
-		cont->flags = CONTAINER_MAP_VALID_CONTAINER;
+			memset(cont->guid, 0, sizeof(cont->guid));
+			guid_len = sizeof(cont->guid);
 
-		/* AT_KEYEXCHANGE is more general key usage,
-		 * 	it allows 'decryption' as well as 'signature' key usage.
-		 * AT_SIGNATURE allows only 'signature' usage.
-		 */
-		cont->size_key_exchange = cont->size_sign = 0;
-		if (prkey_info->usage & USAGE_ANY_DECIPHER)
-			cont->size_key_exchange = prkey_info->modulus_length;
-		else if (prkey_info->usage & USAGE_ANY_SIGN)
-			cont->size_sign = prkey_info->modulus_length;
-		else
-			cont->size_key_exchange = prkey_info->modulus_length;
+			rv = sc_pkcs15_get_object_guid(vs->p15card, key_obj, 0, cont->guid, &guid_len);
+			if (rv)   {
+				logprintf(pCardData, 2, "sc_pkcs15_get_object_guid() error %d\n", rv);
+				return SCARD_F_INTERNAL_ERROR;
+			}
+
+			cont->flags = CONTAINER_MAP_VALID_CONTAINER;
+
+			/* AT_KEYEXCHANGE is more general key usage,
+			 *	it allows 'decryption' as well as 'signature' key usage.
+			 * AT_SIGNATURE allows only 'signature' usage.
+			 */
+			cont->size_key_exchange = cont->size_sign = 0;
+			if (prkey_info->usage & USAGE_ANY_DECIPHER)
+				cont->size_key_exchange = prkey_info->modulus_length;
+			else if (prkey_info->usage & USAGE_ANY_SIGN)
+				cont->size_sign = prkey_info->modulus_length;
+			else
+				cont->size_key_exchange = prkey_info->modulus_length;
+		}
+
+		logprintf(pCardData, 7, "Container[%i]'s guid=%s\n", ii, cont->guid);
 		logprintf(pCardData, 7, "Container[%i]'s key-exchange:%i, sign:%i\n", ii, cont->size_key_exchange, cont->size_sign);
 
 		cont->id = prkey_info->id;
@@ -1331,7 +1380,7 @@ md_set_cmapfile(PCARD_DATA pCardData, struct md_file *file)
 	}
 
 	if (conts_num)   {
-		/* Read 'CMAPFILE' and update the attributes of P15 containers */
+		/* Read 'CMAPFILE' (Gemalto style) and update the attributes of P15 containers */
 		struct sc_pkcs15_object *dobjs[MD_MAX_KEY_CONTAINERS + 1], *default_cont = NULL;
 		int num_dobjs = MD_MAX_KEY_CONTAINERS + 1;
 
@@ -1470,7 +1519,7 @@ md_fs_init(PCARD_DATA pCardData)
 	if (dwret != SCARD_S_SUCCESS)
 		return dwret;
 
-	logprintf(pCardData, 3, "MD virtual file system initialized\n");
+	logprintf(pCardData, 3, "MD virtual file system initialized; OPENSSL_VERSION_NUMBER 0x%Xl\n", OPENSSL_VERSION_NUMBER);
 	return SCARD_S_SUCCESS;
 }
 
@@ -1687,8 +1736,27 @@ md_pkcs15_generate_key(PCARD_DATA pCardData, DWORD idx, DWORD key_type, DWORD ke
 
 	sc_pkcs15init_set_p15card(profile, vs->p15card);
 	cont = &(vs->p15_containers[idx]);
-	if (strlen(cont->guid))
+	if (strlen(cont->guid))   {
+		logprintf(pCardData, 3, "MdGenerateKey(): generate key(idx:%i,guid:%s)\n", idx, cont->guid);
 		keygen_args.prkey_args.guid = cont->guid;
+		keygen_args.prkey_args.guid_len = strlen(cont->guid);
+	}
+
+	if (md_is_guid_as_id(pCardData))  {
+		if (strlen(cont->guid) > sizeof(keygen_args.prkey_args.id.value))   {
+			logprintf(pCardData, 3, "MdGenerateKey(): cannot set ID -- invalid GUID length\n");
+			goto done;
+		}
+
+		memcpy(keygen_args.prkey_args.id.value, cont->guid, strlen(cont->guid));
+		keygen_args.prkey_args.id.len = strlen(cont->guid);
+		logprintf(pCardData, 3, "MdGenerateKey(): use ID:%s\n", sc_pkcs15_print_id(&keygen_args.prkey_args.id));
+	}
+
+	if (md_is_guid_as_label(pCardData))  {
+		keygen_args.prkey_args.label =  cont->guid;
+		logprintf(pCardData, 3, "MdGenerateKey(): use label '%s'\n", keygen_args.prkey_args.label);
+	}
 
 	rv = sc_pkcs15init_generate_key(vs->p15card, profile, &keygen_args, key_size, &cont->prkey_obj);
 	if (rv < 0) {
@@ -1723,10 +1791,12 @@ md_pkcs15_store_key(PCARD_DATA pCardData, DWORD idx, DWORD key_type, BYTE *blob,
 	struct md_pkcs15_container *cont = NULL;
 	struct sc_pkcs15init_prkeyargs prkey_args;
 	struct sc_pkcs15init_pubkeyargs pubkey_args;
+	char *label = NULL;
 	BYTE *ptr = blob;
 	EVP_PKEY *pkey=NULL;
 	int rv;
 	DWORD dw, dwret = SCARD_F_INTERNAL_ERROR;
+	BOOL is_guid_as_id = FALSE;
 
 	if (!pCardData)
 		return SCARD_E_INVALID_PARAMETER;
@@ -1799,8 +1869,32 @@ md_pkcs15_store_key(PCARD_DATA pCardData, DWORD idx, DWORD key_type, BYTE *blob,
 
 	sc_pkcs15init_set_p15card(profile, vs->p15card);
 	cont = &(vs->p15_containers[idx]);
-	if (strlen(cont->guid))
+	if (strlen(cont->guid))   {
+		logprintf(pCardData, 3, "MdStoreKey(): store key(idx:%i,id:%s,guid:%s)\n", idx, sc_pkcs15_print_id(&cont->id), cont->guid);
 		prkey_args.guid = cont->guid;
+		prkey_args.guid_len = strlen(cont->guid);
+	}
+
+	if (md_is_guid_as_id(pCardData))  {
+		if (strlen(cont->guid) > sizeof(prkey_args.id.value))   {
+			logprintf(pCardData, 3, "MdStoreKey(): cannot set ID -- invalid GUID length\n");
+			goto done;
+		}
+
+		memcpy(prkey_args.id.value, cont->guid, strlen(cont->guid));
+		prkey_args.id.len = strlen(cont->guid);
+
+		memcpy(pubkey_args.id.value, cont->guid, strlen(cont->guid));
+		pubkey_args.id.len = strlen(cont->guid);
+
+		logprintf(pCardData, 3, "MdStoreKey(): use ID:%s\n", sc_pkcs15_print_id(&prkey_args.id));
+	}
+
+	if (md_is_guid_as_label(pCardData))  {
+		prkey_args.label =  cont->guid;
+		pubkey_args.label =  cont->guid;
+		logprintf(pCardData, 3, "MdStoreKey(): use label '%s'\n", prkey_args.label);
+	}
 
 	rv = sc_pkcs15init_store_private_key(vs->p15card, profile, &prkey_args, &cont->prkey_obj);
 	if (rv < 0) {
@@ -1836,17 +1930,19 @@ static DWORD
 md_pkcs15_store_certificate(PCARD_DATA pCardData, char *file_name, unsigned char *blob, size_t len)
 {
 	VENDOR_SPECIFIC *vs;
+	struct md_pkcs15_container *cont = NULL;
 	struct sc_card *card = NULL;
 	struct sc_profile *profile = NULL;
 	struct sc_app_info *app_info = NULL;
 	struct sc_pkcs15_object *cert_obj;
 	struct sc_pkcs15init_certargs args;
-	int rv;
+	int rv, idx;
 	DWORD dwret = SCARD_F_INTERNAL_ERROR;
 
 	if (!pCardData)
 		return SCARD_E_INVALID_PARAMETER;
 
+	logprintf(pCardData, 1, "MdStoreCert(): store certificate '%s'\n", file_name);
 	vs = (VENDOR_SPECIFIC*)(pCardData->pvVendorSpecific);
 	card = vs->p15card->card;
 
@@ -1854,6 +1950,19 @@ md_pkcs15_store_certificate(PCARD_DATA pCardData, char *file_name, unsigned char
 	args.der_encoded.value = blob;
 	args.der_encoded.len = len;
 
+	/* use container's ID as ID of certificate to store */
+	idx = -1;
+	if(sscanf(file_name, "ksc%d", &idx) > 0)
+		;
+	else if(sscanf(file_name, "kxc%d", &idx) > 0)
+		;
+
+	if (idx >= 0 && idx < MD_MAX_KEY_CONTAINERS)   {
+		cont = &(vs->p15_containers[idx]);
+		args.id = cont->id;
+		logprintf(pCardData, 3, "MdStoreCert(): store certificate(idx:%i,id:%s)\n", idx, sc_pkcs15_print_id(&cont->id));
+	}
+
 	rv = sc_lock(card);
 	if (rv)   {
 		logprintf(pCardData, 3, "MdStoreCert(): cannot lock card\n");
@@ -1998,28 +2107,43 @@ DWORD WINAPI CardCreateContainer(__in PCARD_DATA pCardData,
 
 	dwret = md_check_key_compatibility(pCardData, dwFlags, dwKeySpec, dwKeySize, pbKeyData);
 	if (dwret != SCARD_S_SUCCESS)   {
-		logprintf(pCardData, 1, "check key compatibility failed");
+		logprintf(pCardData, 1, "check key compatibility failed\n");
 		return dwret;
 	}
 
+	if (!md_is_supports_container_key_gen(pCardData))   {
+		logprintf(pCardData, 1, "Denied 'generate key' mechanism to create container.\n");
+		dwFlags &= ~CARD_CREATE_CONTAINER_KEY_GEN;
+	}
+
+	if (!md_is_supports_container_key_import(pCardData))   {
+		logprintf(pCardData, 1, "Denied 'import key' mechanism to create container.\n");
+		dwFlags &= ~CARD_CREATE_CONTAINER_KEY_IMPORT;
+	}
+
+	if (!dwFlags)   {
+		logprintf(pCardData, 1, "Unsupported create container mechanism.\n");
+		return SCARD_E_UNSUPPORTED_FEATURE;
+	}
+
 	if (dwFlags & CARD_CREATE_CONTAINER_KEY_GEN)   {
 		dwret = md_pkcs15_generate_key(pCardData, bContainerIndex, dwKeySpec, dwKeySize);
 		if (dwret != SCARD_S_SUCCESS)   {
-			logprintf(pCardData, 1, "key generation failed");
+			logprintf(pCardData, 1, "key generation failed\n");
 			return dwret;
 		}
-		logprintf(pCardData, 1, "key generated");
+		logprintf(pCardData, 1, "key generated\n");
 	}
 	else if ((dwFlags & CARD_CREATE_CONTAINER_KEY_IMPORT) && (pbKeyData != NULL)) {
 		dwret = md_pkcs15_store_key(pCardData, bContainerIndex, dwKeySpec, pbKeyData, dwKeySize);
 		if (dwret != SCARD_S_SUCCESS)   {
-			logprintf(pCardData, 1, "key store failed");
+			logprintf(pCardData, 1, "key store failed\n");
 			return dwret;
 		}
-		logprintf(pCardData, 1, "key imported");
+		logprintf(pCardData, 1, "key imported\n");
 	}
 	else   {
-		logprintf(pCardData, 1, "Invalid dwFlags value: 0x%X", dwFlags);
+		logprintf(pCardData, 1, "Invalid dwFlags value: 0x%X\n", dwFlags);
 		return SCARD_E_INVALID_PARAMETER;
 	}
 
@@ -2036,7 +2160,8 @@ DWORD WINAPI CardGetContainerInfo(__in PCARD_DATA pCardData, __in BYTE bContaine
 	__in PCONTAINER_INFO pContainerInfo)
 {
 	VENDOR_SPECIFIC *vs = NULL;
-	DWORD sz = 0, ret;
+	DWORD sz = 0;
+	DWORD ret = SCARD_F_UNKNOWN_ERROR;
 	struct md_pkcs15_container *cont = NULL;
 	struct sc_pkcs15_der pubkey_der;
 	int rv;
@@ -2073,9 +2198,10 @@ DWORD WINAPI CardGetContainerInfo(__in PCARD_DATA pCardData, __in BYTE bContaine
 	pubkey_der.value = NULL;
 	pubkey_der.len = 0;
 
-	ret = SCARD_S_SUCCESS;
-	if ((cont->prkey_obj->content.value != NULL) && (cont->prkey_obj->content.len > 0))
+	if ((cont->prkey_obj->content.value != NULL) && (cont->prkey_obj->content.len > 0))   {
 		sc_der_copy(&pubkey_der, &cont->prkey_obj->content);
+		ret = SCARD_S_SUCCESS;
+	}
 
 	if (!pubkey_der.value && cont->pubkey_obj)   {
 		struct sc_pkcs15_pubkey *pubkey = NULL;
@@ -2083,10 +2209,16 @@ DWORD WINAPI CardGetContainerInfo(__in PCARD_DATA pCardData, __in BYTE bContaine
 		logprintf(pCardData, 1, "now read public key '%s'\n", cont->pubkey_obj->label);
 		rv = sc_pkcs15_read_pubkey(vs->p15card, cont->pubkey_obj, &pubkey);
 		if (!rv)   {
-			if(pubkey->algorithm == SC_ALGORITHM_RSA)
-				sc_der_copy(&pubkey_der, &pubkey->data);
-			else
-				ret = SCARD_E_UNSUPPORTED_FEATURE;
+			rv = sc_pkcs15_encode_pubkey(vs->ctx, pubkey, &pubkey_der.value, &pubkey_der.len);
+			if (rv)   {
+				logprintf(pCardData, 1, "encode public key error %d\n", rv);
+				ret = SCARD_F_INTERNAL_ERROR;
+			}
+			else   {
+				logprintf(pCardData, 1, "public key encoded\n");
+				ret = SCARD_S_SUCCESS;
+			}
+
 			sc_pkcs15_free_pubkey(pubkey);
 		}
 		else {
@@ -2101,10 +2233,16 @@ DWORD WINAPI CardGetContainerInfo(__in PCARD_DATA pCardData, __in BYTE bContaine
 		logprintf(pCardData, 1, "now read certificate '%s'\n", cont->cert_obj->label);
 		rv = sc_pkcs15_read_certificate(vs->p15card, (struct sc_pkcs15_cert_info *)(cont->cert_obj->data), &cert);
 		if(!rv)   {
-			if(cert->key->algorithm == SC_ALGORITHM_RSA)
-				sc_der_copy(&pubkey_der, &cert->key->data);
-			else
-				ret = SCARD_E_UNSUPPORTED_FEATURE;
+			rv = sc_pkcs15_encode_pubkey(vs->ctx, cert->key, &pubkey_der.value, &pubkey_der.len);
+			if (rv)   {
+				logprintf(pCardData, 1, "encode certificate public key error %d\n", rv);
+				ret = SCARD_F_INTERNAL_ERROR;
+			}
+			else   {
+				logprintf(pCardData, 1, "certificate public key encoded\n");
+				ret = SCARD_S_SUCCESS;
+			}
+
 			sc_pkcs15_free_certificate(cert);
 		}
 		else   {
@@ -2172,13 +2310,14 @@ DWORD WINAPI CardAuthenticatePin(__in PCARD_DATA pCardData,
 	__in DWORD cbPin,
 	__out_opt PDWORD pcAttemptsRemaining)
 {
-	int r, tries_left;
-	sc_pkcs15_object_t *pin_obj;
+	struct sc_pkcs15_object *pin_obj = NULL;
+	struct sc_pkcs15_auth_info *auth_info = NULL;
 	char type[256];
 	VENDOR_SPECIFIC *vs;
 	struct md_file *cardcf_file = NULL;
 	CARD_CACHE_FILE_FORMAT *cardcf = NULL;
 	DWORD dwret;
+	int r;
 
 	if(!pCardData)
 		return SCARD_E_INVALID_PARAMETER;
@@ -2204,9 +2343,12 @@ DWORD WINAPI CardAuthenticatePin(__in PCARD_DATA pCardData,
 	if (cbPin < 4 || cbPin > 12)
 		return SCARD_W_WRONG_CHV;
 
-	if (wcscmp(wszCARD_USER_ADMIN,pwszUserId) == 0)
+	if (wcscmp(wszCARD_USER_ADMIN, pwszUserId) == 0)
 		return SCARD_W_WRONG_CHV;
 
+	if(pcAttemptsRemaining)
+		(*pcAttemptsRemaining) = 0;
+
 	wcstombs(type, pwszUserId, 100);
 	type[10] = 0;
 
@@ -2219,15 +2361,19 @@ DWORD WINAPI CardAuthenticatePin(__in PCARD_DATA pCardData,
 		return r;
 	}
 
+	if (!pin_obj)
+		return SCARD_F_INTERNAL_ERROR;
+	auth_info = (struct sc_pkcs15_auth_info *)pin_obj->data;
+
 	r = sc_pkcs15_verify_pin(vs->p15card, pin_obj, (const u8 *) pbPin, cbPin);
 	if (r)   {
-		logprintf(pCardData, 1, "PIN code verification failed: %s\n", sc_strerror(r));
-		tries_left = ((struct sc_pkcs15_auth_info *)pin_obj->data)->tries_left;
+		logprintf(pCardData, 1, "PIN code verification failed: %s; tries left %i\n", sc_strerror(r), auth_info->tries_left);
+
 		if (r == SC_ERROR_AUTH_METHOD_BLOCKED)
 			return SCARD_W_CHV_BLOCKED;
-		if(pcAttemptsRemaining)
-			(*pcAttemptsRemaining) = tries_left;
 
+		if(pcAttemptsRemaining)
+			(*pcAttemptsRemaining) = auth_info->tries_left;
 		return SCARD_W_WRONG_CHV;
 	}
 
@@ -2238,15 +2384,65 @@ DWORD WINAPI CardAuthenticatePin(__in PCARD_DATA pCardData,
 	return SCARD_S_SUCCESS;
 }
 
+
 DWORD WINAPI CardGetChallenge(__in PCARD_DATA pCardData,
 	__deref_out_bcount(*pcbChallengeData) PBYTE *ppbChallengeData,
 	__out                                 PDWORD pcbChallengeData)
 {
+	VENDOR_SPECIFIC *vs;
+	unsigned char *random = NULL;
+	size_t random_len;
+	int rv;
+
 	logprintf(pCardData, 1, "\nP:%d T:%d pCardData:%p ",GetCurrentProcessId(), GetCurrentThreadId(), pCardData);
-	logprintf(pCardData, 1, "CardGetChallenge - unsupported\n");
-	return SCARD_E_UNSUPPORTED_FEATURE;
+	logprintf(pCardData, 1, "CardGetChallenge\n");
+
+	if(!pCardData)
+		return SCARD_E_INVALID_PARAMETER;
+	if (!ppbChallengeData || !pcbChallengeData)
+		return SCARD_E_INVALID_PARAMETER;
+
+	logprintf(pCardData, 1, "Asked challenge length %i, buffer %p\n", *pcbChallengeData, *ppbChallengeData);
+	if (pcbChallengeData == 0)   {
+		*ppbChallengeData = NULL;
+
+		logprintf(pCardData, 7, "returns zero bytes\n");
+		return SCARD_S_SUCCESS;
+	}
+
+	vs = (VENDOR_SPECIFIC*)(pCardData->pvVendorSpecific);
+
+	check_reader_status(pCardData);
+
+	random_len = (size_t)(*pcbChallengeData);
+	if(random_len < 8)
+		random_len = 8;
+	*pcbChallengeData = 0;
+
+	random = malloc(random_len);
+	if (!random)
+		return SCARD_E_NO_MEMORY;
+
+	rv = sc_get_challenge(vs->p15card->card, random, random_len);
+	if (rv)   {
+		logprintf(pCardData, 1, "Get challenge failed: %s\n", sc_strerror(rv));
+		return SCARD_E_UNEXPECTED;
+	}
+
+	*ppbChallengeData = pCardData->pfnCspAlloc(random_len);
+	if(!*ppbChallengeData)
+		return SCARD_E_NO_MEMORY;
+
+	memcpy(*ppbChallengeData, random, random_len);
+	*pcbChallengeData = random_len;
+	free(random);
+
+	logprintf(pCardData, 7, "returns %i bytes:\n", *pcbChallengeData);
+	loghex(pCardData, 7, *ppbChallengeData, *pcbChallengeData);
+	return SCARD_S_SUCCESS;
 }
 
+
 DWORD WINAPI CardAuthenticateChallenge(__in PCARD_DATA  pCardData,
 	__in_bcount(cbResponseData) PBYTE  pbResponseData,
 	__in DWORD  cbResponseData,
@@ -2257,6 +2453,7 @@ DWORD WINAPI CardAuthenticateChallenge(__in PCARD_DATA  pCardData,
 	return SCARD_E_UNSUPPORTED_FEATURE;
 }
 
+
 DWORD WINAPI CardUnblockPin(__in PCARD_DATA  pCardData,
 	__in LPWSTR pwszUserId,
 	__in_bcount(cbAuthenticationData) PBYTE  pbAuthenticationData,
@@ -2266,11 +2463,53 @@ DWORD WINAPI CardUnblockPin(__in PCARD_DATA  pCardData,
 	__in DWORD  cRetryCount,
 	__in DWORD  dwFlags)
 {
+	VENDOR_SPECIFIC *vs = NULL;
+	DWORD dw_rv;
+	struct sc_pkcs15_object *pin_obj = NULL;
+	int rv;
+
+	if(!pCardData)
+		return SCARD_E_INVALID_PARAMETER;
+
 	logprintf(pCardData, 1, "\nP:%d T:%d pCardData:%p ",GetCurrentProcessId(), GetCurrentThreadId(), pCardData);
-	logprintf(pCardData, 1, "CardUnblockPin - unsupported\n");
-	return SCARD_E_UNSUPPORTED_FEATURE;
+	logprintf(pCardData, 1, "CardUnblockPin\n");
+
+	if (pwszUserId == NULL)
+		return SCARD_E_INVALID_PARAMETER;
+	if (pbAuthenticationData == NULL)
+		return SCARD_E_INVALID_PARAMETER;
+	if (wcscmp(wszCARD_USER_USER, pwszUserId) != 0 && wcscmp(wszCARD_USER_ADMIN,pwszUserId) != 0)
+		return SCARD_E_INVALID_PARAMETER;
+	if (wcscmp(wszCARD_USER_ADMIN, pwszUserId) == 0)
+		return SCARD_W_WRONG_CHV;
+
+	logprintf(pCardData, 1, "UserID('%s'), AuthData(%p, %li), NewPIN(%p, %li), Retry(%li), dwFlags(0x%lX)\n",
+			pwszUserId, pbAuthenticationData, cbAuthenticationData, pbNewPinData, cbNewPinData,
+			cRetryCount, dwFlags);
+
+	vs = (VENDOR_SPECIFIC*)(pCardData->pvVendorSpecific);
+
+	dw_rv = md_get_pin_by_role(pCardData, ROLE_USER, &pin_obj);
+	if (dw_rv != SCARD_S_SUCCESS)   {
+		logprintf(pCardData, 2, "Cannot get User PIN object");
+		return dw_rv;
+	}
+	if (!pin_obj)
+		return SCARD_F_INTERNAL_ERROR;
+
+	rv = sc_pkcs15_unblock_pin(vs->p15card, pin_obj,
+			pbAuthenticationData, cbAuthenticationData,
+			pbNewPinData, cbNewPinData);
+	if (rv)   {
+		logprintf(pCardData, 2, "Failed to unblock User PIN: '%s' (%i)\n", sc_strerror(rv), rv);
+		return SCARD_F_INTERNAL_ERROR;
+	}
+
+	logprintf(pCardData, 7, "returns success\n");
+	return SCARD_S_SUCCESS;
 }
 
+
 DWORD WINAPI CardChangeAuthenticator(__in PCARD_DATA  pCardData,
 	__in LPWSTR pwszUserId,
 	__in_bcount(cbCurrentAuthenticator) PBYTE pbCurrentAuthenticator,
@@ -2281,9 +2520,71 @@ DWORD WINAPI CardChangeAuthenticator(__in PCARD_DATA  pCardData,
 	__in DWORD dwFlags,
 	__out_opt PDWORD pcAttemptsRemaining)
 {
+	VENDOR_SPECIFIC *vs = NULL;
+	DWORD dw_rv;
+	struct sc_pkcs15_object *pin_obj = NULL;
+	int rv;
+
+	if(!pCardData)
+		return SCARD_E_INVALID_PARAMETER;
+
 	logprintf(pCardData, 1, "\nP:%d T:%d pCardData:%p ",GetCurrentProcessId(), GetCurrentThreadId(), pCardData);
-	logprintf(pCardData, 1, "CardChangeAuthenticator - unsupported\n");
-	return SCARD_E_UNSUPPORTED_FEATURE;
+	logprintf(pCardData, 1, "CardChangeAuthenticator\n");
+
+	if (pwszUserId == NULL)
+		return SCARD_E_INVALID_PARAMETER;
+
+	if (pbCurrentAuthenticator == NULL  || cbCurrentAuthenticator == 0)    {
+		logprintf(pCardData, 1, "Invalid current PIN data\n");
+		return SCARD_E_INVALID_PARAMETER;
+	}
+
+	if (pbNewAuthenticator == NULL  || cbNewAuthenticator == 0)   {
+		logprintf(pCardData, 1, "Invalid new PIN data\n");
+		return SCARD_E_INVALID_PARAMETER;
+	}
+
+	if (dwFlags != CARD_AUTHENTICATE_PIN_PIN)   {
+		logprintf(pCardData, 1, "Other then 'authentication' the PIN are not supported\n");
+		return SCARD_E_UNSUPPORTED_FEATURE;
+	}
+
+	if (wcscmp(wszCARD_USER_USER, pwszUserId) != 0 && wcscmp(wszCARD_USER_ADMIN, pwszUserId) != 0)
+		return SCARD_E_INVALID_PARAMETER;
+
+	if(pcAttemptsRemaining)
+		(*pcAttemptsRemaining) = 0;
+
+	logprintf(pCardData, 1, "UserID('%s'), CurrentPIN(%p, %li), NewPIN(%p, %li), Retry(%li), dwFlags(0x%lX)\n",
+			pwszUserId, pbCurrentAuthenticator, cbCurrentAuthenticator, pbNewAuthenticator, cbNewAuthenticator,
+			cRetryCount, dwFlags);
+
+	vs = (VENDOR_SPECIFIC*)(pCardData->pvVendorSpecific);
+
+	if (wcscmp(wszCARD_USER_USER, pwszUserId) == 0)
+		dw_rv = md_get_pin_by_role(pCardData, ROLE_USER, &pin_obj);
+	else if (wcscmp(wszCARD_USER_ADMIN,pwszUserId) == 0)
+		dw_rv = md_get_pin_by_role(pCardData, ROLE_ADMIN, &pin_obj);
+	else
+		return SCARD_F_INTERNAL_ERROR;
+
+	if (dw_rv != SCARD_S_SUCCESS)   {
+		logprintf(pCardData, 2, "Cannot get %s PIN by role", pwszUserId);
+		return dw_rv;
+	}
+	if (!pin_obj)
+		return SCARD_F_INTERNAL_ERROR;
+
+	rv = sc_pkcs15_change_pin(vs->p15card, pin_obj,
+			pbCurrentAuthenticator, cbCurrentAuthenticator,
+			pbNewAuthenticator, cbNewAuthenticator);
+	if (rv)   {
+		logprintf(pCardData, 2, "Failed to change %s PIN: '%s' (%i)\n", pwszUserId, sc_strerror(rv), rv);
+		return SCARD_F_INTERNAL_ERROR;
+	}
+
+	logprintf(pCardData, 7, "returns success\n");
+	return SCARD_S_SUCCESS;
 }
 
 
@@ -2458,9 +2759,7 @@ DWORD WINAPI CardWriteFile(__in PCARD_DATA pCardData,
 	}
 
 	if (pszDirectoryName && !strcmp(pszDirectoryName, "mscp"))   {
-		if (strlen(pszFileName) == 5 &&
-			(strstr(pszFileName, "kxc") == pszFileName || strstr(pszFileName, "ksc") == pszFileName))	{
-
+		if ((strstr(pszFileName, "kxc") == pszFileName) || (strstr(pszFileName, "ksc") == pszFileName))	{
 			dwret = md_pkcs15_store_certificate(pCardData, pszFileName, pbData, cbData);
 			if (dwret != SCARD_S_SUCCESS)
 				return dwret;
@@ -2694,19 +2993,34 @@ DWORD WINAPI CardRSADecrypt(__in PCARD_DATA pCardData,
 	}
 
 	if (alg_info->flags & SC_ALGORITHM_RSA_RAW)   {
+		logprintf(pCardData, 2, "sc_pkcs15_decipher: using RSA-RAW mechanism\n");
 		r = sc_pkcs15_decipher(vs->p15card, pkey, opt_crypt_flags, pbuf, pInfo->cbData, pbuf2, pInfo->cbData);
+		if (r < 0)   {
+			logprintf(pCardData, 2, "PKCS#15 decipher failed: %i\n", r);
+			return SCARD_F_INTERNAL_ERROR;
+		}
 		logprintf(pCardData, 2, "sc_pkcs15_decipher returned %d\n", r);
+
 		// Need to handle padding
 		if (pInfo->dwVersion >= CARD_RSA_KEY_DECRYPT_INFO_VERSION_TWO) {
-			if (pInfo->dwPaddingType == CARD_PADDING_PKCS1) {
-				r = sc_pkcs1_strip_02_padding(pbuf2, pInfo->cbData,
-											  pbuf2, &pInfo->cbData);
+			logprintf(pCardData, 2, "sc_pkcs15_decipher: DECRYPT-INFO dwVersion=%u\n", pInfo->dwVersion);
+			if (pInfo->dwPaddingType == CARD_PADDING_PKCS1)   {
+				logprintf(pCardData, 2, "sc_pkcs15_decipher: stripping PKCS1 padding\n");
+				r = sc_pkcs1_strip_02_padding(vs->ctx, pbuf2, pInfo->cbData, pbuf2, &pInfo->cbData);
+				if (r < 0)   {
+					logprintf(pCardData, 2, "Cannot strip PKCS1 padding: %i\n", r);
+					return SCARD_F_INTERNAL_ERROR;
+				}
+			}
+			else if (pInfo->dwPaddingType == CARD_PADDING_OAEP)   {
+				/* TODO: Handle OAEP padding if present - can call PFN_CSP_UNPAD_DATA */
+				logprintf(pCardData, 2, "OAEP padding not implemented\n");
+				return SCARD_F_INTERNAL_ERROR;
 			}
-			/* TODO: Handle OAEP padding if present - can call PFN_CSP_UNPAD_DATA */
 		}
 	}
 	else if (alg_info->flags & SC_ALGORITHM_RSA_PAD_PKCS1)   {
-		logprintf(pCardData, 2, "sc_pkcs15_decipher: no oncard RSA RAW mechanism, try to use with PAD_PKCS1\n");
+		logprintf(pCardData, 2, "sc_pkcs15_decipher: using RSA_PAD_PKCS1 mechanism\n");
 		r = sc_pkcs15_decipher(vs->p15card, pkey, opt_crypt_flags | SC_ALGORITHM_RSA_PAD_PKCS1,
 				pbuf, pInfo->cbData, pbuf2, pInfo->cbData);
 		logprintf(pCardData, 2, "sc_pkcs15_decipher returned %d\n", r);
@@ -2739,7 +3053,7 @@ DWORD WINAPI CardRSADecrypt(__in PCARD_DATA pCardData,
 	}
 
 	if ( r < 0)   {
-		logprintf(pCardData, 2, "sc_pkcs15_decipher erreur %s\n", sc_strerror(r));
+		logprintf(pCardData, 2, "sc_pkcs15_decipher error(%i): %s\n", r, sc_strerror(r));
 		return SCARD_E_INVALID_VALUE;
 	}
 
@@ -2969,11 +3283,12 @@ DWORD WINAPI CardAuthenticateEx(__in PCARD_DATA pCardData,
 	__out_opt PDWORD pcbSessionPin,
 	__out_opt PDWORD pcAttemptsRemaining)
 {
-	int r, tries_left;
 	VENDOR_SPECIFIC *vs;
 	CARD_CACHE_FILE_FORMAT *cardcf = NULL;
 	DWORD dwret;
-	sc_pkcs15_object_t *pin_obj = NULL;
+	struct sc_pkcs15_object *pin_obj = NULL;
+	struct sc_pkcs15_auth_info *auth_info = NULL;
+	int r;
 
 	logprintf(pCardData, 1, "\nP:%d T:%d pCardData:%p ",GetCurrentProcessId(), GetCurrentThreadId(), pCardData);
 	logprintf(pCardData, 1, "CardAuthenticateEx\n");
@@ -2982,39 +3297,68 @@ DWORD WINAPI CardAuthenticateEx(__in PCARD_DATA pCardData,
 		return SCARD_E_INVALID_PARAMETER;
 
 	logprintf(pCardData, 2, "CardAuthenticateEx: PinId=%u, dwFlags=0x%08X, cbPinData=%u, Attempts %s\n",
-		PinId,dwFlags,cbPinData,pcAttemptsRemaining ? "YES" : "NO");
+		PinId, dwFlags, cbPinData, pcAttemptsRemaining ? "YES" : "NO");
 
 	vs = (VENDOR_SPECIFIC*)(pCardData->pvVendorSpecific);
 
 	check_reader_status(pCardData);
 
-	if (dwFlags == CARD_AUTHENTICATE_GENERATE_SESSION_PIN || dwFlags == CARD_AUTHENTICATE_SESSION_PIN)
-		return SCARD_E_UNSUPPORTED_FEATURE;
+	if (dwFlags == CARD_AUTHENTICATE_GENERATE_SESSION_PIN || dwFlags == CARD_AUTHENTICATE_SESSION_PIN) {
+		if (! (vs->reader->capabilities & SC_READER_CAP_PIN_PAD))
+			return SCARD_E_UNSUPPORTED_FEATURE;
+	}
 
-	if (dwFlags && dwFlags != CARD_PIN_SILENT_CONTEXT)
+	if (dwFlags && (dwFlags & CARD_PIN_SILENT_CONTEXT) && NULL == pbPinData)
 		return SCARD_E_INVALID_PARAMETER;
 
-	if (NULL == pbPinData)
+	if (!(vs->reader->capabilities & SC_READER_CAP_PIN_PAD) && NULL == pbPinData)
 		return SCARD_E_INVALID_PARAMETER;
 
 	if (PinId != ROLE_USER)
 		return SCARD_E_INVALID_PARAMETER;
 
+	if(pcAttemptsRemaining)
+		(*pcAttemptsRemaining) = 0;
+
 	r = md_get_pin_by_role(pCardData, PinId, &pin_obj);
 	if (r != SCARD_S_SUCCESS)   {
 		logprintf(pCardData, 2, "Cannot get User PIN object");
 		return r;
 	}
 
+	if (!pin_obj)
+		return SCARD_F_INTERNAL_ERROR;
+	auth_info = (struct sc_pkcs15_auth_info *)pin_obj->data;
+
+	/* Do we need to display a prompt to enter PIN on pin pad? */
+	logprintf(pCardData, 7, "PIN pad=%s, pbPinData=%p, hwndParent=%d\n",
+		vs->reader->capabilities & SC_READER_CAP_PIN_PAD ? "yes" : "no", pbPinData, vs->hwndParent);
+	if ((vs->reader->capabilities & SC_READER_CAP_PIN_PAD) && NULL == pbPinData) {
+		char buf[200];
+		snprintf(buf, sizeof(buf), "Please enter PIN %s",
+			NULL == vs->wszPinContext ? "on reader pinpad." : vs->wszPinContext);
+		logprintf(pCardData, 7, "About to display message box for external PIN verification\n");
+		/* @TODO: Ideally, this should probably be a non-modal dialog with just a cancel button
+		 * that goes away as soon as a key is pressed on the pinpad.
+		 */
+		r = MessageBox(vs->hwndParent, buf, "PIN Entry Required",
+				MB_OKCANCEL | MB_ICONINFORMATION);
+		if (IDCANCEL == r) {
+			logprintf(pCardData, 2, "User canceled PIN verification\n");
+			/* @TODO: is this the right code to return? */
+			return SCARD_E_INVALID_PARAMETER;
+		}
+	}
+
 	r = sc_pkcs15_verify_pin(vs->p15card, pin_obj, (const u8 *) pbPinData, cbPinData);
 	if (r)   {
-		logprintf(pCardData, 2, "PIN code verification failed: %s\n", sc_strerror(r));
-		tries_left = ((struct sc_pkcs15_auth_info *)pin_obj->data)->tries_left;
-		logprintf(pCardData, 7, "PIN retries left: %i\n", tries_left);
+		logprintf(pCardData, 1, "PIN code verification failed: %s; tries left %i\n", sc_strerror(r), auth_info->tries_left);
+
 		if (r == SC_ERROR_AUTH_METHOD_BLOCKED)
 			return SCARD_W_CHV_BLOCKED;
+
 		if(pcAttemptsRemaining)
-			(*pcAttemptsRemaining) = tries_left;
+			(*pcAttemptsRemaining) = auth_info->tries_left;
 		return SCARD_W_WRONG_CHV;
 	}
 
@@ -3253,12 +3597,19 @@ DWORD WINAPI CardGetProperty(__in PCARD_DATA pCardData,
 
 		CopyMemory(pbData, buf, buf_len);
 	}
-	else if (wcscmp(CP_CARD_PIN_INFO,wszProperty) == 0)   {
+	else if (wcscmp(CP_CARD_PIN_INFO, wszProperty) == 0)   {
 		PPIN_INFO p = (PPIN_INFO) pbData;
-		if (pdwDataLen) *pdwDataLen = sizeof(*p);
-		if (cbData < sizeof(*p)) return ERROR_INSUFFICIENT_BUFFER;
-		if (p->dwVersion != PIN_INFO_CURRENT_VERSION) return ERROR_REVISION_MISMATCH;
-		p->PinType = AlphaNumericPinType;
+
+		if (pdwDataLen)
+			*pdwDataLen = sizeof(*p);
+
+		if (cbData < sizeof(*p))
+			return ERROR_INSUFFICIENT_BUFFER;
+
+		if (p->dwVersion != PIN_INFO_CURRENT_VERSION)
+			return ERROR_REVISION_MISMATCH;
+
+		p->PinType = vs->reader->capabilities & SC_READER_CAP_PIN_PAD ? ExternalPinType : AlphaNumericPinType;
 		p->dwFlags = 0;
 		switch (dwFlags)   {
 			case ROLE_USER:
@@ -3330,14 +3681,18 @@ DWORD WINAPI CardSetProperty(__in   PCARD_DATA pCardData,
 	__in DWORD cbDataLen,
 	__in DWORD dwFlags)
 {
+	VENDOR_SPECIFIC *vs;
+
 	logprintf(pCardData, 1, "\nP:%d T:%d pCardData:%p ",GetCurrentProcessId(), GetCurrentThreadId(), pCardData);
 	logprintf(pCardData, 1, "CardSetProperty\n");
 
 	if (!pCardData)
 		return SCARD_E_INVALID_PARAMETER;
 
-	logprintf(pCardData, 2, "CardSetProperty wszProperty=%S, cbDataLen=%u, dwFlags=%u",\
-		NULLWSTR(wszProperty),cbDataLen,dwFlags);
+	logprintf(pCardData, 2, "CardSetProperty wszProperty=%S, pbData=%p, cbDataLen=%u, dwFlags=%u",\
+		NULLWSTR(wszProperty),pbData,cbDataLen,dwFlags);
+
+	vs = (VENDOR_SPECIFIC*)(pCardData->pvVendorSpecific);
 
 	if (!wszProperty)
 		return SCARD_E_INVALID_PARAMETER;
@@ -3349,8 +3704,11 @@ DWORD WINAPI CardSetProperty(__in   PCARD_DATA pCardData,
 	if (dwFlags)
 		return SCARD_E_INVALID_PARAMETER;
 
-	if (wcscmp(CP_PIN_CONTEXT_STRING, wszProperty) == 0)
+	if (wcscmp(CP_PIN_CONTEXT_STRING, wszProperty) == 0) {
+		vs->wszPinContext = (LPWSTR) pbData;
+		logprintf(pCardData, 3, "Saved PIN context string: %S\n", pbData);
 		return SCARD_S_SUCCESS;
+	}
 
 	if (wcscmp(CP_CARD_CACHE_MODE, wszProperty) == 0 ||
 			wcscmp(CP_SUPPORTS_WIN_X509_ENROLLMENT, wszProperty) == 0 ||
@@ -3362,15 +3720,20 @@ DWORD WINAPI CardSetProperty(__in   PCARD_DATA pCardData,
 	if (!pbData || !cbDataLen)
 		return SCARD_E_INVALID_PARAMETER;
 
+	/* This property and CP_PIN_CONTEXT_STRING are set just prior to a call to
+	 * CardAuthenticateEx if the PIN required is declared of type ExternalPinType.
+	 */
 	if (wcscmp(CP_PARENT_WINDOW, wszProperty) == 0) {
-		if (cbDataLen != sizeof(DWORD))   {
+		if (cbDataLen != sizeof(HWND))   {
 			return SCARD_E_INVALID_PARAMETER;
 		}
 		else   {
 			HWND cp = *((HWND *) pbData);
 			if (cp!=0 && !IsWindow(cp))
 				return SCARD_E_INVALID_PARAMETER;
+			vs->hwndParent = cp;
 		}
+		logprintf(pCardData, 3, "Saved parent window (%u)\n", vs->hwndParent);
 		return SCARD_S_SUCCESS;
 	}
 
@@ -3463,6 +3826,8 @@ DWORD WINAPI CardAcquireContext(IN PCARD_DATA pCardData, __in DWORD dwFlags)
 		pCardData->pfnCspGetDHAgreement = CspGetDHAgreement;
 
 		if (suppliedVersion > 5 ) {
+			logprintf(pCardData, 1, "Supplied version %i.\n", suppliedVersion);
+
 			pCardData->pfnCardGetChallengeEx = CardGetChallengeEx;
 			pCardData->pfnCardAuthenticateEx = CardAuthenticateEx;
 			pCardData->pfnCardChangeAuthenticatorEx = CardChangeAuthenticatorEx;
diff --git a/src/minidriver/opensc-minidriver.inf b/src/minidriver/opensc-minidriver.inf
deleted file mode 100644
index dcf68a0..0000000
--- a/src/minidriver/opensc-minidriver.inf
+++ /dev/null
@@ -1,148 +0,0 @@
-
-[Version]
-Signature="$Windows NT$"
-Class=SmartCard
-ClassGuid={990A2BD7-E738-46c7-B26F-1CF8FB9F1391}
-Provider=%ProviderName%
-CatalogFile=delta.cat
-DriverVer=05/02/2010,0,13,0,0
-
-[Manufacturer]
-%ProviderName%=Minidriver,NTamd64,NTamd64.6.1,NTx86,NTx86.6.1
-
-[Minidriver.NTamd64]
-%CardDeviceName%=Minidriver64_Install,SCFILTER\CID_00640181010c829000
-
-[Minidriver.NTx86]
-%CardDeviceName%=Minidriver32_Install,SCFILTER\CID_00640181010c829000
-
-[Minidriver.NTamd64.6.1]
-%CardDeviceName%=Minidriver64_61_Install,SCFILTER\CID_00640181010c829000
-
-[Minidriver.NTx86.6.1]
-%CardDeviceName%=Minidriver32_61_Install,SCFILTER\CID_00640181010c829000
-
-[DefaultInstall]
-CopyFiles=x86_CopyFiles
-AddReg=AddRegDefault
-
-[DefaultInstall.ntamd64]
-CopyFiles=amd64_CopyFiles
-CopyFiles=wow64_CopyFiles
-AddReg=AddRegWOW64
-AddReg=AddRegDefault
-
-[DefaultInstall.NTx86]
-CopyFiles=x86_CopyFiles
-AddReg=AddRegDefault
-
-[DefaultInstall.ntamd64.6.1]
-AddReg=AddRegWOW64
-AddReg=AddRegDefault
-
-[DefaultInstall.NTx86.6.1]
-AddReg=AddRegDefault
-
-[SourceDisksFiles]
-%SmartCardCardModule%=1
-%SmartCardCardModule64%=1
-
-[SourceDisksNames]
-1 = %MediaDescription%
-
-[Minidriver64_Install.NT]
-CopyFiles=amd64_CopyFiles
-CopyFiles=wow64_CopyFiles
-AddReg=AddRegWOW64
-AddReg=AddRegDefault
-
-[Minidriver64_61_Install.NT]
-AddReg=AddRegWOW64
-AddReg=AddRegDefault
-Include=umpass.inf
-Needs=UmPass
-
-[Minidriver32_Install.NT]
-CopyFiles=x86_CopyFiles
-AddReg=AddRegDefault
-
-[Minidriver32_61_Install.NT]
-AddReg=AddRegDefault
-Include=umpass.inf
-Needs=UmPass
-
-[Minidriver64_61_Install.NT.Services]
-Include=umpass.inf
-Needs=UmPass.Services
-
-[Minidriver32_61_Install.NT.Services]
-Include=umpass.inf
-Needs=UmPass.Services
-
-
-[Minidriver64_61_Install.NT.HW]
-Include=umpass.inf
-Needs=UmPass.HW
-
-[Minidriver64_61_Install.NT.CoInstallers]
-Include=umpass.inf
-Needs=UmPass.CoInstallers
-
-
-[Minidriver64_61_Install.NT.Interfaces]
-Include=umpass.inf
-Needs=UmPass.Interfaces
-
-
-[Minidriver32_61_Install.NT.HW]
-Include=umpass.inf
-Needs=UmPass.HW
-
-[Minidriver32_61_Install.NT.CoInstallers]
-Include=umpass.inf
-Needs=UmPass.CoInstallers
-
-
-[Minidriver32_61_Install.NT.Interfaces]
-Include=umpass.inf
-Needs=UmPass.Interfaces
-
-
-[amd64_CopyFiles]
-;%SmartCardCardModule%,%SmartCardCardModule64%
-
-[x86_CopyFiles]
-;%SmartCardCardModule%
-
-[wow64_CopyFiles]
-;%SmartCardCardModule64%
-
-[AddRegWOW64]
-HKLM, %SmartCardNameWOW64%,"ATR",0x00000001,3f,69,00,00,00,64,01,00,00,00,80,90,00
-HKLM, %SmartCardNameWOW64%,"ATRMask",0x00000001,ff,ff,ff,ff,ff,ff,ff,00,00,00,f0,ff,ff
-HKLM, %SmartCardNameWOW64%,"Crypto Provider",0x00000000,"Microsoft Base Smart Card Crypto Provider"
-HKLM, %SmartCardNameWOW64%,"Smart Card Key Storage Provider",0x00000000,"Microsoft Smart Card Key Storage Provider"
-HKLM, %SmartCardNameWOW64%,"80000001",0x00000000,%SmartCardCardModule64%
-
-[AddRegDefault]
-HKLM, %SmartCardName%,"ATR",0x00000001,3f,69,00,00,00,64,01,00,00,00,80,90,00
-HKLM, %SmartCardName%,"ATRMask",0x00000001,ff,ff,ff,ff,ff,ff,ff,00,00,00,f0,ff,ff
-HKLM, %SmartCardName%,"Crypto Provider",0x00000000,"Microsoft Base Smart Card Crypto Provider"
-HKLM, %SmartCardName%,"Smart Card Key Storage Provider",0x00000000,"Microsoft Smart Card Key Storage Provider"
-HKLM, %SmartCardName%,"80000001",0x00000000,%SmartCardCardModule%
-
-[DestinationDirs]
-amd64_CopyFiles=10,system32
-x86_CopyFiles=10,system32
-wow64_CopyFiles=10,syswow64
-
-
-; =================== Generic ==================================
-
-[Strings]
-ProviderName ="OpenSC"
-MediaDescription="OpenSC Smart Card Minidriver Installation Disk"
-CardDeviceName="OpenSC Minidriver"
-SmartCardName="SOFTWARE\Microsoft\Cryptography\Calais\SmartCards\Cev Westcos"
-SmartCardNameWOW64="SOFTWARE\Wow6432Node\Microsoft\Cryptography\Calais\SmartCards\Cev Westcos"
-SmartCardCardModule="opensc-minidriver.dll"
diff --git a/src/minidriver/versioninfo-minidriver.rc.in b/src/minidriver/versioninfo-minidriver.rc.in
new file mode 100644
index 0000000..cc02a9a
--- /dev/null
+++ b/src/minidriver/versioninfo-minidriver.rc.in
@@ -0,0 +1,38 @@
+#include <winresrc.h>
+
+VS_VERSION_INFO VERSIONINFO
+	FILEVERSION @OPENSC_VERSION_MAJOR@, at OPENSC_VERSION_MINOR@, at OPENSC_VERSION_FIX@, at OPENSC_VERSION_REVISION@
+	PRODUCTVERSION @OPENSC_VERSION_MAJOR@, at OPENSC_VERSION_MINOR@, at OPENSC_VERSION_FIX@, at OPENSC_VERSION_REVISION@
+	FILEFLAGSMASK 0x3fL
+#ifdef _DEBUG
+	FILEFLAGS 0x21L
+#else
+	FILEFLAGS 0x20L
+#endif
+	FILEOS 0x40004L
+	FILETYPE 0x2L
+	FILESUBTYPE 0x0L
+BEGIN
+	BLOCK "StringFileInfo"
+	BEGIN
+		BLOCK "040904b0"
+		BEGIN
+			VALUE "Comments", "@OPENSC_VS_FF_COMMENTS@"
+			VALUE "CompanyName", "@OPENSC_VS_FF_COMPANY_NAME@"
+			VALUE "FileVersion", "@OPENSC_VERSION_MAJOR at .@OPENSC_VERSION_MINOR at .@OPENSC_VERSION_FIX at .@OPENSC_VERSION_REVISION@"
+			VALUE "InternalName", "@PACKAGE_NAME@"
+			VALUE "LegalCopyright", "@OPENSC_VS_FF_LEGAL_COPYRIGHT@"
+			VALUE "LegalTrademarks", ""
+			VALUE "PrivateBuild", ""
+			VALUE "ProductName", "@OPENSC_VS_FF_PRODUCT_NAME@"
+			VALUE "ProductVersion", "@OPENSC_VERSION_MAJOR@, at OPENSC_VERSION_MINOR@, at OPENSC_VERSION_FIX@, at OPENSC_VERSION_REVISION@"
+			VALUE "SpecialBuild", ""
+			VALUE "FileDescription", "OpenSC minidriver"
+		END
+	END
+	BLOCK "VarFileInfo"
+	BEGIN
+		VALUE "Translation", 0x409, 1200
+	END
+END
+
diff --git a/src/pkcs11/Makefile.am b/src/pkcs11/Makefile.am
index da7499e..c8ed808 100644
--- a/src/pkcs11/Makefile.am
+++ b/src/pkcs11/Makefile.am
@@ -1,10 +1,10 @@
 include $(top_srcdir)/win32/ltrc.inc
 
-MAINTAINERCLEANFILES = $(srcdir)/Makefile.in
-EXTRA_DIST = Makefile.mak
+MAINTAINERCLEANFILES = $(srcdir)/Makefile.in $(srcdir)/versioninfo-pkcs11.rc $(srcdir)/versioninfo-pkcs11-spy.rc
+EXTRA_DIST = Makefile.mak versioninfo-pkcs11.rc.in versioninfo-pkcs11-spy.rc.in
 
 dist_noinst_SCRIPTS = opensc_pkcs11_install.js
-lib_LTLIBRARIES = opensc-pkcs11.la pkcs11-spy.la
+lib_LTLIBRARIES = opensc-pkcs11.la pkcs11-spy.la onepin-opensc-pkcs11.la
 
 AM_CFLAGS = $(OPTIONAL_OPENSSL_CFLAGS) $(PTHREAD_CFLAGS)
 AM_CPPFLAGS = -I$(top_srcdir)/src
@@ -26,6 +26,13 @@ opensc_pkcs11_la_LDFLAGS = $(AM_LDFLAGS) \
 	-export-symbols "$(srcdir)/opensc-pkcs11.exports" \
 	-module -shared -avoid-version -no-undefined
 
+onepin_opensc_pkcs11_la_SOURCES = $(OPENSC_PKCS11_SRC) $(OPENSC_PKCS11_INC)
+onepin_opensc_pkcs11_la_CFLAGS = -DMODULE_APP_NAME=\"onepin-opensc-pkcs11\"
+onepin_opensc_pkcs11_la_LIBADD = $(OPENSC_PKCS11_LIBS)
+onepin_opensc_pkcs11_la_LDFLAGS = $(AM_LDFLAGS) \
+        -export-symbols "$(srcdir)/opensc-pkcs11.exports" \
+        -module -shared -avoid-version -no-undefined
+
 pkcs11_spy_la_SOURCES = pkcs11-spy.c pkcs11-display.c pkcs11-display.h pkcs11-spy.exports
 pkcs11_spy_la_LIBADD = \
 	$(top_builddir)/src/common/libpkcs11.la \
@@ -36,8 +43,8 @@ pkcs11_spy_la_LDFLAGS = $(AM_LDFLAGS) \
 	-module -shared -avoid-version -no-undefined
 
 if WIN32
-opensc_pkcs11_la_SOURCES += $(top_builddir)/win32/versioninfo.rc
-pkcs11_spy_la_SOURCES += $(top_builddir)/win32/versioninfo.rc
+opensc_pkcs11_la_SOURCES += versioninfo-pkcs11.rc
+pkcs11_spy_la_SOURCES += versioninfo-pkcs11-spy.rc
 endif
 
 jar-dir:
@@ -64,7 +71,7 @@ PKCS11_SUFFIX=.so
 endif
 install-exec-hook:
 	$(MKDIR_P) "$(DESTDIR)$(pkcs11dir)"
-	for l in opensc-pkcs11$(PKCS11_SUFFIX) pkcs11-spy$(PKCS11_SUFFIX); do \
+	for l in opensc-pkcs11$(PKCS11_SUFFIX) onepin-opensc-pkcs11$(PKCS11_SUFFIX) pkcs11-spy$(PKCS11_SUFFIX); do \
 		rm -f "$(DESTDIR)$(pkcs11dir)/$$l"; \
 		$(LN_S) ../$$l "$(DESTDIR)$(pkcs11dir)/$$l"; \
 	done
diff --git a/src/pkcs11/Makefile.in b/src/pkcs11/Makefile.in
deleted file mode 100644
index 7cabcc0..0000000
--- a/src/pkcs11/Makefile.in
+++ /dev/null
@@ -1,718 +0,0 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
- at SET_MAKE@
-
-# Required to build Windows resource file
-
-
-VPATH = @srcdir@
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-DIST_COMMON = $(dist_noinst_SCRIPTS) $(srcdir)/Makefile.am \
-	$(srcdir)/Makefile.in $(top_srcdir)/win32/ltrc.inc
- at WIN32_TRUE@am__append_1 = $(top_builddir)/win32/versioninfo.rc
- at WIN32_TRUE@am__append_2 = $(top_builddir)/win32/versioninfo.rc
-subdir = src/pkcs11
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_pthread.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
-  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
-  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
-  for p in $$list; do echo "$$p $$p"; done | \
-  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
-  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
-    if (++n[$$2] == $(am__install_max)) \
-      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
-    END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
-  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
-  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__installdirs = "$(DESTDIR)$(libdir)"
-LTLIBRARIES = $(lib_LTLIBRARIES)
-am__DEPENDENCIES_1 =
-am__DEPENDENCIES_2 = $(top_builddir)/src/libopensc/libopensc.la \
-	$(top_builddir)/src/common/libscdl.la \
-	$(top_builddir)/src/common/libcompat.la $(am__DEPENDENCIES_1) \
-	$(am__DEPENDENCIES_1)
-opensc_pkcs11_la_DEPENDENCIES = $(am__DEPENDENCIES_2)
-am__opensc_pkcs11_la_SOURCES_DIST = pkcs11-global.c pkcs11-session.c \
-	pkcs11-object.c misc.c slot.c mechanism.c openssl.c \
-	framework-pkcs15.c framework-pkcs15init.c debug.c \
-	opensc-pkcs11.exports pkcs11-display.c pkcs11-display.h \
-	sc-pkcs11.h pkcs11.h pkcs11-opensc.h \
-	$(top_builddir)/win32/versioninfo.rc
-am__objects_1 = pkcs11-global.lo pkcs11-session.lo pkcs11-object.lo \
-	misc.lo slot.lo mechanism.lo openssl.lo framework-pkcs15.lo \
-	framework-pkcs15init.lo debug.lo pkcs11-display.lo
-am__objects_2 =
-am__dirstamp = $(am__leading_dot)dirstamp
- at WIN32_TRUE@am__objects_3 = $(top_builddir)/win32/versioninfo.lo
-am_opensc_pkcs11_la_OBJECTS = $(am__objects_1) $(am__objects_2) \
-	$(am__objects_3)
-opensc_pkcs11_la_OBJECTS = $(am_opensc_pkcs11_la_OBJECTS)
-AM_V_lt = $(am__v_lt_$(V))
-am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
-am__v_lt_0 = --silent
-opensc_pkcs11_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
-	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
-	$(AM_CFLAGS) $(CFLAGS) $(opensc_pkcs11_la_LDFLAGS) $(LDFLAGS) \
-	-o $@
-pkcs11_spy_la_DEPENDENCIES = $(top_builddir)/src/common/libpkcs11.la \
-	$(top_builddir)/src/common/libscdl.la $(am__DEPENDENCIES_1)
-am__pkcs11_spy_la_SOURCES_DIST = pkcs11-spy.c pkcs11-display.c \
-	pkcs11-display.h pkcs11-spy.exports \
-	$(top_builddir)/win32/versioninfo.rc
-am_pkcs11_spy_la_OBJECTS = pkcs11-spy.lo pkcs11-display.lo \
-	$(am__objects_3)
-pkcs11_spy_la_OBJECTS = $(am_pkcs11_spy_la_OBJECTS)
-pkcs11_spy_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(pkcs11_spy_la_LDFLAGS) $(LDFLAGS) -o $@
-SCRIPTS = $(dist_noinst_SCRIPTS)
-DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
-depcomp = $(SHELL) $(top_srcdir)/depcomp
-am__depfiles_maybe = depfiles
-am__mv = mv -f
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
-	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
-	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
-	$(AM_CFLAGS) $(CFLAGS)
-AM_V_CC = $(am__v_CC_$(V))
-am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
-am__v_CC_0 = @echo "  CC    " $@;
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
-am__v_at_0 = @
-CCLD = $(CC)
-LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CCLD = $(am__v_CCLD_$(V))
-am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
-am__v_CCLD_0 = @echo "  CCLD  " $@;
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo "  GEN   " $@;
-SOURCES = $(opensc_pkcs11_la_SOURCES) $(pkcs11_spy_la_SOURCES)
-DIST_SOURCES = $(am__opensc_pkcs11_la_SOURCES_DIST) \
-	$(am__pkcs11_spy_la_SOURCES_DIST)
-ETAGS = etags
-CTAGS = ctags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AR = @AR@
-AS = @AS@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEBUG_FILE = @DEBUG_FILE@
-DEFAULT_PCSC_PROVIDER = @DEFAULT_PCSC_PROVIDER@
-DEFAULT_SM_MODULE = @DEFAULT_SM_MODULE@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DLLTOOL = @DLLTOOL@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-FGREP = @FGREP@
-GIT = @GIT@
-GREP = @GREP@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBOBJS = @LIBOBJS@
-LIBRARY_BITNESS = @LIBRARY_BITNESS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-NM = @NM@
-NMEDIT = @NMEDIT@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OPENCT_CFLAGS = @OPENCT_CFLAGS@
-OPENCT_LIBS = @OPENCT_LIBS@
-OPENSC_LT_AGE = @OPENSC_LT_AGE@
-OPENSC_LT_CURRENT = @OPENSC_LT_CURRENT@
-OPENSC_LT_OLDEST = @OPENSC_LT_OLDEST@
-OPENSC_LT_REVISION = @OPENSC_LT_REVISION@
-OPENSC_VERSION_FIX = @OPENSC_VERSION_FIX@
-OPENSC_VERSION_MAJOR = @OPENSC_VERSION_MAJOR@
-OPENSC_VERSION_MINOR = @OPENSC_VERSION_MINOR@
-OPENSSL_CFLAGS = @OPENSSL_CFLAGS@
-OPENSSL_LIBS = @OPENSSL_LIBS@
-OPTIONAL_OPENCT_CFLAGS = @OPTIONAL_OPENCT_CFLAGS@
-OPTIONAL_OPENCT_LIBS = @OPTIONAL_OPENCT_LIBS@
-OPTIONAL_OPENSSL_CFLAGS = @OPTIONAL_OPENSSL_CFLAGS@
-OPTIONAL_OPENSSL_LIBS = @OPTIONAL_OPENSSL_LIBS@
-OPTIONAL_PCSC_CFLAGS = @OPTIONAL_PCSC_CFLAGS@
-OPTIONAL_READLINE_CFLAGS = @OPTIONAL_READLINE_CFLAGS@
-OPTIONAL_READLINE_LIBS = @OPTIONAL_READLINE_LIBS@
-OPTIONAL_ZLIB_CFLAGS = @OPTIONAL_ZLIB_CFLAGS@
-OPTIONAL_ZLIB_LIBS = @OPTIONAL_ZLIB_LIBS@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PCSC_CFLAGS = @PCSC_CFLAGS@
-PCSC_LIBS = @PCSC_LIBS@
-PKG_CONFIG = @PKG_CONFIG@
-PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
-PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
-PTHREAD_CC = @PTHREAD_CC@
-PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
-PTHREAD_LIBS = @PTHREAD_LIBS@
-RANLIB = @RANLIB@
-RC = @RC@
-READLINE_CFLAGS = @READLINE_CFLAGS@
-READLINE_LIBS = @READLINE_LIBS@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-WIN_LIBPREFIX = @WIN_LIBPREFIX@
-XSLTPROC = @XSLTPROC@
-ZLIB_CFLAGS = @ZLIB_CFLAGS@
-ZLIB_LIBS = @ZLIB_LIBS@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-ax_pthread_config = @ax_pthread_config@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-git = @git@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-pkcs11dir = @pkcs11dir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-xslstylesheetsdir = @xslstylesheetsdir@
-RCCOMPILE = $(RC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS)
-
-LTRCCOMPILE = $(LIBTOOL) --mode=compile --tag=RC $(RCCOMPILE)
-MAINTAINERCLEANFILES = $(srcdir)/Makefile.in
-EXTRA_DIST = Makefile.mak
-dist_noinst_SCRIPTS = opensc_pkcs11_install.js
-lib_LTLIBRARIES = opensc-pkcs11.la pkcs11-spy.la
-AM_CFLAGS = $(OPTIONAL_OPENSSL_CFLAGS) $(PTHREAD_CFLAGS)
-AM_CPPFLAGS = -I$(top_srcdir)/src
-OPENSC_PKCS11_INC = sc-pkcs11.h pkcs11.h pkcs11-opensc.h
-OPENSC_PKCS11_SRC = pkcs11-global.c pkcs11-session.c pkcs11-object.c misc.c slot.c \
-	mechanism.c openssl.c framework-pkcs15.c \
-	framework-pkcs15init.c debug.c opensc-pkcs11.exports \
-	pkcs11-display.c pkcs11-display.h
-
-OPENSC_PKCS11_LIBS = \
-	$(top_builddir)/src/libopensc/libopensc.la \
-	$(top_builddir)/src/common/libscdl.la \
-	$(top_builddir)/src/common/libcompat.la \
-	$(OPTIONAL_OPENSSL_LIBS) $(PTHREAD_LIBS)
-
-opensc_pkcs11_la_SOURCES = $(OPENSC_PKCS11_SRC) $(OPENSC_PKCS11_INC) \
-	$(am__append_1)
-opensc_pkcs11_la_LIBADD = $(OPENSC_PKCS11_LIBS)
-opensc_pkcs11_la_LDFLAGS = $(AM_LDFLAGS) \
-	-export-symbols "$(srcdir)/opensc-pkcs11.exports" \
-	-module -shared -avoid-version -no-undefined
-
-pkcs11_spy_la_SOURCES = pkcs11-spy.c pkcs11-display.c pkcs11-display.h \
-	pkcs11-spy.exports $(am__append_2)
-pkcs11_spy_la_LIBADD = \
-	$(top_builddir)/src/common/libpkcs11.la \
-	$(top_builddir)/src/common/libscdl.la \
-	$(OPTIONAL_OPENSSL_LIBS)
-
-pkcs11_spy_la_LDFLAGS = $(AM_LDFLAGS) \
-	-export-symbols "$(srcdir)/pkcs11-spy.exports" \
-	-module -shared -avoid-version -no-undefined
-
- at CYGWIN_FALSE@@WIN32_FALSE at PKCS11_SUFFIX = .so
-# see http://wiki.cacert.org/wiki/Pkcs11TaskForce
- at CYGWIN_TRUE@@WIN32_FALSE at PKCS11_SUFFIX = .dll
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .c .lo .o .obj .rc
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am $(top_srcdir)/win32/ltrc.inc $(am__configure_deps)
-	@for dep in $?; do \
-	  case '$(am__configure_deps)' in \
-	    *$$dep*) \
-	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
-	        && { if test -f $@; then exit 0; else break; fi; }; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/pkcs11/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --foreign src/pkcs11/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-	@case '$?' in \
-	  *config.status*) \
-	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-	esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure:  $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-install-libLTLIBRARIES: $(lib_LTLIBRARIES)
-	@$(NORMAL_INSTALL)
-	test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)"
-	@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
-	list2=; for p in $$list; do \
-	  if test -f $$p; then \
-	    list2="$$list2 $$p"; \
-	  else :; fi; \
-	done; \
-	test -z "$$list2" || { \
-	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \
-	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \
-	}
-
-uninstall-libLTLIBRARIES:
-	@$(NORMAL_UNINSTALL)
-	@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
-	for p in $$list; do \
-	  $(am__strip_dir) \
-	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \
-	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \
-	done
-
-clean-libLTLIBRARIES:
-	-test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
-	@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
-	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
-	  test "$$dir" != "$$p" || dir=.; \
-	  echo "rm -f \"$${dir}/so_locations\""; \
-	  rm -f "$${dir}/so_locations"; \
-	done
-$(top_builddir)/win32/$(am__dirstamp):
-	@$(MKDIR_P) $(top_builddir)/win32
-	@: > $(top_builddir)/win32/$(am__dirstamp)
-$(top_builddir)/win32/$(DEPDIR)/$(am__dirstamp):
-	@$(MKDIR_P) $(top_builddir)/win32/$(DEPDIR)
-	@: > $(top_builddir)/win32/$(DEPDIR)/$(am__dirstamp)
-$(top_builddir)/win32/versioninfo.lo:  \
-	$(top_builddir)/win32/$(am__dirstamp) \
-	$(top_builddir)/win32/$(DEPDIR)/$(am__dirstamp)
-opensc-pkcs11.la: $(opensc_pkcs11_la_OBJECTS) $(opensc_pkcs11_la_DEPENDENCIES) 
-	$(AM_V_CCLD)$(opensc_pkcs11_la_LINK) -rpath $(libdir) $(opensc_pkcs11_la_OBJECTS) $(opensc_pkcs11_la_LIBADD) $(LIBS)
-pkcs11-spy.la: $(pkcs11_spy_la_OBJECTS) $(pkcs11_spy_la_DEPENDENCIES) 
-	$(AM_V_CCLD)$(pkcs11_spy_la_LINK) -rpath $(libdir) $(pkcs11_spy_la_OBJECTS) $(pkcs11_spy_la_LIBADD) $(LIBS)
-
-mostlyclean-compile:
-	-rm -f *.$(OBJEXT)
-	-rm -f $(top_builddir)/win32/versioninfo.$(OBJEXT)
-	-rm -f $(top_builddir)/win32/versioninfo.lo
-
-distclean-compile:
-	-rm -f *.tab.c
-
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/debug.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/framework-pkcs15.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/framework-pkcs15init.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/mechanism.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/misc.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/openssl.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pkcs11-display.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pkcs11-global.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pkcs11-object.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pkcs11-session.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pkcs11-spy.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/slot.Plo at am__quote@
-
-.c.o:
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(COMPILE) -c $<
-
-.c.obj:
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
-
-.c.lo:
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
- at am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $<
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf $(top_builddir)/win32/.libs $(top_builddir)/win32/_libs
-	-rm -rf .libs _libs
-
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	set x; \
-	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	shift; \
-	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
-	  test -n "$$unique" || unique=$$empty_fix; \
-	  if test $$# -gt 0; then \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      "$$@" $$unique; \
-	  else \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      $$unique; \
-	  fi; \
-	fi
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	test -z "$(CTAGS_ARGS)$$unique" \
-	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$unique
-
-GTAGS:
-	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && $(am__cd) $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) "$$here"
-
-distclean-tags:
-	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d "$(distdir)/$$file"; then \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-	  else \
-	    test -f "$(distdir)/$$file" \
-	    || cp -p $$d/$$file "$(distdir)/$$file" \
-	    || exit 1; \
-	  fi; \
-	done
-check-am: all-am
-check: check-am
-all-am: Makefile $(LTLIBRARIES) $(SCRIPTS)
-installdirs:
-	for dir in "$(DESTDIR)$(libdir)"; do \
-	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
-	done
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-	-test -z "$(top_builddir)/win32/$(DEPDIR)/$(am__dirstamp)" || rm -f $(top_builddir)/win32/$(DEPDIR)/$(am__dirstamp)
-	-test -z "$(top_builddir)/win32/$(am__dirstamp)" || rm -f $(top_builddir)/win32/$(am__dirstamp)
-
-maintainer-clean-generic:
-	@echo "This command is intended for maintainers to use"
-	@echo "it deletes files that may require special tools to rebuild."
-	-test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
-clean: clean-am
-
-clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \
-	mostlyclean-am
-
-distclean: distclean-am
-	-rm -rf ./$(DEPDIR)
-	-rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
-	distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am:
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am: install-libLTLIBRARIES
-	@$(NORMAL_INSTALL)
-	$(MAKE) $(AM_MAKEFLAGS) install-exec-hook
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
-	-rm -rf ./$(DEPDIR)
-	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-compile mostlyclean-generic \
-	mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-libLTLIBRARIES
-
-.MAKE: install-am install-exec-am install-strip
-
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
-	clean-libLTLIBRARIES clean-libtool ctags distclean \
-	distclean-compile distclean-generic distclean-libtool \
-	distclean-tags distdir dvi dvi-am html html-am info info-am \
-	install install-am install-data install-data-am install-dvi \
-	install-dvi-am install-exec install-exec-am install-exec-hook \
-	install-html install-html-am install-info install-info-am \
-	install-libLTLIBRARIES install-man install-pdf install-pdf-am \
-	install-ps install-ps-am install-strip installcheck \
-	installcheck-am installdirs maintainer-clean \
-	maintainer-clean-generic mostlyclean mostlyclean-compile \
-	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-	tags uninstall uninstall-am uninstall-libLTLIBRARIES
-
-
-.rc.lo:
-	$(LTRCCOMPILE) -i "$<" -o "$@"
-
-.rc.o:
-	$(RCCOMPILE) -i "$<" -o "$@"
-
-jar-dir:
-	if test ! -d jar-dir ; then mkdir jar-dir ; fi
-
-pkcs11-jar: jar-dir
-	cp .libs/*.so jar-dir
-	cp opensc_pkcs11_install.js jar-dir
-	signtool -Z"opensc-pkcs11.jar" -i"opensc_pkcs11_install.js" \
-		 -k"testcert" jar-dir
-
- at WIN32_TRUE@install-exec-hook:
- at WIN32_TRUE@	$(MKDIR_P) "$(DESTDIR)$(libdir)"
- at WIN32_TRUE@	for l in opensc-pkcs11.dll pkcs11-spy.dll; do \
- at WIN32_TRUE@		mv "$(DESTDIR)$(libdir)/$$l" "$(DESTDIR)$(bindir)/$$l"; \
- at WIN32_TRUE@	done
- at WIN32_FALSE@install-exec-hook:
- at WIN32_FALSE@	$(MKDIR_P) "$(DESTDIR)$(pkcs11dir)"
- at WIN32_FALSE@	for l in opensc-pkcs11$(PKCS11_SUFFIX) pkcs11-spy$(PKCS11_SUFFIX); do \
- at WIN32_FALSE@		rm -f "$(DESTDIR)$(pkcs11dir)/$$l"; \
- at WIN32_FALSE@		$(LN_S) ../$$l "$(DESTDIR)$(pkcs11dir)/$$l"; \
- at WIN32_FALSE@	done
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/src/pkcs11/Makefile.mak b/src/pkcs11/Makefile.mak
index 34e5525..e3cdfbd 100644
--- a/src/pkcs11/Makefile.mak
+++ b/src/pkcs11/Makefile.mak
@@ -1,16 +1,15 @@
 TOPDIR = ..\..
 
 TARGET1                 = opensc-pkcs11.dll
+TARGET2                 = onepin-opensc-pkcs11.dll
 TARGET3			= pkcs11-spy.dll
 
 OBJECTS			= pkcs11-global.obj pkcs11-session.obj pkcs11-object.obj misc.obj slot.obj \
-			  mechanism.obj openssl.obj framework-pkcs15.obj \
-			  framework-pkcs15init.obj debug.obj pkcs11-display.obj \
-				$(TOPDIR)\win32\versioninfo.res
-OBJECTS3		= pkcs11-spy.obj pkcs11-display.obj \
-				$(TOPDIR)\win32\versioninfo.res
+			  mechanism.obj openssl.obj framework-pkcs15.obj framework-pkcs15init.obj \
+			  debug.obj pkcs11-display.obj versioninfo-pkcs11.res
+OBJECTS3		= pkcs11-spy.obj pkcs11-display.obj versioninfo-pkcs11-spy.res
 
-all: $(TOPDIR)\win32\versioninfo.res $(TARGET1) $(TARGET3)
+all: versioninfo-pkcs11.res $(TARGET1) $(TARGET2) $(TARGET3) versioninfo-pkcs11-spy.res
 
 !INCLUDE $(TOPDIR)\win32\Make.rules.mak
 
@@ -21,6 +20,15 @@ $(TARGET1): $(OBJECTS) ..\libopensc\opensc_a.lib ..\pkcs15init\pkcs15init.lib
 	link $(LINKFLAGS) /dll /def:$*.def /implib:$*.lib /out:$(TARGET1) $(OBJECTS) ..\libopensc\opensc_a.lib ..\pkcs15init\pkcs15init.lib $(OPENSSL_LIB) gdi32.lib
 	if EXIST $(TARGET1).manifest mt -manifest $(TARGET1).manifest -outputresource:$(TARGET1);2
 
+$(TARGET2): $(OBJECTS) ..\libopensc\opensc_a.lib ..\pkcs15init\pkcs15init.lib
+	echo LIBRARY $* > $*.def
+	echo EXPORTS >> $*.def
+	type opensc-pkcs11.exports >> $*.def
+	del pkcs11-global.obj
+	cl $(CODE_OPTIMIZATION) $(COPTS) /DMODULE_APP_NAME=\"onepin-opensc-pkcs11\" /c pkcs11-global.c
+	link $(LINKFLAGS) /dll /def:$*.def /implib:$*.lib /out:$(TARGET2) $(OBJECTS) ..\libopensc\opensc_a.lib ..\pkcs15init\pkcs15init.lib $(OPENSSL_LIB) gdi32.lib
+	if EXIST $(TARGET2).manifest mt -manifest $(TARGET2).manifest -outputresource:$(TARGET2);2
+
 $(TARGET3): $(OBJECTS3) ..\libopensc\opensc.lib
 	echo LIBRARY $* > $*.def
 	echo EXPORTS >> $*.def
diff --git a/src/pkcs11/framework-pkcs15.c b/src/pkcs11/framework-pkcs15.c
index 168408d..79c0bde 100644
--- a/src/pkcs11/framework-pkcs15.c
+++ b/src/pkcs11/framework-pkcs15.c
@@ -19,13 +19,15 @@
  */
 
 #include "config.h"
+#include <stdlib.h>
+#include <string.h>
 #include "libopensc/log.h"
 #include "libopensc/asn1.h"
-
 #include "libopensc/cardctl.h"
 
-#include <stdlib.h>
-#include <string.h>
+#ifdef ENABLE_OPENSSL
+#include <openssl/opensslv.h>
+#endif
 
 #include "sc-pkcs11.h"
 #ifdef USE_PKCS15_INIT
@@ -157,7 +159,6 @@ static CK_RV	get_modulus(struct sc_pkcs15_pubkey *,
 static CK_RV	get_modulus_bits(struct sc_pkcs15_pubkey *,
 					CK_ATTRIBUTE_PTR);
 static CK_RV	get_usage_bit(unsigned int usage, CK_ATTRIBUTE_PTR attr);
-static CK_RV	asn1_sequence_wrapper(const u8 *, size_t, CK_ATTRIBUTE_PTR);
 static CK_RV	get_gostr3410_params(const u8 *, size_t, CK_ATTRIBUTE_PTR);
 static CK_RV	get_ec_pubkey_point(struct sc_pkcs15_pubkey *, CK_ATTRIBUTE_PTR);
 static CK_RV	get_ec_pubkey_params(struct sc_pkcs15_pubkey *, CK_ATTRIBUTE_PTR);
@@ -165,12 +166,58 @@ static int	lock_card(struct pkcs15_fw_data *);
 static int	unlock_card(struct pkcs15_fw_data *);
 static int	reselect_app_df(sc_pkcs15_card_t *p15card);
 
+#ifdef USE_PKCS15_INIT
 static CK_RV	set_gost_params(struct sc_pkcs15init_keyarg_gost_params *,
 			struct sc_pkcs15init_keyarg_gost_params *,
 			CK_ATTRIBUTE_PTR, CK_ULONG, CK_ATTRIBUTE_PTR, CK_ULONG);
 static CK_RV	pkcs15_create_slot(struct sc_pkcs11_card *p11card, struct pkcs15_fw_data *fw_data,
 			struct sc_pkcs15_object *auth, struct sc_app_info *app,
 			struct sc_pkcs11_slot **out);
+static int pkcs11_get_pin_callback(struct sc_profile *profile, int id,
+		const struct sc_pkcs15_auth_info *info, const char *label,
+		unsigned char *pinbuf, size_t *pinsize);
+
+static struct sc_pkcs15init_callbacks pkcs15init_callbacks = {
+	pkcs11_get_pin_callback,       /* get_pin() */
+	NULL
+};
+static char *pkcs15init_sopin = NULL;
+static size_t pkcs15init_sopin_len = 0;
+
+static int pkcs11_get_pin_callback(struct sc_profile *profile, int id,
+		const struct sc_pkcs15_auth_info *info, const char *label,
+		unsigned char *pinbuf, size_t *pinsize)
+{
+	char	*secret = NULL;
+	size_t	len = 0;
+
+	if (info->auth_type != SC_PKCS15_PIN_AUTH_TYPE_PIN)
+		return SC_ERROR_NOT_SUPPORTED;
+
+	sc_log(context, "pkcs11_get_pin_callback() auth-method %X", info->auth_method);
+	if (info->auth_method == SC_AC_CHV)   {
+		unsigned int flags = info->attrs.pin.flags;
+
+		sc_log(context, "pkcs11_get_pin_callback() PIN flags %X", flags);
+		if ((flags & SC_PKCS15_PIN_FLAG_SO_PIN) && !(flags & SC_PKCS15_PIN_FLAG_UNBLOCKING_PIN))    {
+			if (pkcs15init_sopin_len)
+				secret = pkcs15init_sopin;
+		}
+	}
+	if (secret)
+		len = strlen(secret);
+
+	sc_log(context, "pkcs11_get_pin_callback() secret '%s'", secret ? secret : "<null>");
+
+	if (!secret)
+		return SC_ERROR_OBJECT_NOT_FOUND;
+	if (len > *pinsize)
+		return SC_ERROR_BUFFER_TOO_SMALL;
+	memcpy(pinbuf, secret, len + 1);
+	*pinsize = len;
+	return 0;
+}
+#endif
 
 /* Returns WF data corresponding to the given application or,
  * if application info is not supplied, returns first available WF data. */
@@ -187,8 +234,8 @@ get_fw_data(struct sc_pkcs11_card *p11card, struct sc_app_info *app_info, int *o
 		if (!fw_data || !fw_data->p15_card)
 			continue;
 
-		if (app_info)   {
-			file_app = fw_data->p15_card->file_app;
+		file_app = fw_data->p15_card->file_app;
+		if (app_info && file_app)   {
 			if (file_app->path.len != app_info->path.len)
 				continue;
 			if (file_app->path.aid.len != app_info->path.aid.len)
@@ -418,6 +465,7 @@ CK_RV C_GetTokenInfo(CK_SLOT_ID slotID, CK_TOKEN_INFO_PTR pInfo)
 	int r;
 	CK_RV rv;
 
+	sc_log(context, "C_GetTokenInfo(%lx)", slotID);
 	if (pInfo == NULL_PTR)
 		return CKR_ARGUMENTS_BAD;
 
@@ -425,15 +473,16 @@ CK_RV C_GetTokenInfo(CK_SLOT_ID slotID, CK_TOKEN_INFO_PTR pInfo)
 	if (rv != CKR_OK)
 		return rv;
 
-	sc_log(context, "C_GetTokenInfo(%lx)", slotID);
-
 	rv = slot_get_token(slotID, &slot);
-	if (rv != CKR_OK)
+	if (rv != CKR_OK)   {
+		sc_log(context, "C_GetTokenInfo() get token: rv 0x%X", rv);
 		goto out;
+	}
 
 	/* User PIN flags are cleared before re-calculation */
 	slot->token_info.flags &= ~(CKF_USER_PIN_COUNT_LOW|CKF_USER_PIN_FINAL_TRY|CKF_USER_PIN_LOCKED);
 	auth = slot_data_auth(slot->fw_data);
+	sc_log(context, "C_GetTokenInfo() auth. object %p, token-info flags 0x%X", auth, slot->token_info.flags);
 	if (auth) {
 		pin_info = (struct sc_pkcs15_auth_info*) auth->data;
 
@@ -468,6 +517,7 @@ CK_RV C_GetTokenInfo(CK_SLOT_ID slotID, CK_TOKEN_INFO_PTR pInfo)
 	memcpy(pInfo, &slot->token_info, sizeof(CK_TOKEN_INFO));
 out:
 	sc_pkcs11_unlock();
+	sc_log(context, "C_GetTokenInfo(%lx) returns 0x%lX", slotID, rv);
 	return rv;
 }
 
@@ -559,25 +609,28 @@ static int
 __pkcs15_create_pubkey_object(struct pkcs15_fw_data *fw_data,
 	struct sc_pkcs15_object *pubkey, struct pkcs15_any_object **pubkey_object)
 {
-	struct pkcs15_pubkey_object *object;
-	struct sc_pkcs15_pubkey *p15_key;
+	struct pkcs15_pubkey_object *object = NULL;
+	struct sc_pkcs15_pubkey *p15_key = NULL;
 	int rv;
 
+	sc_log(context, "__pkcs15_create_pubkey_object() called, pubkey %p, data %p", pubkey, pubkey->data);
 	/* Read public key from card */
 	/* Attempt to read pubkey from card or file.
 	 * During initialization process, the key may have been created
 	 * and saved as a file before the certificate has been created.
 	 */
 	if (pubkey->flags & SC_PKCS15_CO_FLAG_PRIVATE)   {	/* is the key private? */
+		sc_log(context, "No pubkey");
 		p15_key = NULL;					/* will read key when needed */
 	}
 	else {
 		/* if emulation already created pubkey use it */
 		if (pubkey->emulated && (fw_data->p15_card->flags & SC_PKCS15_CARD_FLAG_EMULATED)) {
+			sc_log(context, "Use emulated pubkey");
 			p15_key = (struct sc_pkcs15_pubkey *) pubkey->emulated;
-			sc_log(context, "Using emulated pubkey %p", p15_key);
 		}
 		else {
+			sc_log(context, "Get pubkey from PKCS#15 object");
 			rv = sc_pkcs15_read_pubkey(fw_data->p15_card, pubkey, &p15_key);
 			if (rv < 0)
 				 p15_key = NULL;
@@ -597,6 +650,7 @@ __pkcs15_create_pubkey_object(struct pkcs15_fw_data *fw_data,
 	if (pubkey_object != NULL)
 		*pubkey_object = (struct pkcs15_any_object *) object;
 
+	sc_log(context, "__pkcs15_create_pubkey_object() returns pubkey object %p", object);
 	return rv;
 }
 
@@ -882,7 +936,7 @@ pkcs15_init_slot(struct sc_pkcs15_card *p15card, struct sc_pkcs11_slot *slot,
 {
 	struct pkcs15_slot_data *fw_data;
 	struct sc_pkcs15_auth_info *pin_info = NULL;
-	char tmp[64];
+	char label[64];
 
 	pkcs15_init_token_info(p15card, &slot->token_info);
 	slot->token_info.flags |= CKF_TOKEN_INITIALIZED;
@@ -906,16 +960,16 @@ pkcs15_init_slot(struct sc_pkcs15_card *p15card, struct sc_pkcs11_slot *slot,
 		}
 		else   {
 			if (auth->label[0])
-				snprintf(tmp, sizeof(tmp), "%s (%s)", p15card->tokeninfo->label, auth->label);
+				snprintf(label, sizeof(label), "%s (%s)", p15card->tokeninfo->label, auth->label);
 			else
-				snprintf(tmp, sizeof(tmp), "%s", p15card->tokeninfo->label);
+				snprintf(label, sizeof(label), "%s", p15card->tokeninfo->label);
 			slot->token_info.flags |= CKF_LOGIN_REQUIRED;
 		}
 	}
 	else   {
-		snprintf(tmp, sizeof(tmp), "%s", p15card->tokeninfo->label);
+		snprintf(label, sizeof(label), "%s", p15card->tokeninfo->label);
 	}
-	strcpy_bp(slot->token_info.label, tmp, 32);
+	strcpy_bp(slot->token_info.label, label, 32);
 
 	if (pin_info) {
 		slot->token_info.ulMaxPinLen = pin_info->attrs.pin.max_length;
@@ -933,10 +987,8 @@ FIXME: configurable option
 	        slot->token_info.flags |= CKF_WRITE_PROTECTED;
 #endif
 
-	if (app_info)
-		slot->app_info = app_info;
-
-	sc_log(context, "Initialized token '%s' in slot 0x%lx", tmp, slot->id);
+	slot->app_info = app_info;
+	sc_log(context, "Initialized token '%s' in slot 0x%lx", label, slot->id);
 }
 
 
@@ -945,9 +997,10 @@ pkcs15_create_slot(struct sc_pkcs11_card *p11card, struct pkcs15_fw_data *fw_dat
 		struct sc_pkcs15_object *auth, struct sc_app_info *app_info,
 		struct sc_pkcs11_slot **out)
 {
-	struct sc_pkcs11_slot *slot;
+	struct sc_pkcs11_slot *slot = NULL;
 	int rv;
 
+	sc_log(context, "Create slot (p11card %p, fw_data %p, auth %p, app_info %p)", p11card, fw_data, auth, app_info);
 	rv = slot_allocate(&slot, p11card);
 	if (rv != CKR_OK)
 		return rv;
@@ -956,7 +1009,8 @@ pkcs15_create_slot(struct sc_pkcs11_card *p11card, struct pkcs15_fw_data *fw_dat
 	slot->slot_info.flags |= CKF_TOKEN_PRESENT;
 
 	/* Fill in the slot/token info from pkcs15 data */
-	pkcs15_init_slot(fw_data->p15_card, slot, auth, app_info);
+	if (fw_data)
+		pkcs15_init_slot(fw_data->p15_card, slot, auth, app_info);
 
 	*out = slot;
 	return CKR_OK;
@@ -1199,14 +1253,16 @@ pkcs15_create_tokens(struct sc_pkcs11_card *p11card, struct sc_app_info *app_inf
 	struct sc_pkcs11_slot *slot = NULL;
 	int i, rv, idx;
 
-	sc_log(context, "create PKCS#15 tokens; fws:%p,%p,%p",
-			p11card->fws_data[0], p11card->fws_data[1], p11card->fws_data[2]);
-	sc_log(context, "CreateSlotsFlags: 0x%X", sc_pkcs11_conf.create_slots_flags);
+	sc_log(context, "create PKCS#15 tokens; fws:%p,%p,%p", p11card->fws_data[0], p11card->fws_data[1], p11card->fws_data[2]);
+	sc_log(context, "create slots flags 0x%X", sc_pkcs11_conf.create_slots_flags);
 
 	/* Find out framework data corresponding to the given application */
 	fw_data = get_fw_data(p11card, app_info, &idx);
-	if (!fw_data)
-		return sc_to_cryptoki_error(SC_ERROR_PKCS15_APP_NOT_FOUND, NULL);
+	if (!fw_data)   {
+		sc_log(context, "Create slot for the non-binded card");
+		pkcs15_create_slot(p11card, NULL, NULL, app_info, &slot);
+		return CKR_OK;
+	}
 	sc_log(context, "Use FW data with index %i; fw_data->p15_card %p", idx, fw_data->p15_card);
 
 	/* Try to identify UserPIN and SignPIN by their symbolic name */
@@ -1302,11 +1358,21 @@ pkcs15_create_tokens(struct sc_pkcs11_card *p11card, struct sc_app_info *app_inf
 		}
 	}
 
-	if (first_slot && *first_slot==NULL)
+	if (!slot)   {
+		sc_log(context, "Now create slot without AUTH object");
+		pkcs15_create_slot(p11card, fw_data, NULL, app_info, &slot);
+		sc_log(context, "Created slot without AUTH object: %p", slot);
+	}
+
+	if (first_slot && *first_slot==NULL)   {
+		sc_log(context, "Set first slot: %p", slot);
 		*first_slot = slot;
+	}
 
-	if (slot)
+	if (slot)   {
+		sc_log(context, "Add public objects to slot %p", slot);
 		_add_public_objects(slot, fw_data, ffda);
+	}
 
 	if (ffda)
 		sc_log(context, "Finaly there are %i objects in first slot", ffda->num_objects);
@@ -1345,6 +1411,7 @@ pkcs15_login(struct sc_pkcs11_slot *slot, CK_USER_TYPE userType,
 		return sc_to_cryptoki_error(SC_ERROR_INTERNAL, "C_Login");
 	p15card = fw_data->p15_card;
 
+	sc_log(context, "pkcs15-login: userType 0x%lX, PIN length %li", userType, ulPinLen);
 	switch (userType) {
 	case CKU_USER:
 		auth_object = slot_data_auth(slot->fw_data);
@@ -1355,6 +1422,7 @@ pkcs15_login(struct sc_pkcs11_slot *slot, CK_USER_TYPE userType,
 		/* A card with no SO PIN is treated as if no SO login
 		 * is required */
 		rc = sc_pkcs15_find_so_pin(p15card, &auth_object);
+		sc_log(context, "pkcs15-login: find SO PIN: rc %i", rc);
 
 		/* If there's no SO PIN on the card, silently
 		 * accept any PIN, and lock the card if required */
@@ -1433,14 +1501,9 @@ pkcs15_login(struct sc_pkcs11_slot *slot, CK_USER_TYPE userType,
 		 * a valid pin (which is processed normally). --okir */
 		if (ulPinLen == 0)
 			pPin = NULL;
-	} else {
-		/*
-		 * If PIN is out of range,
-		 * it cannot be correct.
-		 */
-		if (ulPinLen < pin_info->attrs.pin.min_length ||
-		    ulPinLen > pin_info->attrs.pin.max_length)
-			return CKR_PIN_INCORRECT;
+	}
+	else if (ulPinLen > pin_info->attrs.pin.max_length)   {
+		return CKR_ARGUMENTS_BAD;
 	}
 
 
@@ -1456,8 +1519,9 @@ pkcs15_login(struct sc_pkcs11_slot *slot, CK_USER_TYPE userType,
 	 * before the crypto operation that requires the assertion
 	 */
 	if (userType != CKU_CONTEXT_SPECIFIC) {
-	if (sc_pkcs11_conf.lock_login && (rc = lock_card(fw_data)) < 0)
-		return sc_to_cryptoki_error(rc, "C_Login");
+		if (sc_pkcs11_conf.lock_login && (rc = lock_card(fw_data)) < 0)   {
+			return sc_to_cryptoki_error(rc, "C_Login");
+		}
 	}
 
 	rc = sc_pkcs15_verify_pin(p15card, auth_object, pPin, ulPinLen);
@@ -1643,39 +1707,133 @@ pkcs15_change_pin(struct sc_pkcs11_slot *slot,
 
 #ifdef USE_PKCS15_INIT
 static CK_RV
-pkcs15_initialize(struct sc_pkcs11_card *p11card, void *ptr,
+pkcs15_initialize(struct sc_pkcs11_slot *slot, void *ptr,
 		CK_UTF8CHAR_PTR pPin, CK_ULONG ulPinLen,
 		CK_UTF8CHAR_PTR pLabel)
 {
+	struct sc_pkcs11_card *p11card = slot->card;
 	struct sc_cardctl_pkcs11_init_token args;
-	int rv;
+	scconf_block *atrblock = NULL;
+	int rc, enable_InitToken = 0;
+	CK_RV rv;
+
+	sc_log(context, "Get 'enable-InitToken' card configuration option");
+	atrblock = sc_match_atr_block(p11card->card->ctx, NULL, &p11card->reader->atr);
+	if (atrblock)
+		enable_InitToken = scconf_get_bool(atrblock, "pkcs11_enable_InitToken", 0);
 
 	memset(&args, 0, sizeof(args));
 	args.so_pin = pPin;
 	args.so_pin_len = ulPinLen;
 	args.label = (const char *) pLabel;
 
-	rv = sc_card_ctl(p11card->card, SC_CARDCTL_PKCS11_INIT_TOKEN, &args);
+	sc_log(context, "Try card specific token initialize procedure");
+	rc = sc_card_ctl(p11card->card, SC_CARDCTL_PKCS11_INIT_TOKEN, &args);
+	if (rc == SC_ERROR_NOT_SUPPORTED && enable_InitToken)   {
+		struct sc_profile *profile = NULL;
+		struct pkcs15_fw_data *fw_data = NULL;
+		struct sc_pkcs15_card *p15card = NULL;
 
-	if (rv == SC_ERROR_NOT_SUPPORTED)
-		return CKR_FUNCTION_NOT_SUPPORTED;
+		sc_log(context, "Using generic token initialize procedure");
+		fw_data = (struct pkcs15_fw_data *) p11card->fws_data[slot->fw_data_idx];
+		if (!fw_data)
+			return sc_to_cryptoki_error(SC_ERROR_INTERNAL, "C_Login");
+		p15card = fw_data->p15_card;
 
-	if (rv < 0)
-		return sc_to_cryptoki_error(rv, "C_InitToken");
+		rc = sc_lock(p11card->card);
+		if (rc < 0)
+			return sc_to_cryptoki_error(rc, "C_InitToken");
+
+		rc = sc_pkcs15init_bind(p11card->card, "pkcs15", NULL, NULL, &profile);
+		if (rc < 0) {
+			sc_log(context, "pkcs15init bind error %i", rc);
+			sc_unlock(p11card->card);
+			return sc_to_cryptoki_error(rc, "C_InitToken");
+		}
+
+		rc = sc_pkcs15init_finalize_profile(p11card->card, profile, NULL);
+		if (rc) {
+			sc_log(context, "finalize profile error %i", rc);
+			return sc_to_cryptoki_error(rc, "C_InitToken");
+		}
+
+		sc_log(context, "set pkcs15init callbacks");
+		pkcs15init_sopin = (char *)pPin;
+		pkcs15init_sopin_len = ulPinLen;
+		sc_pkcs15init_set_callbacks(&pkcs15init_callbacks);
+
+		if (p15card)   {
+			sc_log(context, "pkcs15init erase card");
+			rc = sc_pkcs15init_erase_card(p15card, profile, NULL);
+
+			sc_log(context, "pkcs15init unbind");
+			sc_pkcs15init_unbind(profile);
+
+			rc = sc_pkcs15init_bind(p11card->card, "pkcs15", NULL, NULL, &profile);
+			if (rc < 0) {
+				sc_log(context, "pkcs15init bind error %i", rc);
+				sc_pkcs15init_set_callbacks(NULL);
+				sc_unlock(p11card->card);
+				return sc_to_cryptoki_error(rc, "C_InitToken");
+			}
+
+			rc = sc_pkcs15init_finalize_profile(p11card->card, profile, NULL);
+			if (rc) {
+				sc_pkcs15init_set_callbacks(NULL);
+				sc_log(context, "Cannot finalize profile: %i", rc);
+				return sc_to_cryptoki_error(rc, "C_InitToken");
+			}
+		}
+		else   {
+			sc_log(context, "No erase for the non-initialized card");
+		}
+
+		if (!rc)  {
+			struct sc_pkcs15init_initargs init_args;
+
+			memset(&init_args, 0, sizeof(init_args));
+			init_args.so_pin = pPin;
+			init_args.so_pin_len = ulPinLen;
+			init_args.label = (char *)pLabel;
+
+			sc_log(context, "pkcs15init: create application on '%s' card", p11card->card->name);
+			rc = sc_pkcs15init_add_app(p11card->card, profile, &init_args);
+			sc_log(context, "pkcs15init: create application returns %i", rc);
+		}
+
+		pkcs15init_sopin = NULL;
+		pkcs15init_sopin_len = 0;
+
+		sc_log(context, "pkcs15init: unset callbacks");
+		sc_pkcs15init_set_callbacks(NULL);
+
+		sc_log(context, "pkcs15init: unbind");
+		sc_pkcs15init_unbind(profile);
+
+		sc_unlock(p11card->card);
+	}
+
+	if (rc < 0)   {
+		sc_log(context, "init token error %i", rc);
+		return sc_to_cryptoki_error(rc, "C_InitToken");
+	}
 
 	rv = card_removed(p11card->reader);
-	if (rv != SC_SUCCESS)
+	if (rv != CKR_OK)   {
+		sc_log(context, "remove card error 0x%lX", rv);
 		return rv;
+	}
 
 	rv = card_detect_all();
-	if (rv != SC_SUCCESS)
+	if (rv != CKR_OK)   {
+		sc_log(context, "detect all card error 0x%lX", rv);
 		return rv;
+	}
 
 	return CKR_OK;
 }
 
 
-
 static CK_RV
 pkcs15_init_pin(struct sc_pkcs11_slot *slot, CK_CHAR_PTR pPin, CK_ULONG ulPinLen)
 {
@@ -1693,7 +1851,6 @@ pkcs15_init_pin(struct sc_pkcs11_slot *slot, CK_CHAR_PTR pPin, CK_ULONG ulPinLen
 	p11args.pin_len = ulPinLen;
 
 	rc = sc_card_ctl(p11card->card, SC_CARDCTL_PKCS11_INIT_PIN, &p11args);
-
 	if (rc != SC_ERROR_NOT_SUPPORTED) {
 		if (rc == SC_SUCCESS)
 			return CKR_OK;
@@ -1788,7 +1945,6 @@ pkcs15_create_private_key(struct sc_pkcs11_slot *slot, struct sc_profile *profil
 	struct sc_pkcs15_auth_info *pin = NULL;
 	CK_KEY_TYPE key_type;
 	struct sc_pkcs15_prkey_rsa *rsa = NULL;
-	struct sc_pkcs15_prkey_ec *ec = NULL;
 	struct sc_pkcs15_prkey_gostr3410 *gost = NULL;
 	int rc, rv;
 	char label[SC_PKCS15_MAX_LABEL_SIZE];
@@ -1818,7 +1974,6 @@ pkcs15_create_private_key(struct sc_pkcs11_slot *slot, struct sc_profile *profil
 			break;
 		case CKK_EC:
 			args.key.algorithm = SC_ALGORITHM_EC;
-			ec = &args.key.u.ec;
 			/* TODO: -DEE Do not have PKCS15 card with EC to test this */
 			/* fall through */
 		default:
@@ -2081,6 +2236,7 @@ pkcs15_create_secret_key(struct sc_pkcs11_slot *slot, struct sc_profile *profile
 	rv = CKR_OK;
 
 out:
+	free(key_obj);
 	return rv;
 }
 
@@ -2611,11 +2767,17 @@ pkcs15_gen_keypair(struct sc_pkcs11_slot *slot, CK_MECHANISM_PTR pMechanism,
 		pub_args.key.algorithm               = SC_ALGORITHM_GOSTR3410;
 		set_gost_params(&keygen_args.prkey_args.params.gost, &pub_args.params.gost,
 				pPubTpl, ulPubCnt, pPrivTpl, ulPrivCnt);
+		keybits = SC_PKCS15_GOSTR3410_KEYSIZE;
 	}
 	else if (keytype == CKK_RSA)   {
 		/* default value (CKA_KEY_TYPE isn't set) or CKK_RSA is set */
 		keygen_args.prkey_args.key.algorithm = SC_ALGORITHM_RSA;
 		pub_args.key.algorithm               = SC_ALGORITHM_RSA;
+
+		rv = attr_find2(pPubTpl, ulPubCnt, pPrivTpl, ulPrivCnt,	CKA_MODULUS_BITS, &keybits, NULL);
+		if (rv != CKR_OK)
+			keybits = 1024; /* Default key size */
+		/* TODO: check allowed values of keybits */
 	}
 	else if (keytype == CKK_EC)   {
 		struct sc_pkcs15_der *der = &keygen_args.prkey_args.params.ec.der;
@@ -2635,20 +2797,9 @@ pkcs15_gen_keypair(struct sc_pkcs11_slot *slot, CK_MECHANISM_PTR pMechanism,
 		rv = CKR_ATTRIBUTE_VALUE_INVALID;
 		goto kpgen_done;
 	}
-	if (keytype == CKK_GOSTR3410)
-		keybits = SC_PKCS15_GOSTR3410_KEYSIZE;
-	else if (keytype == CKK_RSA)
-	{
-		rv = attr_find2(pPubTpl, ulPubCnt, pPrivTpl, ulPrivCnt,	CKA_MODULUS_BITS,
-			&keybits, NULL);
-		if (rv != CKR_OK)
-			keybits = 1024; /* Default key size */
-		/* TODO: check allowed values of keybits */
-	}
 
 	id.len = SC_PKCS15_MAX_ID_SIZE;
-	rv = attr_find2(pPubTpl, ulPubCnt, pPrivTpl, ulPrivCnt,	CKA_ID,
-		&id.value, &id.len);
+	rv = attr_find2(pPubTpl, ulPubCnt, pPrivTpl, ulPrivCnt,	CKA_ID, &id.value, &id.len);
 	if (rv == CKR_OK)
 		keygen_args.prkey_args.id = pub_args.id = id;
 
@@ -2678,8 +2829,7 @@ pkcs15_gen_keypair(struct sc_pkcs11_slot *slot, CK_MECHANISM_PTR pMechanism,
 	sc_pkcs15init_set_p15card(profile, fw_data->p15_card);
 
 	sc_log(context, "Try on-card key pair generation");
-	rc = sc_pkcs15init_generate_key(fw_data->p15_card, profile,
-		&keygen_args, keybits, &priv_key_obj);
+	rc = sc_pkcs15init_generate_key(fw_data->p15_card, profile, &keygen_args, keybits, &priv_key_obj);
 	if (rc >= 0) {
 		id = ((struct sc_pkcs15_prkey_info *) priv_key_obj->data)->id;
 		rc = sc_pkcs15_find_pubkey_by_id(fw_data->p15_card, &id, &pub_key_obj);
@@ -2722,6 +2872,9 @@ kpgen_done:
 static CK_RV
 pkcs15_skey_destroy(struct sc_pkcs11_session *session, void *object)
 {
+#ifndef USE_PKCS15_INIT
+	return CKR_FUNCTION_NOT_SUPPORTED;
+#else
 	struct pkcs15_any_object *any_obj = (struct pkcs15_any_object*) object;
 	struct sc_pkcs11_card *p11card = session->slot->card;
 	struct pkcs15_fw_data *fw_data = NULL;
@@ -2747,6 +2900,7 @@ pkcs15_skey_destroy(struct sc_pkcs11_session *session, void *object)
 		return sc_to_cryptoki_error(rv, "C_DestroyObject");
 
 	return CKR_OK;
+#endif
 }
 
 static CK_RV
@@ -2853,8 +3007,8 @@ struct sc_pkcs11_framework_ops framework_pkcs15 = {
 	pkcs15_login,
 	pkcs15_logout,
 	pkcs15_change_pin,
-	pkcs15_initialize,
 #ifdef USE_PKCS15_INIT
+	pkcs15_initialize,
 	pkcs15_init_pin,
 	pkcs15_create_object,
 	pkcs15_gen_keypair,
@@ -2862,6 +3016,7 @@ struct sc_pkcs11_framework_ops framework_pkcs15 = {
 	NULL,
 	NULL,
 	NULL,
+	NULL,
 #endif
 	pkcs15_get_random
 };
@@ -2967,11 +3122,13 @@ pkcs15_cert_set_attribute(struct sc_pkcs11_session *session, void *object, CK_AT
 static CK_RV
 pkcs15_cert_get_attribute(struct sc_pkcs11_session *session, void *object, CK_ATTRIBUTE_PTR attr)
 {
-	struct sc_pkcs11_card *p11card = session->slot->card;
+	struct sc_pkcs11_card *p11card = NULL;
 	struct pkcs15_cert_object *cert = (struct pkcs15_cert_object*) object;
 	struct pkcs15_fw_data *fw_data = NULL;
 	size_t len;
 
+	sc_log(context, "pkcs15_cert_get_attribute() called");
+	p11card = session->slot->card;
 	fw_data = (struct pkcs15_fw_data *) p11card->fws_data[session->slot->fw_data_idx];
 	if (!fw_data)
 		return sc_to_cryptoki_error(SC_ERROR_INTERNAL, "C_GetAttributeValue");
@@ -3037,13 +3194,17 @@ pkcs15_cert_get_attribute(struct sc_pkcs11_session *session, void *object, CK_AT
 			attr->ulValueLen = 0;
 			return CKR_OK;
 		}
-		return asn1_sequence_wrapper(cert->cert_data->subject, cert->cert_data->subject_len, attr);
+		check_attribute_buffer(attr, cert->cert_data->subject_len);
+		memcpy(attr->pValue, cert->cert_data->subject, cert->cert_data->subject_len);
+		return CKR_OK;
 	case CKA_ISSUER:
 		if (check_cert_data_read(fw_data, cert) != 0) {
 			attr->ulValueLen = 0;
 			return CKR_OK;
 		}
-		return asn1_sequence_wrapper(cert->cert_data->issuer, cert->cert_data->issuer_len, attr);
+		check_attribute_buffer(attr, cert->cert_data->issuer_len);
+		memcpy(attr->pValue, cert->cert_data->issuer, cert->cert_data->issuer_len);
+		return CKR_OK;
 	default:
 		return CKR_ATTRIBUTE_TYPE_INVALID;
 	}
@@ -3064,9 +3225,12 @@ pkcs15_cert_cmp_attribute(struct sc_pkcs11_session *session,
 	const unsigned char *data = NULL, *_data = NULL;
 	size_t	len, _len;
 
+	sc_log(context, "pkcs15_cert_cmp_attribute() called");
 	fw_data = (struct pkcs15_fw_data *) p11card->fws_data[session->slot->fw_data_idx];
-	if (!fw_data)
+	if (!fw_data)   {
+		sc_log(context, "pkcs15_cert_cmp_attribute() returns SC_ERROR_INTERNAL");
 		return sc_to_cryptoki_error(SC_ERROR_INTERNAL, "C_GetAttributeValue");
+	}
 
 	switch (attr->type) {
 	/* Check the issuer/subject. Some pkcs11 callers (i.e. netscape) will pass
@@ -3083,8 +3247,10 @@ pkcs15_cert_cmp_attribute(struct sc_pkcs11_session *session,
 		if (cert->cert_data->issuer[0] == ASN1_SET_TAG && data[0] == ASN1_SEQ_TAG && len >= 2)
 			data = sc_asn1_skip_tag(context, &_data, &_len, SC_ASN1_CONS | SC_ASN1_TAG_SEQUENCE, &len);
 
-		if (len == cert->cert_data->issuer_len && !memcmp(cert->cert_data->issuer, data, len))
+		if (len == cert->cert_data->issuer_len && !memcmp(cert->cert_data->issuer, data, len))   {
+			sc_log(context, "pkcs15_cert_cmp_attribute() returns CKA_ISSUER matched");
 			return 1;
+		}
 		break;
 	case CKA_SUBJECT:
 		if (check_cert_data_read(fw_data, cert) != 0)
@@ -3097,12 +3263,15 @@ pkcs15_cert_cmp_attribute(struct sc_pkcs11_session *session,
 		if (cert->cert_data->subject[0] == ASN1_SET_TAG && data[0] == ASN1_SEQ_TAG && len >= 2)
 			data = sc_asn1_skip_tag(context, &_data, &_len, SC_ASN1_CONS | SC_ASN1_TAG_SEQUENCE, &len);
 
-		if (len == cert->cert_data->subject_len && !memcmp(cert->cert_data->subject, data, len))
+		if (len == cert->cert_data->subject_len && !memcmp(cert->cert_data->subject, data, len))   {
+			sc_log(context, "pkcs15_cert_cmp_attribute() returns CKA_SUBJECT matched");
 			return 1;
+		}
 		break;
 	default:
 		return sc_pkcs11_any_cmp_attribute(session, object, attr);
 	}
+	sc_log(context, "pkcs15_cert_cmp_attribute() returns not matched");
 	return 0;
 }
 
@@ -3142,12 +3311,14 @@ pkcs15_prkey_get_attribute(struct sc_pkcs11_session *session,
 		void *object, CK_ATTRIBUTE_PTR attr)
 {
 	struct pkcs15_prkey_object *prkey = (struct pkcs15_prkey_object*) object;
-	struct sc_pkcs11_card *p11card = session->slot->card;
+	struct sc_pkcs11_card *p11card = NULL;
 	struct pkcs15_fw_data *fw_data = NULL;
 	struct sc_pkcs15_pubkey *key = NULL;
 	unsigned int usage;
 	size_t len;
 
+	sc_log(context, "pkcs15_prkey_get_attribute() called");
+	p11card = session->slot->card;
 	fw_data = (struct pkcs15_fw_data *) p11card->fws_data[session->slot->fw_data_idx];
 	if (!fw_data)
 		return sc_to_cryptoki_error(SC_ERROR_INTERNAL, "C_GetAttributeValue");
@@ -3283,10 +3454,10 @@ pkcs15_prkey_get_attribute(struct sc_pkcs11_session *session,
 		check_attribute_buffer(attr, sizeof(CK_ULONG));
 		switch (prkey->prv_p15obj->type) {
 			case SC_PKCS15_TYPE_PRKEY_EC:
-				if (key)
+				if (key && key->u.ec.params.field_length > 0)
 					*(CK_ULONG *) attr->pValue = key->u.ec.params.field_length;
 				else
-					*(CK_ULONG *) attr->pValue = 384; /* TODO -DEE needs work */
+					*(CK_ULONG *) attr->pValue = (key->u.ec.ecpointQ.len - 1) / 2 *8;
 				return CKR_OK;
 			default:
 				*(CK_ULONG *) attr->pValue = prkey->prv_info->modulus_length;
@@ -3671,15 +3842,19 @@ pkcs15_pubkey_set_attribute(struct sc_pkcs11_session *session,
 
 
 static CK_RV
-pkcs15_pubkey_get_attribute(struct sc_pkcs11_session *session,
-		void *object, CK_ATTRIBUTE_PTR attr)
+pkcs15_pubkey_get_attribute(struct sc_pkcs11_session *session, void *object, CK_ATTRIBUTE_PTR attr)
 {
-	struct sc_pkcs11_card *p11card = session->slot->card;
+	struct sc_pkcs11_card *p11card = NULL;
 	struct pkcs15_pubkey_object *pubkey = (struct pkcs15_pubkey_object*) object;
-	struct pkcs15_cert_object *cert = pubkey->pub_genfrom;
+	struct pkcs15_cert_object *cert = NULL;
 	struct pkcs15_fw_data *fw_data = NULL;
 	size_t len;
 
+	sc_log(context, "pkcs15_pubkey_get_attribute() called");
+
+	p11card = session->slot->card;
+	cert = pubkey->pub_genfrom;
+
 	fw_data = (struct pkcs15_fw_data *) p11card->fws_data[session->slot->fw_data_idx];
 	if (!fw_data)
 		return sc_to_cryptoki_error(SC_ERROR_INTERNAL, "C_GetAttributeValue");
@@ -3776,14 +3951,10 @@ pkcs15_pubkey_get_attribute(struct sc_pkcs11_session *session,
 	case CKA_VERIFY:
 	case CKA_VERIFY_RECOVER:
 	case CKA_DERIVE:
-		if (pubkey->pub_info) {
+		if (pubkey->pub_info)
 			return get_usage_bit(pubkey->pub_info->usage, attr);
-		} else {
-			return get_usage_bit(SC_PKCS15_PRKEY_USAGE_ENCRYPT
-					|SC_PKCS15_PRKEY_USAGE_VERIFY
-					|SC_PKCS15_PRKEY_USAGE_VERIFYRECOVER,
-					attr);
-		}
+		else
+			return get_usage_bit(SC_PKCS15_PRKEY_USAGE_ENCRYPT |SC_PKCS15_PRKEY_USAGE_VERIFY | SC_PKCS15_PRKEY_USAGE_VERIFYRECOVER, attr);
 	case CKA_MODULUS:
 		return get_modulus(pubkey->pub_data, attr);
 	case CKA_MODULUS_BITS:
@@ -3791,24 +3962,42 @@ pkcs15_pubkey_get_attribute(struct sc_pkcs11_session *session,
 	case CKA_PUBLIC_EXPONENT:
 		return get_public_exponent(pubkey->pub_data, attr);
 	case CKA_VALUE:
-		if (pubkey->pub_data) {
-			/* TODO: -DEE  Not all pubkeys have CKA_VALUE attribute. RSA and EC
-			 * for example don't. So why is this here?
-			 * Why checking for cert in this pkcs15_pubkey_get_attribute?
-			 */
-			check_attribute_buffer(attr, pubkey->pub_data->data.len);
-			memcpy(attr->pValue, pubkey->pub_data->data.value,
-					      pubkey->pub_data->data.len);
+
+		if (pubkey->pub_info && pubkey->pub_info->direct.raw.value && pubkey->pub_info->direct.raw.len)   {
+			check_attribute_buffer(attr, pubkey->pub_info->direct.raw.len);
+			memcpy(attr->pValue, pubkey->pub_info->direct.raw.value, pubkey->pub_info->direct.raw.len);
+		}
+		else if (pubkey->pub_info && pubkey->pub_info->direct.spki.value && pubkey->pub_info->direct.spki.len)   {
+			check_attribute_buffer(attr, pubkey->pub_info->direct.spki.len);
+			memcpy(attr->pValue, pubkey->pub_info->direct.spki.value, pubkey->pub_info->direct.spki.len);
+		}
+		else if (pubkey->pub_data)   {
+			unsigned char *value = NULL;
+			size_t len;
+
+			if (sc_pkcs15_encode_pubkey(context, pubkey->pub_data, &value, &len))
+				return sc_to_cryptoki_error(SC_ERROR_INTERNAL, "C_GetAttributeValue");
+
+			check_attribute_buffer(attr, len);
+			memcpy(attr->pValue, value, len);
+
+			free(value);
+		}
+		else if (pubkey->base.p15_object && pubkey->base.p15_object->content.value && pubkey->base.p15_object->content.len)   {
+			check_attribute_buffer(attr, pubkey->base.p15_object->content.len);
+			memcpy(attr->pValue, pubkey->base.p15_object->content.value, pubkey->base.p15_object->content.len);
 		}
 		else if (cert && cert->cert_data) {
 			check_attribute_buffer(attr, cert->cert_data->data.len);
 			memcpy(attr->pValue, cert->cert_data->data.value, cert->cert_data->data.len);
 		}
+		else   {
+			return CKR_ATTRIBUTE_TYPE_INVALID;
+		}
 		break;
 	case CKA_GOSTR3410_PARAMS:
 		if (pubkey->pub_info && pubkey->pub_info->params.len)
-			return get_gostr3410_params(pubkey->pub_info->params.data,
-					pubkey->pub_info->params.len, attr);
+			return get_gostr3410_params(pubkey->pub_info->params.data, pubkey->pub_info->params.len, attr);
 		else
 			return CKR_ATTRIBUTE_TYPE_INVALID;
 	case CKA_EC_PARAMS:
@@ -3910,6 +4099,7 @@ pkcs15_dobj_get_attribute(struct sc_pkcs11_session *session, void *object, CK_AT
 	int r;
 	unsigned char *buf = NULL;
 
+	sc_log(context, "pkcs15_dobj_get_attribute() called");
 	switch (attr->type) {
 	case CKA_CLASS:
 		check_attribute_buffer(attr, sizeof(CK_OBJECT_CLASS));
@@ -4052,13 +4242,12 @@ static int pkcs15_skey_get_value(struct sc_pkcs11_session *session,
 	 * but for now we only work with session objects
 	 * derived from other keys
 	 */
-	skey_data= malloc(sizeof(struct sc_pkcs15_skey));
+	skey_data= calloc(1, sizeof(struct sc_pkcs15_skey));
 	if (skey_data == NULL)
 		return SC_ERROR_OUT_OF_MEMORY;
-	memset(skey_data, 0, sizeof(struct sc_pkcs15_skey));
 
 	if (skey->value && skey->value->data_len) {
-		skey_data->data = malloc(skey_data->data_len);
+		skey_data->data = calloc(1, skey_data->data_len);
 		if (skey_data->data == NULL) {
 			free(skey_data);
 			return SC_ERROR_OUT_OF_MEMORY;
@@ -4080,6 +4269,7 @@ pkcs15_skey_get_attribute(struct sc_pkcs11_session *session,
 	struct pkcs15_skey_object *skey = (struct pkcs15_skey_object*) object;
 	size_t len;
 
+	sc_log(context, "pkcs15_skey_get_attribute() called");
 	switch (attr->type) {
 	case CKA_CLASS:
 		check_attribute_buffer(attr, sizeof(CK_OBJECT_CLASS));
@@ -4225,6 +4415,7 @@ get_public_exponent(struct sc_pkcs15_pubkey *key, CK_ATTRIBUTE_PTR attr)
 	case SC_ALGORITHM_RSA:
 		return get_bignum(&key->u.rsa.exponent, attr);
 	}
+
 	return CKR_ATTRIBUTE_TYPE_INVALID;
 }
 
@@ -4237,29 +4428,50 @@ get_ec_pubkey_params(struct sc_pkcs15_pubkey *key, CK_ATTRIBUTE_PTR attr)
 		return CKR_ATTRIBUTE_TYPE_INVALID;
 	if (key->alg_id == NULL)
 		return CKR_ATTRIBUTE_TYPE_INVALID;
-	ecp = (struct sc_ec_params *) key->alg_id->params;
 
 	switch (key->algorithm) {
 	case SC_ALGORITHM_EC:
-		check_attribute_buffer(attr, ecp->der_len);
-		memcpy(attr->pValue, ecp->der, ecp->der_len);
-		return CKR_OK;
+		/* TODO parms should not be in two places */
+		/* ec_params may be in key->alg_id or in key->u.ec */
+		if (key->u.ec.params.der.value) {
+			check_attribute_buffer(attr,key->u.ec.params.der.len);
+			memcpy(attr->pValue, key->u.ec.params.der.value, key->u.ec.params.der.len);
+			return CKR_OK;
+		}
+
+		ecp = (struct sc_ec_params *) key->alg_id->params;
+		if (ecp && ecp->der && ecp->der_len)   {
+			check_attribute_buffer(attr, ecp->der_len);
+			memcpy(attr->pValue, ecp->der, ecp->der_len);
+			return CKR_OK;
+		}
 	}
+
 	return CKR_ATTRIBUTE_TYPE_INVALID;
 }
 
 static CK_RV
 get_ec_pubkey_point(struct sc_pkcs15_pubkey *key, CK_ATTRIBUTE_PTR attr)
 {
+	unsigned char *value = NULL;
+	size_t value_len = 0;
+	int rc;
+
 	if (key == NULL)
 		return CKR_ATTRIBUTE_TYPE_INVALID;
 
 	switch (key->algorithm) {
 	case SC_ALGORITHM_EC:
-		check_attribute_buffer(attr, key->u.ec.ecpointQ.len);
-		memcpy(attr->pValue, key->u.ec.ecpointQ.value, key->u.ec.ecpointQ.len);
+		rc = sc_pkcs15_encode_pubkey_ec(context, &key->u.ec, &value, &value_len);
+		if (rc != SC_SUCCESS)
+			return sc_to_cryptoki_error(rc, NULL);
+
+		check_attribute_buffer(attr, value_len);
+		memcpy(attr->pValue, value, value_len);
+		free(value);
 		return CKR_OK;
 	}
+
 	return CKR_ATTRIBUTE_TYPE_INVALID;
 }
 
@@ -4271,8 +4483,7 @@ get_gostr3410_params(const u8 *params, size_t params_len, CK_ATTRIBUTE_PTR attr)
 	if (!params || params_len == sizeof(int))
 		return CKR_ATTRIBUTE_TYPE_INVALID;
 
-	for (i = 0; i < sizeof(gostr3410_param_oid)/
-			sizeof(gostr3410_param_oid[0]); ++i) {
+	for (i = 0; i < sizeof(gostr3410_param_oid)/sizeof(gostr3410_param_oid[0]); ++i) {
 		if (gostr3410_param_oid[i].param == ((int*)params)[0]) {
 			check_attribute_buffer(attr, sizeof(gostr3410_param_oid[i].oid));
 			memcpy(attr->pValue, gostr3410_param_oid[i].oid,
@@ -4324,42 +4535,8 @@ get_usage_bit(unsigned int usage, CK_ATTRIBUTE_PTR attr)
 }
 
 
-static CK_RV
-asn1_sequence_wrapper(const u8 *data, size_t len, CK_ATTRIBUTE_PTR attr)
-{
-	u8		*dest;
-	unsigned int	n;
-	size_t		len2;
-	size_t		lenb = 1;
-
-	len2 = len;
-	/* calculate the number of bytes needed for the length */
-	if (len > 127) {
-		unsigned int i;
-		for (i = 0; (len & (0xff << i)) != 0 && (0xff << i) != 0; i++)
-			lenb++;
-	}
-	check_attribute_buffer(attr, 1 + lenb + len);
-
-	dest = (u8 *) attr->pValue;
-	*dest++ = 0x30;	/* SEQUENCE tag */
-	if (len <= 127) {
-		*dest++ = len;
-	} else {
-		for (n = 4; (len & 0xFF000000) == 0; n--)
-			len <<= 8;
-		*dest++ = 0x80 + n;
-		while (n--) {
-			*dest++ = len >> 24;
-			len <<= 8;
-		}
-	}
-	memcpy(dest, data, len2);
-	attr->ulValueLen = (dest - (u8 *) attr->pValue) + len2;
-	return CKR_OK;
-}
-
-static int register_gost_mechanisms(struct sc_pkcs11_card *p11card, int flags)
+static int
+register_gost_mechanisms(struct sc_pkcs11_card *p11card, int flags)
 {
 	CK_MECHANISM_INFO mech_info;
 	sc_pkcs11_mechanism_type_t *mt;
@@ -4600,11 +4777,13 @@ register_mechanisms(struct sc_pkcs11_card *p11card)
 			if (rc != CKR_OK)
 				return rc;
 		}
+#if OPENSSL_VERSION_NUMBER >= 0x00908000L
 		if (flags & SC_ALGORITHM_RSA_HASH_SHA256) {
 			rc = sc_pkcs11_register_sign_and_hash_mechanism(p11card, CKM_SHA256_RSA_PKCS, CKM_SHA256, mt);
 			if (rc != CKR_OK)
 				return rc;
 		}
+#endif
 		if (flags & SC_ALGORITHM_RSA_HASH_MD5) {
 			rc = sc_pkcs11_register_sign_and_hash_mechanism(p11card, CKM_MD5_RSA_PKCS, CKM_MD5, mt);
 			if (rc != CKR_OK)
diff --git a/src/pkcs11/mechanism.c b/src/pkcs11/mechanism.c
index e848baf..0dbcf39 100644
--- a/src/pkcs11/mechanism.c
+++ b/src/pkcs11/mechanism.c
@@ -673,7 +673,7 @@ sc_pkcs11_verify_final(sc_pkcs11_operation_t *operation,
 	rv = key->ops->get_attribute(operation->session, key, &attr);
 	if (rv != CKR_OK)
 		return rv;
-	pubkey_value = malloc(attr.ulValueLen);
+	pubkey_value = calloc(1, attr.ulValueLen);
 	attr.pValue = pubkey_value;
 	rv = key->ops->get_attribute(operation->session, key, &attr);
 	if (rv != CKR_OK)
diff --git a/src/pkcs11/misc.c b/src/pkcs11/misc.c
index 81b5dd5..8aab05c 100644
--- a/src/pkcs11/misc.c
+++ b/src/pkcs11/misc.c
@@ -75,6 +75,8 @@ static CK_RV sc_to_cryptoki_error_common(int rc)
 	case SC_ERROR_CARD_NOT_PRESENT:
 		return CKR_TOKEN_NOT_PRESENT;
 	case SC_ERROR_INVALID_CARD:
+	case SC_ERROR_WRONG_CARD:
+	case SC_ERROR_NO_CARD_SUPPORT:
 		return CKR_TOKEN_NOT_RECOGNIZED;
 	case SC_ERROR_WRONG_LENGTH:
 		return CKR_DATA_LEN_RANGE;
@@ -110,8 +112,7 @@ static CK_RV sc_to_cryptoki_error_common(int rc)
 
 CK_RV sc_to_cryptoki_error(int rc, const char *ctx)
 {
-	if (ctx)
-	{
+	if (ctx)   {
 		int ii;
 
 		for (ii = 0; sc_to_cryptoki_error_map[ii].context; ii++) {
@@ -292,13 +293,17 @@ void load_pkcs11_parameters(struct sc_pkcs11_config *conf, sc_context_t * ctx)
 	/* Set defaults */
 	conf->plug_and_play = 1;
 	conf->max_virtual_slots = 16;
-	conf->slots_per_card = 4;
+	if (strcmp(ctx->app_name, "onepin-opensc-pkcs11") == 0) {
+		conf->slots_per_card = 1;
+	} else {
+		conf->slots_per_card = 4;
+	}
 	conf->hide_empty_tokens = 1;
 	conf->lock_login = 0;
 	conf->pin_unblock_style = SC_PKCS11_PIN_UNBLOCK_NOT_ALLOWED;
 	conf->create_puk_slot = 0;
 	conf->zero_ckaid_for_ca_certs = 0;
-	conf->create_slots_flags = 0;
+	conf->create_slots_flags = SC_PKCS11_SLOT_CREATE_ALL;
 
 	conf_block = sc_get_conf_block(ctx, "pkcs11", NULL, 1);
 	if (!conf_block)
@@ -323,6 +328,7 @@ void load_pkcs11_parameters(struct sc_pkcs11_config *conf, sc_context_t * ctx)
 	conf->zero_ckaid_for_ca_certs = scconf_get_bool(conf_block, "zero_ckaid_for_ca_certs", conf->zero_ckaid_for_ca_certs);
 
 	create_slots_for_pins = (char *)scconf_get_str(conf_block, "create_slots_for_pins", "all");
+	conf->create_slots_flags = 0;
 	tmp = strdup(create_slots_for_pins);
 	op = strtok(tmp, " ,");
 	while (op) {
diff --git a/src/pkcs11/openssl.c b/src/pkcs11/openssl.c
index d6e61d8..88023d7 100644
--- a/src/pkcs11/openssl.c
+++ b/src/pkcs11/openssl.c
@@ -420,7 +420,7 @@ CK_RV sc_pkcs11_verify_data(const unsigned char *pubkey, int pubkey_len,
 		if (rsa == NULL)
 			return CKR_DEVICE_MEMORY;
 
-		rsa_out = malloc(RSA_size(rsa));
+		rsa_out = calloc(1, RSA_size(rsa));
 		if (rsa_out == NULL) {
 			RSA_free(rsa);
 			return CKR_DEVICE_MEMORY;
diff --git a/src/pkcs11/pkcs11-global.c b/src/pkcs11/pkcs11-global.c
index 5652975..64abd1a 100644
--- a/src/pkcs11/pkcs11-global.c
+++ b/src/pkcs11/pkcs11-global.c
@@ -28,6 +28,10 @@
 
 #include "sc-pkcs11.h"
 
+#ifndef MODULE_APP_NAME
+#define MODULE_APP_NAME "opensc-pkcs11"
+#endif
+
 sc_context_t *context = NULL;
 struct sc_pkcs11_config sc_pkcs11_conf;
 list_t sessions;
@@ -42,7 +46,7 @@ extern CK_FUNCTION_LIST pkcs11_function_list;
 #include <pthread.h>
 CK_RV mutex_create(void **mutex)
 {
-	pthread_mutex_t *m = malloc(sizeof(*mutex));
+	pthread_mutex_t *m = calloc(1, sizeof(*mutex));
 	if (m == NULL)
 		return CKR_GENERAL_ERROR;;
 	pthread_mutex_init(m, NULL);
@@ -80,7 +84,7 @@ CK_RV mutex_create(void **mutex)
 {
 	CRITICAL_SECTION *m;
 
-	m = malloc(sizeof(*m));
+	m = calloc(1, sizeof(*m));
 	if (m == NULL)
 		return CKR_GENERAL_ERROR;
 	InitializeCriticalSection(m);
@@ -219,7 +223,7 @@ CK_RV C_Initialize(CK_VOID_PTR pInitArgs)
 	/* set context options */
 	memset(&ctx_opts, 0, sizeof(sc_context_param_t));
 	ctx_opts.ver        = 0;
-	ctx_opts.app_name   = "opensc-pkcs11";
+	ctx_opts.app_name   = MODULE_APP_NAME;
 	ctx_opts.thread_ctx = &sc_thread_ctx;
 
 	rc = sc_context_create(&context, &ctx_opts);
@@ -243,15 +247,12 @@ CK_RV C_Initialize(CK_VOID_PTR pInitArgs)
 	if (sc_pkcs11_conf.plug_and_play) {
 		create_slot(NULL);
 	}
-	/* Create slots for readers found on initialization */
-	for (i=0; i<sc_ctx_get_reader_count(context); i++) {
-		initialize_reader(sc_ctx_get_reader(context, i));
-	}
 
-	/* Set initial event state on slots */
-	for (i=0; i<list_size(&virtual_slots); i++) {
-		sc_pkcs11_slot_t *slot = (sc_pkcs11_slot_t *) list_get_at(&virtual_slots, i);
-		slot->events = 0; /* Initially there are no events */
+	/* Create slots for readers found on initialization, only if in 2.11 mode */
+	if (!sc_pkcs11_conf.plug_and_play) {
+		for (i=0; i<sc_ctx_get_reader_count(context); i++) {
+			initialize_reader(sc_ctx_get_reader(context, i));
+		}
 	}
 
 out:
@@ -330,7 +331,11 @@ CK_RV C_GetInfo(CK_INFO_PTR pInfo)
 
 	memset(pInfo, 0, sizeof(CK_INFO));
 	pInfo->cryptokiVersion.major = 2;
-	pInfo->cryptokiVersion.minor = 20;
+	if (sc_pkcs11_conf.plug_and_play) {
+		pInfo->cryptokiVersion.minor = 20;
+	} else {
+		pInfo->cryptokiVersion.minor = 11;
+	}
 	strcpy_bp(pInfo->manufacturerID,
 		  "OpenSC (www.opensc-project.org)",
 		  sizeof(pInfo->manufacturerID));
@@ -367,9 +372,9 @@ CK_RV C_GetSlotList(CK_BBOOL       tokenPresent,  /* only slots with token prese
 	if (pulCount == NULL_PTR)
 		return CKR_ARGUMENTS_BAD;
 
-	if ((rv = sc_pkcs11_lock()) != CKR_OK) {
+	rv = sc_pkcs11_lock();
+	if (rv != CKR_OK)
 		return rv;
-	}
 
 	sc_log(context, "C_GetSlotList(token=%d, %s)", tokenPresent,
 		 (pSlotList==NULL_PTR && sc_pkcs11_conf.plug_and_play)? "plug-n-play":"refresh");
@@ -384,7 +389,7 @@ CK_RV C_GetSlotList(CK_BBOOL       tokenPresent,  /* only slots with token prese
 
 	card_detect_all();
 
-	found = malloc(list_size(&virtual_slots) * sizeof(CK_SLOT_ID));
+	found = calloc(list_size(&virtual_slots), sizeof(CK_SLOT_ID));
 
 	if (found == NULL) {
 		rv = CKR_HOST_MEMORY;
@@ -479,26 +484,35 @@ CK_RV C_GetSlotInfo(CK_SLOT_ID slotID, CK_SLOT_INFO_PTR pInfo)
 	sc_log(context, "C_GetSlotInfo(0x%lx)", slotID);
 
 	rv = slot_get_slot(slotID, &slot);
-	if (rv == CKR_OK){
-		if (slot->reader == NULL)
+	sc_log(context, "C_GetSlotInfo() get slot rv %i", rv);
+	if (rv == CKR_OK)   {
+		if (slot->reader == NULL)   {
 			rv = CKR_TOKEN_NOT_PRESENT;
+		}
 		else {
 			now = get_current_time();
 			if (now >= slot->slot_state_expires || now == 0) {
 				/* Update slot status */
 				rv = card_detect(slot->reader);
+				sc_log(context, "C_GetSlotInfo() card detect rv 0x%X", rv);
+
+				if (rv == CKR_TOKEN_NOT_RECOGNIZED || rv == CKR_OK)
+					slot->slot_info.flags |= CKF_TOKEN_PRESENT;
+
 				/* Don't ask again within the next second */
 				slot->slot_state_expires = now + 1000;
 			}
 		}
 	}
+
 	if (rv == CKR_TOKEN_NOT_PRESENT || rv == CKR_TOKEN_NOT_RECOGNIZED)
 		rv = CKR_OK;
 
 	if (rv == CKR_OK)
 		memcpy(pInfo, &slot->slot_info, sizeof(CK_SLOT_INFO));
 
-	sc_log(context, "C_GetSlotInfo(0x%lx) = %s", slotID, lookup_enum ( RV_T, rv ));
+	sc_log(context, "C_GetSlotInfo() flags 0x%X", pInfo->flags);
+	sc_log(context, "C_GetSlotInfo(0x%lx) = %s", slotID, lookup_enum( RV_T, rv));
 	sc_pkcs11_unlock();
 	return rv;
 }
@@ -557,13 +571,22 @@ CK_RV C_InitToken(CK_SLOT_ID slotID,
 	CK_RV rv;
 	unsigned int i;
 
+	sc_log(context, "C_InitToken(pLabel='%s') called", pLabel);
 	rv = sc_pkcs11_lock();
 	if (rv != CKR_OK)
 		return rv;
 
 	rv = slot_get_token(slotID, &slot);
-	if (rv != CKR_OK)
+	if (rv != CKR_OK)   {
+		sc_log(context, "C_InitToken() get token error 0x%lX", rv);
 		goto out;
+	}
+
+	if (slot->card->framework->init_token == NULL) {
+		sc_log(context, "C_InitToken() not supported by framework");
+		rv = CKR_FUNCTION_NOT_SUPPORTED;
+		goto out;
+	}
 
 	/* Make sure there's no open session for this token */
 	for (i=0; i<list_size(&sessions); i++) {
@@ -574,19 +597,15 @@ CK_RV C_InitToken(CK_SLOT_ID slotID,
 		}
 	}
 
-	if (slot->card->framework->init_token == NULL) {
-		rv = CKR_FUNCTION_NOT_SUPPORTED;
-		goto out;
-	}
-	rv = slot->card->framework->init_token(slot->card,
-				 slot->fw_data, pPin, ulPinLen, pLabel);
-
+	rv = slot->card->framework->init_token(slot,slot->fw_data, pPin, ulPinLen, pLabel);
 	if (rv == CKR_OK) {
 		/* Now we should re-bind all tokens so they get the
 		 * corresponding function vector and flags */
 	}
 
-out:	sc_pkcs11_unlock();
+out:
+	sc_pkcs11_unlock();
+	sc_log(context, "C_InitToken(pLabel='%s') returns 0x%lX", pLabel, rv);
 	return rv;
 }
 
diff --git a/src/pkcs11/pkcs11-object.c b/src/pkcs11/pkcs11-object.c
index d89c811..d1c4380 100644
--- a/src/pkcs11/pkcs11-object.c
+++ b/src/pkcs11/pkcs11-object.c
@@ -1352,7 +1352,7 @@ int sc_pkcs11_any_cmp_attribute(struct sc_pkcs11_session *session, void *ptr, CK
 	if (temp_attr.ulValueLen <= sizeof(temp1))
 		temp_attr.pValue = temp1;
 	else {
-		temp2 = malloc(temp_attr.ulValueLen);
+		temp2 = calloc(1, temp_attr.ulValueLen);
 		if (temp2 == NULL)
 			return 0;
 		temp_attr.pValue = temp2;
diff --git a/src/pkcs11/pkcs11-session.c b/src/pkcs11/pkcs11-session.c
index a4fe68f..e6edf25 100644
--- a/src/pkcs11/pkcs11-session.c
+++ b/src/pkcs11/pkcs11-session.c
@@ -260,7 +260,7 @@ CK_RV C_Login(CK_SESSION_HANDLE hSession,	/* the session's handle */
 
 	slot = session->slot;
 
-	if (!(slot->token_info.flags & CKF_USER_PIN_INITIALIZED)) {
+	if (!(slot->token_info.flags & CKF_USER_PIN_INITIALIZED) && userType == CKU_USER) {
 		rv = CKR_USER_PIN_NOT_INITIALIZED;
 		goto out;
 	}
@@ -270,9 +270,13 @@ CK_RV C_Login(CK_SESSION_HANDLE hSession,	/* the session's handle */
 		if (slot->login_user == -1) {
 			rv = CKR_OPERATION_NOT_INITIALIZED;
 			goto out;
-		} else
-		rv = slot->card->framework->login(slot, userType, pPin, ulPinLen);
-	} else {
+		}
+		else   {
+			rv = slot->card->framework->login(slot, userType, pPin, ulPinLen);
+		}
+	}
+	else {
+		sc_log(context, "C_Login() slot->login_user %li", slot->login_user);
 		if (slot->login_user >= 0) {
 			if ((CK_USER_TYPE) slot->login_user == userType)
 				rv = CKR_USER_ALREADY_LOGGED_IN;
@@ -281,12 +285,15 @@ CK_RV C_Login(CK_SESSION_HANDLE hSession,	/* the session's handle */
 			goto out;
 		}
 
+		sc_log(context, "C_Login() userType %li", userType);
 		rv = slot->card->framework->login(slot, userType, pPin, ulPinLen);
+		sc_log(context, "fLogin() rv %li", rv);
 		if (rv == CKR_OK)
 			slot->login_user = userType;
 	}
 
-      out:sc_pkcs11_unlock();
+out:
+	sc_pkcs11_unlock();
 	return rv;
 }
 
@@ -326,6 +333,7 @@ CK_RV C_InitPIN(CK_SESSION_HANDLE hSession, CK_CHAR_PTR pPin, CK_ULONG ulPinLen)
 	struct sc_pkcs11_session *session;
 	struct sc_pkcs11_slot *slot;
 
+	sc_log(context, "C_InitPIN() called, pin '%s'", pPin ? (char *) pPin : "<null>");
 	if (pPin == NULL_PTR && ulPinLen > 0)
 		return CKR_ARGUMENTS_BAD;
 
@@ -351,9 +359,11 @@ CK_RV C_InitPIN(CK_SESSION_HANDLE hSession, CK_CHAR_PTR pPin, CK_ULONG ulPinLen)
 		rv = CKR_FUNCTION_NOT_SUPPORTED;
 	} else {
 		rv = slot->card->framework->init_pin(slot, pPin, ulPinLen);
+		sc_log(context, "C_InitPIN() init-pin result %li", rv);
 	}
 
-      out:sc_pkcs11_unlock();
+out:
+	sc_pkcs11_unlock();
 	return rv;
 }
 
diff --git a/src/pkcs11/sc-pkcs11.h b/src/pkcs11/sc-pkcs11.h
index ae7d41b..3783fde 100644
--- a/src/pkcs11/sc-pkcs11.h
+++ b/src/pkcs11/sc-pkcs11.h
@@ -23,10 +23,6 @@
 
 #include "config.h"
 
-#ifdef HAVE_MALLOC_H
-#include <malloc.h>
-#endif
-
 #include "libopensc/opensc.h"
 #include "libopensc/pkcs15.h"
 #include "libopensc/log.h"
@@ -86,6 +82,7 @@ struct sc_pkcs11_config {
 	unsigned int create_puk_slot;
 	unsigned int zero_ckaid_for_ca_certs;
 	unsigned int create_slots_flags;
+	unsigned char ignore_pin_length;
 };
 
 /*
@@ -163,12 +160,10 @@ struct sc_pkcs11_framework_ops {
 	CK_RV (*change_pin)(struct sc_pkcs11_slot *,
 				CK_CHAR_PTR, CK_ULONG,
 				CK_CHAR_PTR, CK_ULONG);
-
 	/*
-	 * In future: functions to create new objects
-	 * (ie. certificates, private keys)
+	 * In future: functions to create new objects (ie. certificates, private keys)
 	 */
-	CK_RV (*init_token)(struct sc_pkcs11_card *, void *,
+	CK_RV (*init_token)(struct sc_pkcs11_slot *, void *,
 				CK_UTF8CHAR_PTR, CK_ULONG,
 				CK_UTF8CHAR_PTR);
 	CK_RV (*init_pin)(struct sc_pkcs11_slot *,
diff --git a/src/pkcs11/slot.c b/src/pkcs11/slot.c
index cd181c8..87b1e3d 100644
--- a/src/pkcs11/slot.c
+++ b/src/pkcs11/slot.c
@@ -2,7 +2,7 @@
  * slot.c: reader, smart card and slot related management functions
  *
  * Copyright (C) 2002  Timo Teräs <timo.teras at iki.fi>
- * Copyright (C) 2009 Martin Paljak <martin at paljak.pri.ee>
+ * Copyright (C) 2009 Martin Paljak <martin at martinpaljak.net>
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
@@ -43,9 +43,8 @@ static struct sc_pkcs11_slot * reader_get_slot(sc_reader_t *reader)
 	/* Locate a slot related to the reader */
 	for (i = 0; i<list_size(&virtual_slots); i++) {
 		sc_pkcs11_slot_t *slot = (sc_pkcs11_slot_t *) list_get_at(&virtual_slots, i);
-		if (slot->reader == reader) {
+		if (slot->reader == reader)
 			return slot;
-		}
 	}
 	return NULL;
 }
@@ -97,6 +96,7 @@ CK_RV create_slot(sc_reader_t *reader)
 		slot->reader = reader;
 		strcpy_bp(slot->slot_info.slotDescription, reader->name, 64);
 	}
+
 	return CKR_OK;
 }
 
@@ -128,10 +128,13 @@ CK_RV initialize_reader(sc_reader_t *reader)
 			return rv;
 	}
 
-	if (sc_detect_card_presence(reader)) {
+	sc_log(context, "Initialize reader '%s': detect SC card presence", reader->name);
+	if (sc_detect_card_presence(reader))   {
+		sc_log(context, "Initialize reader '%s': detect PKCS11 card presence", reader->name);
 		card_detect(reader);
 	}
 
+	sc_log(context, "Reader '%s' initialized", reader->name);
 	return CKR_OK;
 }
 
@@ -180,8 +183,10 @@ CK_RV card_removed(sc_reader_t * reader)
 CK_RV card_detect(sc_reader_t *reader)
 {
 	struct sc_pkcs11_card *p11card = NULL;
-	int rc, rv;
-	unsigned int i, j;
+	int rc;
+	CK_RV rv;
+	unsigned int i;
+	int j;
 
 	rv = CKR_OK;
 
@@ -232,8 +237,12 @@ again:
 	if (p11card->card == NULL) {
 		sc_log(context, "%s: Connecting ... ", reader->name);
 		rc = sc_connect_card(reader, &p11card->card);
-		if (rc != SC_SUCCESS)
+		if (rc != SC_SUCCESS)   {
+			sc_log(context, "%s: SC connect card error %i", reader->name, rc);
 			return sc_to_cryptoki_error(rc, NULL);
+		}
+
+		sc_log(context, "%s: Connected SC card %p", reader->name, p11card->card);
 	}
 
 	/* Detect the framework */
@@ -251,21 +260,34 @@ again:
 		if (frameworks[i] == NULL)
 			return CKR_GENERAL_ERROR;
 
+		p11card->framework = frameworks[i];
+
 		/* Initialize framework */
 		sc_log(context, "%s: Detected framework %d. Creating tokens.", reader->name, i);
-		/* Bind firstly 'generic' application or (emulated?) card without applications */
+		/* Bind 'generic' application or (emulated?) card without applications */
 		if (app_generic || !p11card->card->app_count)   {
+			scconf_block *atrblock = NULL;
+			int enable_InitToken = 0;
+
+			atrblock = sc_match_atr_block(p11card->card->ctx, NULL, &p11card->reader->atr);
+			if (atrblock)
+				enable_InitToken = scconf_get_bool(atrblock, "pkcs11_enable_InitToken", 0);
+
 			sc_log(context, "%s: Try to bind 'generic' token.", reader->name);
 			rv = frameworks[i]->bind(p11card, app_generic);
+			if (rv == CKR_TOKEN_NOT_RECOGNIZED && enable_InitToken)   {
+				sc_log(context, "%s: 'InitToken' enabled -- accept non-binded card", reader->name);
+				rv = CKR_OK;
+			}
 			if (rv != CKR_OK)   {
-				sc_log(context, "%s: cannot bind 'generic' token.", reader->name);
+				sc_log(context, "%s: cannot bind 'generic' token: rv 0x%X", reader->name, rv);
 				return rv;
 			}
 
 			sc_log(context, "%s: Creating 'generic' token.", reader->name);
 			rv = frameworks[i]->create_tokens(p11card, app_generic, &first_slot);
 			if (rv != CKR_OK)   {
-				sc_log(context, "%s: cannot create 'generic' token.", reader->name);
+				sc_log(context, "%s: create 'generic' token error 0x%X", reader->name, rv);
 				return rv;
 			}
 		}
@@ -281,35 +303,39 @@ again:
 			sc_log(context, "%s: Binding %s token.", reader->name, app_name);
 			rv = frameworks[i]->bind(p11card, app_info);
 			if (rv != CKR_OK)   {
-				sc_log(context, "%s: cannot bind %s token.", reader->name, app_name);
+				sc_log(context, "%s: bind %s token error Ox%X", reader->name, app_name, rv);
 				continue;
 			}
 
 			sc_log(context, "%s: Creating %s token.", reader->name, app_name);
 			rv = frameworks[i]->create_tokens(p11card, app_info, &first_slot);
 			if (rv != CKR_OK)   {
-				sc_log(context, "%s: cannot create %s token.", reader->name, app_name);
+				sc_log(context, "%s: create %s token error 0x%X", reader->name, app_name, rv);
 				return rv;
 			}
 		}
-
-		p11card->framework = frameworks[i];
 	}
+
 	sc_log(context, "%s: Detection ended", reader->name);
 	return CKR_OK;
 }
 
-CK_RV card_detect_all(void) {
-	 unsigned int i;
-
-	 /* Detect cards in all initialized readers */
-	 for (i=0; i< sc_ctx_get_reader_count(context); i++) {
-		 sc_reader_t *reader = sc_ctx_get_reader(context, i);
-		 if (!reader_get_slot(reader))
-			 initialize_reader(reader);
-		 card_detect(sc_ctx_get_reader(context, i));
-	 }
-	 return CKR_OK;
+
+CK_RV
+card_detect_all(void)
+{
+	unsigned int i;
+
+	sc_log(context, "Detect all cards");
+	/* Detect cards in all initialized readers */
+	for (i=0; i< sc_ctx_get_reader_count(context); i++) {
+		sc_reader_t *reader = sc_ctx_get_reader(context, i);
+		if (!reader_get_slot(reader))
+			initialize_reader(reader);
+		card_detect(sc_ctx_get_reader(context, i));
+	}
+	sc_log(context, "All cards detected");
+	return CKR_OK;
 }
 
 /* Allocates an existing slot to a card */
@@ -326,8 +352,7 @@ CK_RV slot_allocate(struct sc_pkcs11_slot ** slot, struct sc_pkcs11_card * card)
 	}
 	if (!tmp_slot || (i == list_size(&virtual_slots)))
 		return CKR_FUNCTION_FAILED;
-	sc_log(context, "Allocated slot 0x%lx for card in reader %s", tmp_slot->id,
-		 card->reader->name);
+	sc_log(context, "Allocated slot 0x%lx for card in reader %s", tmp_slot->id, card->reader->name);
 	tmp_slot->card = card;
 	tmp_slot->events = SC_EVENT_CARD_INSERTED;
 	*slot = tmp_slot;
@@ -349,6 +374,7 @@ CK_RV slot_get_token(CK_SLOT_ID id, struct sc_pkcs11_slot ** slot)
 {
 	int rv;
 
+	sc_log(context, "Slot(id=0x%lX): get token", id);
 	rv = slot_get_slot(id, slot);
 	if (rv != CKR_OK)
 		return rv;
@@ -356,6 +382,7 @@ CK_RV slot_get_token(CK_SLOT_ID id, struct sc_pkcs11_slot ** slot)
 	if (!((*slot)->slot_info.flags & CKF_TOKEN_PRESENT)) {
 		if ((*slot)->reader == NULL)
 			return CKR_TOKEN_NOT_PRESENT;
+		sc_log(context, "Slot(id=0x%lX): get token: now detect card", id);
 		rv = card_detect((*slot)->reader);
 		if (rv != CKR_OK)
 			return rv;
@@ -365,6 +392,7 @@ CK_RV slot_get_token(CK_SLOT_ID id, struct sc_pkcs11_slot ** slot)
 		sc_log(context, "card detected, but slot not presenting token");
 		return CKR_TOKEN_NOT_PRESENT;
 	}
+	sc_log(context, "Slot-get-token returns OK");
 	return CKR_OK;
 }
 
diff --git a/src/pkcs11/versioninfo-pkcs11-spy.rc.in b/src/pkcs11/versioninfo-pkcs11-spy.rc.in
new file mode 100644
index 0000000..a4a1a28
--- /dev/null
+++ b/src/pkcs11/versioninfo-pkcs11-spy.rc.in
@@ -0,0 +1,38 @@
+#include <winresrc.h>
+
+VS_VERSION_INFO VERSIONINFO
+	FILEVERSION @OPENSC_VERSION_MAJOR@, at OPENSC_VERSION_MINOR@, at OPENSC_VERSION_FIX@, at OPENSC_VERSION_REVISION@
+	PRODUCTVERSION @OPENSC_VERSION_MAJOR@, at OPENSC_VERSION_MINOR@, at OPENSC_VERSION_FIX@, at OPENSC_VERSION_REVISION@
+	FILEFLAGSMASK 0x3fL
+#ifdef _DEBUG
+	FILEFLAGS 0x21L
+#else
+	FILEFLAGS 0x20L
+#endif
+	FILEOS 0x40004L
+	FILETYPE 0x2L
+	FILESUBTYPE 0x0L
+BEGIN
+	BLOCK "StringFileInfo"
+	BEGIN
+		BLOCK "040904b0"
+		BEGIN
+			VALUE "Comments", "@OPENSC_VS_FF_COMMENTS@"
+			VALUE "CompanyName", "@OPENSC_VS_FF_COMPANY_NAME@"
+			VALUE "FileVersion", "@OPENSC_VERSION_MAJOR at .@OPENSC_VERSION_MINOR at .@OPENSC_VERSION_FIX at .@OPENSC_VERSION_REVISION@"
+			VALUE "InternalName", "@PACKAGE_NAME@"
+			VALUE "LegalCopyright", "@OPENSC_VS_FF_LEGAL_COPYRIGHT@"
+			VALUE "LegalTrademarks", ""
+			VALUE "PrivateBuild", ""
+			VALUE "ProductName", "@OPENSC_VS_FF_PRODUCT_NAME@"
+			VALUE "ProductVersion", "@OPENSC_VERSION_MAJOR@, at OPENSC_VERSION_MINOR@, at OPENSC_VERSION_FIX@, at OPENSC_VERSION_REVISION@"
+			VALUE "SpecialBuild", ""
+			VALUE "FileDescription", "OpenSC PKCS#11 spy module"
+		END
+	END
+	BLOCK "VarFileInfo"
+	BEGIN
+		VALUE "Translation", 0x409, 1200
+	END
+END
+
diff --git a/src/pkcs11/versioninfo-pkcs11.rc.in b/src/pkcs11/versioninfo-pkcs11.rc.in
new file mode 100644
index 0000000..e8bc91d
--- /dev/null
+++ b/src/pkcs11/versioninfo-pkcs11.rc.in
@@ -0,0 +1,38 @@
+#include <winresrc.h>
+
+VS_VERSION_INFO VERSIONINFO
+	FILEVERSION @OPENSC_VERSION_MAJOR@, at OPENSC_VERSION_MINOR@, at OPENSC_VERSION_FIX@, at OPENSC_VERSION_REVISION@
+	PRODUCTVERSION @OPENSC_VERSION_MAJOR@, at OPENSC_VERSION_MINOR@, at OPENSC_VERSION_FIX@, at OPENSC_VERSION_REVISION@
+	FILEFLAGSMASK 0x3fL
+#ifdef _DEBUG
+	FILEFLAGS 0x21L
+#else
+	FILEFLAGS 0x20L
+#endif
+	FILEOS 0x40004L
+	FILETYPE 0x2L
+	FILESUBTYPE 0x0L
+BEGIN
+	BLOCK "StringFileInfo"
+	BEGIN
+		BLOCK "040904b0"
+		BEGIN
+			VALUE "Comments", "@OPENSC_VS_FF_COMMENTS@"
+			VALUE "CompanyName", "@OPENSC_VS_FF_COMPANY_NAME@"
+			VALUE "FileVersion", "@OPENSC_VERSION_MAJOR at .@OPENSC_VERSION_MINOR at .@OPENSC_VERSION_FIX at .@OPENSC_VERSION_REVISION@"
+			VALUE "InternalName", "@PACKAGE_NAME@"
+			VALUE "LegalCopyright", "@OPENSC_VS_FF_LEGAL_COPYRIGHT@"
+			VALUE "LegalTrademarks", ""
+			VALUE "PrivateBuild", ""
+			VALUE "ProductName", "@OPENSC_VS_FF_PRODUCT_NAME@"
+			VALUE "ProductVersion", "@OPENSC_VERSION_MAJOR@, at OPENSC_VERSION_MINOR@, at OPENSC_VERSION_FIX@, at OPENSC_VERSION_REVISION@"
+			VALUE "SpecialBuild", ""
+			VALUE "FileDescription", "OpenSC PKCS#11 module"
+		END
+	END
+	BLOCK "VarFileInfo"
+	BEGIN
+		VALUE "Translation", 0x409, 1200
+	END
+END
+
diff --git a/src/pkcs15init/Makefile.in b/src/pkcs15init/Makefile.in
deleted file mode 100644
index 9ee8456..0000000
--- a/src/pkcs15init/Makefile.in
+++ /dev/null
@@ -1,673 +0,0 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
- at SET_MAKE@
-
-# Required to build Windows resource file
-
-
-
-VPATH = @srcdir@
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-DIST_COMMON = README $(dist_pkgdata_DATA) $(noinst_HEADERS) \
-	$(srcdir)/Makefile.am $(srcdir)/Makefile.in \
-	$(top_srcdir)/win32/ltrc.inc
-subdir = src/pkcs15init
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_pthread.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-LTLIBRARIES = $(noinst_LTLIBRARIES)
-libpkcs15init_la_LIBADD =
-am_libpkcs15init_la_OBJECTS = pkcs15-lib.lo profile.lo \
-	pkcs15-westcos.lo pkcs15-gpk.lo pkcs15-miocos.lo \
-	pkcs15-cflex.lo pkcs15-cardos.lo pkcs15-jcop.lo \
-	pkcs15-starcos.lo pkcs15-setcos.lo pkcs15-incrypto34.lo \
-	pkcs15-muscle.lo pkcs15-asepcos.lo pkcs15-rutoken.lo \
-	pkcs15-entersafe.lo pkcs15-epass2003.lo pkcs15-rtecp.lo \
-	pkcs15-myeid.lo pkcs15-oberthur.lo pkcs15-oberthur-awp.lo \
-	pkcs15-authentic.lo pkcs15-iasecc.lo pkcs15-openpgp.lo \
-	pkcs15-sc-hsm.lo
-libpkcs15init_la_OBJECTS = $(am_libpkcs15init_la_OBJECTS)
-AM_V_lt = $(am__v_lt_$(V))
-am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
-am__v_lt_0 = --silent
-DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
-depcomp = $(SHELL) $(top_srcdir)/depcomp
-am__depfiles_maybe = depfiles
-am__mv = mv -f
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
-	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
-	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
-	$(AM_CFLAGS) $(CFLAGS)
-AM_V_CC = $(am__v_CC_$(V))
-am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
-am__v_CC_0 = @echo "  CC    " $@;
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
-am__v_at_0 = @
-CCLD = $(CC)
-LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CCLD = $(am__v_CCLD_$(V))
-am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
-am__v_CCLD_0 = @echo "  CCLD  " $@;
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo "  GEN   " $@;
-SOURCES = $(libpkcs15init_la_SOURCES)
-DIST_SOURCES = $(libpkcs15init_la_SOURCES)
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
-  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
-  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
-  for p in $$list; do echo "$$p $$p"; done | \
-  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
-  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
-    if (++n[$$2] == $(am__install_max)) \
-      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
-    END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
-  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
-  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__installdirs = "$(DESTDIR)$(pkgdatadir)"
-DATA = $(dist_pkgdata_DATA)
-HEADERS = $(noinst_HEADERS)
-ETAGS = etags
-CTAGS = ctags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AR = @AR@
-AS = @AS@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEBUG_FILE = @DEBUG_FILE@
-DEFAULT_PCSC_PROVIDER = @DEFAULT_PCSC_PROVIDER@
-DEFAULT_SM_MODULE = @DEFAULT_SM_MODULE@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DLLTOOL = @DLLTOOL@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-FGREP = @FGREP@
-GIT = @GIT@
-GREP = @GREP@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBOBJS = @LIBOBJS@
-LIBRARY_BITNESS = @LIBRARY_BITNESS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-NM = @NM@
-NMEDIT = @NMEDIT@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OPENCT_CFLAGS = @OPENCT_CFLAGS@
-OPENCT_LIBS = @OPENCT_LIBS@
-OPENSC_LT_AGE = @OPENSC_LT_AGE@
-OPENSC_LT_CURRENT = @OPENSC_LT_CURRENT@
-OPENSC_LT_OLDEST = @OPENSC_LT_OLDEST@
-OPENSC_LT_REVISION = @OPENSC_LT_REVISION@
-OPENSC_VERSION_FIX = @OPENSC_VERSION_FIX@
-OPENSC_VERSION_MAJOR = @OPENSC_VERSION_MAJOR@
-OPENSC_VERSION_MINOR = @OPENSC_VERSION_MINOR@
-OPENSSL_CFLAGS = @OPENSSL_CFLAGS@
-OPENSSL_LIBS = @OPENSSL_LIBS@
-OPTIONAL_OPENCT_CFLAGS = @OPTIONAL_OPENCT_CFLAGS@
-OPTIONAL_OPENCT_LIBS = @OPTIONAL_OPENCT_LIBS@
-OPTIONAL_OPENSSL_CFLAGS = @OPTIONAL_OPENSSL_CFLAGS@
-OPTIONAL_OPENSSL_LIBS = @OPTIONAL_OPENSSL_LIBS@
-OPTIONAL_PCSC_CFLAGS = @OPTIONAL_PCSC_CFLAGS@
-OPTIONAL_READLINE_CFLAGS = @OPTIONAL_READLINE_CFLAGS@
-OPTIONAL_READLINE_LIBS = @OPTIONAL_READLINE_LIBS@
-OPTIONAL_ZLIB_CFLAGS = @OPTIONAL_ZLIB_CFLAGS@
-OPTIONAL_ZLIB_LIBS = @OPTIONAL_ZLIB_LIBS@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PCSC_CFLAGS = @PCSC_CFLAGS@
-PCSC_LIBS = @PCSC_LIBS@
-PKG_CONFIG = @PKG_CONFIG@
-PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
-PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
-PTHREAD_CC = @PTHREAD_CC@
-PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
-PTHREAD_LIBS = @PTHREAD_LIBS@
-RANLIB = @RANLIB@
-RC = @RC@
-READLINE_CFLAGS = @READLINE_CFLAGS@
-READLINE_LIBS = @READLINE_LIBS@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-WIN_LIBPREFIX = @WIN_LIBPREFIX@
-XSLTPROC = @XSLTPROC@
-ZLIB_CFLAGS = @ZLIB_CFLAGS@
-ZLIB_LIBS = @ZLIB_LIBS@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-ax_pthread_config = @ax_pthread_config@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-git = @git@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-pkcs11dir = @pkcs11dir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-xslstylesheetsdir = @xslstylesheetsdir@
-RCCOMPILE = $(RC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS)
-
-LTRCCOMPILE = $(LIBTOOL) --mode=compile --tag=RC $(RCCOMPILE)
-MAINTAINERCLEANFILES = $(srcdir)/Makefile.in
-EXTRA_DIST = Makefile.mak
-noinst_LTLIBRARIES = libpkcs15init.la
-noinst_HEADERS = profile.h pkcs15-init.h pkcs15-oberthur.h
-dist_pkgdata_DATA = \
-	cyberflex.profile \
-	flex.profile \
-	gpk.profile \
-	miocos.profile \
-	cardos.profile \
-	incrypto34.profile \
-	jcop.profile \
-	oberthur.profile \
-	starcos.profile \
-	setcos.profile \
-	pkcs15.profile \
-	muscle.profile \
-	rutoken.profile \
-	asepcos.profile \
-	entersafe.profile \
-	epass2003.profile \
-	rutoken_ecp.profile \
-	westcos.profile \
-	myeid.profile \
-	authentic.profile \
-	iasecc.profile \
-	ias_adele_admin1.profile ias_adele_admin2.profile ias_adele_common.profile \
-	iasecc_generic_pki.profile iasecc_admin_eid.profile iasecc_generic_oberthur.profile \
-	openpgp.profile sc-hsm.profile
-
-AM_CPPFLAGS = -DSC_PKCS15_PROFILE_DIRECTORY=\"$(pkgdatadir)\" \
-	-I$(top_srcdir)/src
-
-AM_CFLAGS = $(OPTIONAL_OPENSSL_CFLAGS)
-libpkcs15init_la_SOURCES = \
-	pkcs15-lib.c profile.c \
-	pkcs15-westcos.c \
-	pkcs15-gpk.c pkcs15-miocos.c pkcs15-cflex.c \
-	pkcs15-cardos.c pkcs15-jcop.c pkcs15-starcos.c \
-	pkcs15-setcos.c pkcs15-incrypto34.c pkcs15-muscle.c \
-	pkcs15-asepcos.c pkcs15-rutoken.c \
-	pkcs15-entersafe.c pkcs15-epass2003.c \
-	pkcs15-rtecp.c pkcs15-myeid.c \
-	pkcs15-oberthur.c pkcs15-oberthur-awp.c \
-	pkcs15-authentic.c pkcs15-iasecc.c pkcs15-openpgp.c \
-	pkcs15-sc-hsm.c
-
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .c .lo .o .obj .rc
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am $(top_srcdir)/win32/ltrc.inc $(am__configure_deps)
-	@for dep in $?; do \
-	  case '$(am__configure_deps)' in \
-	    *$$dep*) \
-	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
-	        && { if test -f $@; then exit 0; else break; fi; }; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/pkcs15init/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --foreign src/pkcs15init/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-	@case '$?' in \
-	  *config.status*) \
-	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-	esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure:  $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-
-clean-noinstLTLIBRARIES:
-	-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
-	@list='$(noinst_LTLIBRARIES)'; for p in $$list; do \
-	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
-	  test "$$dir" != "$$p" || dir=.; \
-	  echo "rm -f \"$${dir}/so_locations\""; \
-	  rm -f "$${dir}/so_locations"; \
-	done
-libpkcs15init.la: $(libpkcs15init_la_OBJECTS) $(libpkcs15init_la_DEPENDENCIES) 
-	$(AM_V_CCLD)$(LINK)  $(libpkcs15init_la_OBJECTS) $(libpkcs15init_la_LIBADD) $(LIBS)
-
-mostlyclean-compile:
-	-rm -f *.$(OBJEXT)
-
-distclean-compile:
-	-rm -f *.tab.c
-
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pkcs15-asepcos.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pkcs15-authentic.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pkcs15-cardos.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pkcs15-cflex.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pkcs15-entersafe.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pkcs15-epass2003.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pkcs15-gpk.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pkcs15-iasecc.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pkcs15-incrypto34.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pkcs15-jcop.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pkcs15-lib.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pkcs15-miocos.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pkcs15-muscle.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pkcs15-myeid.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pkcs15-oberthur-awp.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pkcs15-oberthur.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pkcs15-openpgp.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pkcs15-rtecp.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pkcs15-rutoken.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pkcs15-sc-hsm.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pkcs15-setcos.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pkcs15-starcos.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pkcs15-westcos.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/profile.Plo at am__quote@
-
-.c.o:
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(COMPILE) -c $<
-
-.c.obj:
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
-
-.c.lo:
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
- at am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $<
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-install-dist_pkgdataDATA: $(dist_pkgdata_DATA)
-	@$(NORMAL_INSTALL)
-	test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)"
-	@list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgdatadir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgdatadir)" || exit $$?; \
-	done
-
-uninstall-dist_pkgdataDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	test -n "$$files" || exit 0; \
-	echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \
-	cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files
-
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	set x; \
-	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	shift; \
-	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
-	  test -n "$$unique" || unique=$$empty_fix; \
-	  if test $$# -gt 0; then \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      "$$@" $$unique; \
-	  else \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      $$unique; \
-	  fi; \
-	fi
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	test -z "$(CTAGS_ARGS)$$unique" \
-	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$unique
-
-GTAGS:
-	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && $(am__cd) $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) "$$here"
-
-distclean-tags:
-	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d "$(distdir)/$$file"; then \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-	  else \
-	    test -f "$(distdir)/$$file" \
-	    || cp -p $$d/$$file "$(distdir)/$$file" \
-	    || exit 1; \
-	  fi; \
-	done
-check-am: all-am
-check: check-am
-all-am: Makefile $(LTLIBRARIES) $(DATA) $(HEADERS)
-installdirs:
-	for dir in "$(DESTDIR)$(pkgdatadir)"; do \
-	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
-	done
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
-	@echo "This command is intended for maintainers to use"
-	@echo "it deletes files that may require special tools to rebuild."
-	-test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
-clean: clean-am
-
-clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
-	mostlyclean-am
-
-distclean: distclean-am
-	-rm -rf ./$(DEPDIR)
-	-rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
-	distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am: install-dist_pkgdataDATA
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am:
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
-	-rm -rf ./$(DEPDIR)
-	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-compile mostlyclean-generic \
-	mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-dist_pkgdataDATA
-
-.MAKE: install-am install-strip
-
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
-	clean-libtool clean-noinstLTLIBRARIES ctags distclean \
-	distclean-compile distclean-generic distclean-libtool \
-	distclean-tags distdir dvi dvi-am html html-am info info-am \
-	install install-am install-data install-data-am \
-	install-dist_pkgdataDATA install-dvi install-dvi-am \
-	install-exec install-exec-am install-html install-html-am \
-	install-info install-info-am install-man install-pdf \
-	install-pdf-am install-ps install-ps-am install-strip \
-	installcheck installcheck-am installdirs maintainer-clean \
-	maintainer-clean-generic mostlyclean mostlyclean-compile \
-	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-	tags uninstall uninstall-am uninstall-dist_pkgdataDATA
-
-
-.rc.lo:
-	$(LTRCCOMPILE) -i "$<" -o "$@"
-
-.rc.o:
-	$(RCCOMPILE) -i "$<" -o "$@"
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/src/pkcs15init/myeid.profile b/src/pkcs15init/myeid.profile
index 46ae44c..8b84c95 100644
--- a/src/pkcs15init/myeid.profile
+++ b/src/pkcs15init/myeid.profile
@@ -201,7 +201,7 @@ filesystem {
                     acl       = READ=$PIN, UPDATE=$PIN, DELETE=$PIN;
                 }
                 EF data {
-                    file-id   = 4501;
+                    file-id   = 4601;
                     structure = transparent;
                     acl       = READ=NONE, UPDATE=$PIN, DELETE=$PIN;
                 }
diff --git a/src/pkcs15init/pkcs15-asepcos.c b/src/pkcs15init/pkcs15-asepcos.c
index 86d3159..547b48f 100644
--- a/src/pkcs15init/pkcs15-asepcos.c
+++ b/src/pkcs15init/pkcs15-asepcos.c
@@ -577,12 +577,20 @@ static int asepcos_create_key(sc_profile_t *profile, sc_pkcs15_card_t *p15card,
 	                   kinfo->path.value[kinfo->path.len-1];
 
 	if (obj->auth_id.len != 0) {
-		/* the key is proctected by a PIN */
-		/* XXX use the pkcs15 structures for this */
+		/* the key is protected by a PIN */
+		sc_pkcs15_object_t *pin;
+		struct sc_pkcs15_auth_info *auth_info;
 		sc_cardctl_asepcos_akn2fileid_t st;
 
-		st.akn = sc_pkcs15init_get_pin_reference(p15card, profile,
-			                        SC_AC_SYMBOLIC, SC_PKCS15INIT_USER_PIN);
+		r = sc_pkcs15_find_pin_by_auth_id(p15card, &obj->auth_id, &pin);
+		if (r != SC_SUCCESS) {
+			sc_debug(p15card->card->ctx, SC_LOG_DEBUG_NORMAL, "unable to determine reference for the PIN");
+			return r;
+		}
+
+		auth_info = (struct sc_pkcs15_auth_info *)pin->data;
+
+		st.akn = auth_info->attrs.pin.reference;
 		r = sc_card_ctl(p15card->card, SC_CARDCTL_ASEPCOS_AKN2FILEID, &st);
 		if (r != SC_SUCCESS) {
 			sc_debug(p15card->card->ctx, SC_LOG_DEBUG_NORMAL, "unable to determine file id of the PIN");
diff --git a/src/pkcs15init/pkcs15-authentic.c b/src/pkcs15init/pkcs15-authentic.c
index d809363..cdead03 100644
--- a/src/pkcs15init/pkcs15-authentic.c
+++ b/src/pkcs15init/pkcs15-authentic.c
@@ -599,6 +599,8 @@ authentic_pkcs15_generate_key(struct sc_profile *profile, sc_pkcs15_card_t *p15c
 	struct sc_pkcs15_prkey_info *key_info = (struct sc_pkcs15_prkey_info *) object->data;
 	size_t keybits = key_info->modulus_length;
 	struct sc_authentic_sdo *sdo = NULL;
+	unsigned char *tmp = NULL;
+	size_t tmp_len;
 	unsigned long caps;
 	int rv;
 
@@ -635,18 +637,20 @@ authentic_pkcs15_generate_key(struct sc_profile *profile, sc_pkcs15_card_t *p15c
 	pubkey->u.rsa.exponent = sdo->data.prvkey->u.rsa.exponent;
 	sdo->data.prvkey = NULL;
 
-	rv = sc_pkcs15_encode_pubkey(ctx, pubkey, &pubkey->data.value, &pubkey->data.len);
+	rv = sc_pkcs15_encode_pubkey(ctx, pubkey, &tmp, &tmp_len);
 	LOG_TEST_RET(ctx, rv, "encode public key failed");
 
-	/* Here fix the key's supported algorithms, if these ones will be implemented
+	/*
+	 * Here algorithms supported by key have to be fixed, if it will be implemented
 	 * (see src/libopensc/pkcs15-prkey.c).
 	 */
 
 	authentic_free_sdo_data(sdo);
 
-	rv = sc_pkcs15_allocate_object_content(ctx, object, pubkey->data.value, pubkey->data.len);
+	rv = sc_pkcs15_allocate_object_content(ctx, object, tmp, tmp_len);
 	LOG_TEST_RET(ctx, rv, "Failed to allocate public key as object content");
 
+	free(tmp);
 	LOG_FUNC_RETURN(ctx, rv);
 }
 
diff --git a/src/pkcs15init/pkcs15-cardos.c b/src/pkcs15init/pkcs15-cardos.c
index 6d5780f..9d1f658 100644
--- a/src/pkcs15init/pkcs15-cardos.c
+++ b/src/pkcs15init/pkcs15-cardos.c
@@ -165,19 +165,20 @@ cardos_select_pin_reference(sc_profile_t *profile, sc_pkcs15_card_t *p15card,
 
 	if (auth_info->attrs.pin.flags & SC_PKCS15_PIN_FLAG_SO_PIN) {
 		preferred = 1;
+		if (current > preferred)
+			return SC_ERROR_TOO_MANY_OBJECTS;
 	} else {
 		preferred = current;
 		/* PINs are even numbered, PUKs are odd */
 		if (!(preferred & 1))
 			preferred++;
-		if (preferred >= 126)
-			return SC_ERROR_TOO_MANY_OBJECTS;
 	}
 
-	if (current > preferred || preferred > CARDOS_PIN_ID_MAX)
+	if (preferred > CARDOS_PIN_ID_MAX)
 		return SC_ERROR_TOO_MANY_OBJECTS;
 	auth_info->attrs.pin.reference = preferred;
-	return 0;
+
+	return SC_SUCCESS;
 }
 
 /*
diff --git a/src/pkcs15init/pkcs15-epass2003.c b/src/pkcs15init/pkcs15-epass2003.c
index 930da88..a457ec9 100644
--- a/src/pkcs15init/pkcs15-epass2003.c
+++ b/src/pkcs15init/pkcs15-epass2003.c
@@ -507,6 +507,12 @@ static int epass2003_pkcs15_generate_key(struct sc_profile *profile,
 		 sc_print_path(&file->path));
 	sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL, "private key_info path: %s",
 		 sc_print_path(&(key_info->path)));
+
+	r = sc_pkcs15init_authenticate(profile, p15card, file,
+				       SC_AC_OP_DELETE);
+	SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, r,
+		    "generate key: pkcs15init_authenticate(SC_AC_OP_DELETE) failed");
+
 	r = sc_delete_file(p15card->card, &file->path);
 	/* create */
 	r = sc_pkcs15init_create_file(profile, p15card, file);
@@ -558,6 +564,11 @@ static int epass2003_pkcs15_generate_key(struct sc_profile *profile,
 	r = sc_select_file(p15card->card, &pukf->path, NULL);
 	/* if exist, delete */
 	if (r == SC_SUCCESS) {
+		r = sc_pkcs15init_authenticate(profile, p15card, pukf,
+		       SC_AC_OP_DELETE);
+		SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, r,
+		    "generate key - pubkey: pkcs15init_authenticate(SC_AC_OP_DELETE) failed");
+
 		r = sc_pkcs15init_delete_by_path(profile, p15card, &pukf->path);
 		if (r != SC_SUCCESS) {
 			sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL,
@@ -573,6 +584,11 @@ static int epass2003_pkcs15_generate_key(struct sc_profile *profile,
 		goto failed;
 	}
 
+	r = sc_pkcs15init_authenticate(profile, p15card, pukf,
+				       SC_AC_OP_UPDATE);
+	SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, r,
+		    "generate key - pubkey: pkcs15init_authenticate(SC_AC_OP_UPDATE) failed");
+
 	/* generate key pair */
 	fidl = (file->id & 0xff) * FID_STEP;
 	file->id = (file->id & 0xff00) + fidl;
diff --git a/src/pkcs15init/pkcs15-iasecc.c b/src/pkcs15init/pkcs15-iasecc.c
index d14bc21..7df8103 100644
--- a/src/pkcs15init/pkcs15-iasecc.c
+++ b/src/pkcs15init/pkcs15-iasecc.c
@@ -324,7 +324,10 @@ iasecc_file_convert_acls(struct sc_context *ctx, struct sc_profile *profile, str
 	int ii;
 
 	for (ii=0; ii<SC_MAX_AC_OPS;ii++)   {
-		struct sc_acl_entry *acl = sc_file_get_acl_entry(file, ii);
+		/* FIXME the acl object must not be modified, it is only defined in
+		 * sc_file_get_acl_entry. Accessing it here means we have a race
+		 * condition. */
+		struct sc_acl_entry *acl = (struct sc_acl_entry *) sc_file_get_acl_entry(file, ii);
 
 		if (acl)   {
 			switch (acl->method)   {
@@ -415,7 +418,7 @@ iasecc_sdo_set_key_acls_from_profile(struct sc_profile *profile, struct sc_card
 	sdo->docp.acls_contact.size = cntr + 1;
 	sdo->docp.acls_contact.value = calloc(1, sdo->docp.acls_contact.size);
 	if (!sdo->docp.acls_contact.value)
-		return SC_ERROR_MEMORY_FAILURE;
+		return SC_ERROR_OUT_OF_MEMORY;
 	*(sdo->docp.acls_contact.value + 0) = amb;
 	memcpy(sdo->docp.acls_contact.value + 1, scb, cntr);
 
@@ -438,7 +441,7 @@ iasecc_sdo_allocate_prvkey(struct sc_profile *profile, struct sc_card *card,
 
 	sdo = calloc(1, sizeof(struct iasecc_sdo));
 	if (!sdo)
-		LOG_TEST_RET(ctx, SC_ERROR_MEMORY_FAILURE, "Cannot allocate 'iasecc_sdo'");
+		LOG_TEST_RET(ctx, SC_ERROR_OUT_OF_MEMORY, "Cannot allocate 'iasecc_sdo'");
 
 	sdo->magic = SC_CARDCTL_IASECC_SDO_MAGIC;
 	sdo->sdo_ref = key_info->key_reference & 0x3F;
@@ -458,19 +461,19 @@ iasecc_sdo_allocate_prvkey(struct sc_profile *profile, struct sc_card *card,
 
 		sdo->docp.non_repudiation.value = calloc(1, 1);
 		if (!sdo->docp.non_repudiation.value)
-			LOG_FUNC_RETURN(ctx, SC_ERROR_MEMORY_FAILURE);
+			LOG_FUNC_RETURN(ctx, SC_ERROR_OUT_OF_MEMORY);
 		sdo->docp.non_repudiation.tag = IASECC_DOCP_TAG_NON_REPUDATION;
 		sdo->docp.non_repudiation.size = 1;
 
 		sdo->data.prv_key.compulsory.value = calloc(1, 1);
 		if (!sdo->data.prv_key.compulsory.value)
-			LOG_FUNC_RETURN(ctx, SC_ERROR_MEMORY_FAILURE);
+			LOG_FUNC_RETURN(ctx, SC_ERROR_OUT_OF_MEMORY);
 		sdo->data.prv_key.compulsory.tag = IASECC_SDO_PRVKEY_TAG_COMPULSORY;
 		sdo->data.prv_key.compulsory.size = 1;
 
 		sdo->docp.size.value = calloc(1, 2);
 		if (!sdo->docp.size.value)
-			LOG_FUNC_RETURN(ctx, SC_ERROR_MEMORY_FAILURE);
+			LOG_FUNC_RETURN(ctx, SC_ERROR_OUT_OF_MEMORY);
 		sdo->docp.size.tag = IASECC_DOCP_TAG_SIZE;
 		sdo->docp.size.size = 2;
 		*(sdo->docp.size.value + 0) = (sz >> 8) & 0xFF;
@@ -517,7 +520,7 @@ iasecc_sdo_allocate_pubkey(struct sc_profile *profile, struct sc_card *card, str
 	LOG_FUNC_CALLED(ctx);
 	sdo = calloc(1, sizeof(struct iasecc_sdo));
 	if (!sdo)
-		return SC_ERROR_MEMORY_FAILURE;
+		return SC_ERROR_OUT_OF_MEMORY;
 
 	sdo->magic = SC_CARDCTL_IASECC_SDO_MAGIC;
 	sdo->sdo_ref = key_info->key_reference & 0x3F;
@@ -533,7 +536,7 @@ iasecc_sdo_allocate_pubkey(struct sc_profile *profile, struct sc_card *card, str
 
 		sdo->docp.size.value = calloc(1, 2);
 		if (!sdo->docp.size.value)
-			LOG_FUNC_RETURN(ctx, SC_ERROR_MEMORY_FAILURE);
+			LOG_FUNC_RETURN(ctx, SC_ERROR_OUT_OF_MEMORY);
 		sdo->docp.size.size = 2;
 		sdo->docp.size.tag = IASECC_DOCP_TAG_SIZE;
 		*(sdo->docp.size.value + 0) = (sz >> 8) & 0xFF;
@@ -545,14 +548,14 @@ iasecc_sdo_allocate_pubkey(struct sc_profile *profile, struct sc_card *card, str
 		else   {
 			sdo->data.pub_key.cha.value = calloc(1, 2);
 			if (!sdo->data.pub_key.cha.value)
-				LOG_FUNC_RETURN(ctx, SC_ERROR_MEMORY_FAILURE);
+				LOG_FUNC_RETURN(ctx, SC_ERROR_OUT_OF_MEMORY);
 			sdo->data.pub_key.cha.size = 2;
 			sdo->data.pub_key.cha.tag = IASECC_SDO_PUBKEY_TAG_CHA;
 		}
 
 		sdo->data.pub_key.compulsory.value = calloc(1, 1);
 		if (!sdo->data.pub_key.compulsory.value)
-			LOG_FUNC_RETURN(ctx, SC_ERROR_MEMORY_FAILURE);
+			LOG_FUNC_RETURN(ctx, SC_ERROR_OUT_OF_MEMORY);
 		sdo->data.pub_key.compulsory.tag = IASECC_SDO_PUBKEY_TAG_COMPULSORY;
 		sdo->data.pub_key.compulsory.size = 1;
 	}
@@ -1085,6 +1088,8 @@ iasecc_pkcs15_generate_key(struct sc_profile *profile, sc_pkcs15_card_t *p15card
 	struct iasecc_sdo *sdo_prvkey = NULL;
 	struct iasecc_sdo *sdo_pubkey = NULL;
 	struct sc_file	*file = NULL;
+	unsigned char *tmp = NULL;
+	size_t tmp_len;
 	unsigned long caps;
 	int rv;
 
@@ -1137,27 +1142,28 @@ iasecc_pkcs15_generate_key(struct sc_profile *profile, sc_pkcs15_card_t *p15card
 	pubkey->u.rsa.modulus.len = sdo_pubkey->data.pub_key.n.size;
 	pubkey->u.rsa.modulus.data  = (unsigned char *) malloc(pubkey->u.rsa.modulus.len);
 	if (!pubkey->u.rsa.modulus.data)
-		LOG_FUNC_RETURN(ctx, SC_ERROR_MEMORY_FAILURE);
+		LOG_FUNC_RETURN(ctx, SC_ERROR_OUT_OF_MEMORY);
 	memcpy(pubkey->u.rsa.modulus.data, sdo_pubkey->data.pub_key.n.value, pubkey->u.rsa.modulus.len);
 
 	pubkey->u.rsa.exponent.len = sdo_pubkey->data.pub_key.e.size;
 	pubkey->u.rsa.exponent.data = (unsigned char *) malloc(pubkey->u.rsa.exponent.len);
 	if (!pubkey->u.rsa.exponent.data)
-		LOG_FUNC_RETURN(ctx, SC_ERROR_MEMORY_FAILURE);
+		LOG_FUNC_RETURN(ctx, SC_ERROR_OUT_OF_MEMORY);
 	memcpy(pubkey->u.rsa.exponent.data, sdo_pubkey->data.pub_key.e.value, pubkey->u.rsa.exponent.len);
 
-	rv = sc_pkcs15_encode_pubkey(ctx, pubkey, &pubkey->data.value, &pubkey->data.len);
+	rv = sc_pkcs15_encode_pubkey(ctx, pubkey, &tmp, &tmp_len);
 	LOG_TEST_RET(ctx, rv, "encode public key failed");
 
 	rv = iasecc_pkcs15_encode_supported_algos(p15card, object);
 	LOG_TEST_RET(ctx, rv, "encode private key access rules failed");
 
 	/* SDO PrvKey data replaced by public part of generated key */
-	rv = sc_pkcs15_allocate_object_content(ctx, object, pubkey->data.value, pubkey->data.len);
+	rv = sc_pkcs15_allocate_object_content(ctx, object, tmp, tmp_len);
 	LOG_TEST_RET(ctx, rv, "Failed to allocate public key as object content");
 
 	iasecc_sdo_free(card, sdo_pubkey);
 
+	free(tmp);
 	LOG_FUNC_RETURN(ctx, rv);
 }
 
@@ -1236,7 +1242,7 @@ iasecc_pkcs15_delete_sdo (struct sc_profile *profile, struct sc_pkcs15_card *p15
 
 	sdo = calloc(1, sizeof(struct iasecc_sdo));
 	if (!sdo)
-		return SC_ERROR_MEMORY_FAILURE;
+		return SC_ERROR_OUT_OF_MEMORY;
 
 	sdo->magic = SC_CARDCTL_IASECC_SDO_MAGIC;
 	sdo->sdo_class = sdo_class;
@@ -1314,8 +1320,8 @@ iasecc_pkcs15_delete_object (struct sc_profile *profile, struct sc_pkcs15_card *
 
 	switch(object->type & SC_PKCS15_TYPE_CLASS_MASK)   {
 	case SC_PKCS15_TYPE_PUBKEY:
-		sc_log(ctx, "Ignore delete of SDO-PubKey(ref:%X) '%s', path %s", key_ref, object->label, sc_print_path(path));
 		key_ref = ((struct sc_pkcs15_pubkey_info *)object->data)->key_reference;
+		sc_log(ctx, "Ignore delete of SDO-PubKey(ref:%X) '%s', path %s", key_ref, object->label, sc_print_path(path));
 		LOG_FUNC_RETURN(ctx, SC_SUCCESS);
 	case SC_PKCS15_TYPE_PRKEY:
 		sc_log(ctx, "delete PrivKey '%s', path %s", object->label, sc_print_path(path));
@@ -1369,7 +1375,8 @@ iasecc_md_gemalto_set_default(struct sc_pkcs15_card *p15card, struct sc_profile
 	struct sc_context *ctx = p15card->card->ctx;
 	struct sc_pkcs15_object *data_obj = NULL;
 	struct sc_pkcs15init_dataargs data_args;
-	char guid[39];
+	unsigned char guid[40];
+	size_t guid_len;
 	int rv;
 
 	LOG_FUNC_CALLED(ctx);
@@ -1378,7 +1385,10 @@ iasecc_md_gemalto_set_default(struct sc_pkcs15_card *p15card, struct sc_profile
 	if (rv != SC_ERROR_OBJECT_NOT_FOUND)
 		LOG_TEST_RET(ctx, rv, "Find 'Default Key Container' data object error");
 
-	rv = sc_pkcs15_get_guid(p15card, key_obj, 1, guid, sizeof(guid));
+	memset(guid, 0, sizeof(guid));
+	guid_len = sizeof(guid);
+
+	rv = sc_pkcs15_get_object_guid(p15card, key_obj, 1, guid, &guid_len);
 	LOG_TEST_RET(ctx, rv, "Cannot get private key GUID");
 
 	if (!data_obj)   {
@@ -1386,8 +1396,8 @@ iasecc_md_gemalto_set_default(struct sc_pkcs15_card *p15card, struct sc_profile
 		sc_init_oid(&data_args.app_oid);
 		data_args.label = "Default Key Container";
 		data_args.app_label = "CSP";
-		data_args.der_encoded.value = (unsigned char *)guid;
-		data_args.der_encoded.len = strlen(guid);
+		data_args.der_encoded.value = guid;
+		data_args.der_encoded.len = guid_len;
 
 		rv = sc_pkcs15init_store_data_object(p15card, profile, &data_args, NULL);
 		LOG_TEST_RET(ctx, rv, "Failed to store 'CSP'/'Default Key Container' data object");
@@ -1400,7 +1410,7 @@ iasecc_md_gemalto_set_default(struct sc_pkcs15_card *p15card, struct sc_profile
                 rv = sc_select_file(p15card->card, &dinfo->path, &file);
                 LOG_TEST_RET(ctx, rv, "Cannot select data object file");
 
-                rv = sc_pkcs15init_update_file(profile, p15card, file, guid, strlen(guid));
+                rv = sc_pkcs15init_update_file(profile, p15card, file, guid, guid_len);
                 sc_file_free(file);
                 LOG_TEST_RET(ctx, rv, "Failed to update 'CSP'/'Default Key Container' data object");
 	}
@@ -1418,12 +1428,16 @@ iasecc_md_gemalto_unset_default(struct sc_pkcs15_card *p15card, struct sc_profil
 	struct sc_pkcs15_data *dod = NULL;
         struct sc_pkcs15_object *key_objs[32];
 	struct sc_pkcs15_prkey_info *key_info = (struct sc_pkcs15_prkey_info *)key_obj->data;
-	char guid[39];
+	unsigned char guid[40];
+	size_t guid_len;
 	int rv, ii, keys_num;
 
 	LOG_FUNC_CALLED(ctx);
 
-	rv = sc_pkcs15_get_guid(p15card, key_obj, 1, guid, sizeof(guid));
+	memset(guid, 0, sizeof(guid));
+	guid_len = sizeof(guid);
+
+	rv = sc_pkcs15_get_object_guid(p15card, key_obj, 1, guid, &guid_len);
 	LOG_TEST_RET(ctx, rv, "Cannot get private key GUID");
 
 	rv = sc_pkcs15_find_data_object_by_name(p15card, "CSP", "Default Key Container", &data_obj);
@@ -1433,7 +1447,7 @@ iasecc_md_gemalto_unset_default(struct sc_pkcs15_card *p15card, struct sc_profil
 	rv = sc_pkcs15_read_data_object(p15card, (struct sc_pkcs15_data_info *)data_obj->data, &dod);
 	LOG_TEST_RET(ctx, rv, "Cannot read from 'CSP/'Default Key Container'");
 
-	if (strlen(guid) != dod->data_len || memcmp(guid, dod->data, strlen(guid)))
+	if (guid_len != dod->data_len || memcmp(guid, dod->data, guid_len))
 		LOG_FUNC_RETURN(ctx, SC_SUCCESS);
 
 	rv = sc_pkcs15_get_objects(p15card, SC_PKCS15_TYPE_PRKEY, key_objs, 32);
@@ -1470,17 +1484,19 @@ iasecc_md_gemalto_new_prvkey(struct sc_pkcs15_card *p15card, struct sc_profile *
 	struct sc_context *ctx = p15card->card->ctx;
 	struct sc_pkcs15_prkey_info *prkey_info = (struct sc_pkcs15_prkey_info *)key_obj->data;
 	struct sc_pkcs15init_dataargs data_args;
-	char guid[40];
 	unsigned char data[SC_PKCS15_MAX_ID_SIZE + 6];
-	size_t offs;
+	unsigned char guid[40];
+	size_t offs, guid_len;
 	int rv;
 
 	LOG_FUNC_CALLED(ctx);
 
 	memset(guid, 0, sizeof(guid));
-	rv = sc_pkcs15_get_guid(p15card, key_obj, 1, guid, sizeof(guid) - 1);
+	guid_len = sizeof(guid) - 1;
+
+	rv = sc_pkcs15_get_object_guid(p15card, key_obj, 1, guid, &guid_len);
 	LOG_TEST_RET(ctx, rv, "Cannot get private key GUID");
-	sc_log(ctx, "New key GUID: '%s'", guid);
+	sc_log(ctx, "New key GUID: '%s'", (char *)guid);
 
 	offs = 0;
 	data[offs++] = 0x01;
@@ -1493,7 +1509,7 @@ iasecc_md_gemalto_new_prvkey(struct sc_pkcs15_card *p15card, struct sc_profile *
 
 	memset(&data_args, 0, sizeof(data_args));
 	sc_init_oid(&data_args.app_oid);
-	data_args.label = guid;
+	data_args.label = (char *)guid;
 	data_args.app_label = "CSP";
         data_args.der_encoded.value = data;
 	data_args.der_encoded.len = offs;
@@ -1518,15 +1534,19 @@ iasecc_md_gemalto_delete_prvkey(struct sc_pkcs15_card *p15card, struct sc_profil
 {
 	struct sc_context *ctx = p15card->card->ctx;
 	struct sc_pkcs15_object *data_obj = NULL;
-	char guid[39];
+	unsigned char guid[40];
+	size_t guid_len;
 	int rv;
 
 	LOG_FUNC_CALLED(ctx);
 
-	rv = sc_pkcs15_get_guid(p15card, key_obj, 1, guid, sizeof(guid));
+	memset(guid, 0, sizeof(guid));
+	guid_len = sizeof(guid) - 1;
+
+	rv = sc_pkcs15_get_object_guid(p15card, key_obj, 1, guid, &guid_len);
 	LOG_TEST_RET(ctx, rv, "Cannot get private key GUID");
 
-	rv = sc_pkcs15_find_data_object_by_name(p15card, "CSP", guid, &data_obj);
+	rv = sc_pkcs15_find_data_object_by_name(p15card, "CSP", (char *)guid, &data_obj);
         if (rv == SC_ERROR_OBJECT_NOT_FOUND)
 		LOG_FUNC_RETURN(ctx, SC_SUCCESS);
 	LOG_TEST_RET(ctx, rv, "Find 'CSP'/<key> data object error");
@@ -1655,12 +1675,9 @@ iasecc_store_data_object(struct sc_pkcs15_card *p15card, struct sc_profile *prof
 	LOG_TEST_RET(ctx, nn_objs, "IasEcc get pkcs15 DATA objects error");
 
 	for(indx = 1; indx < MAX_DATA_OBJS; indx++)   {
-		struct sc_path fpath;
-
 		rv = iasecc_pkcs15_new_file(profile, card, SC_PKCS15_TYPE_DATA_OBJECT, indx, &file);
 		LOG_TEST_RET(ctx, rv, "iasecc_store_data_object() pkcs15 new DATA file error");
 
-		fpath = file->path;
 		for (ii=0; ii<nn_objs; ii++)   {
 			struct sc_pkcs15_data_info *info = (struct sc_pkcs15_data_info *)p15objects[ii]->data;
 			int file_id = info->path.value[info->path.len - 2] * 0x100 + info->path.value[info->path.len - 1];
@@ -1788,14 +1805,6 @@ iasecc_emu_store_data(struct sc_pkcs15_card *p15card, struct sc_profile *profile
 }
 
 
-static int
-iasecc_emu_update_tokeninfo(struct sc_profile *profile, struct sc_pkcs15_card *p15card,
-		struct sc_pkcs15_tokeninfo *tinfo)
-{
-	LOG_FUNC_RETURN(p15card->card->ctx, SC_SUCCESS);
-}
-
-
 static struct sc_pkcs15init_operations
 sc_pkcs15init_iasecc_operations = {
 	iasecc_pkcs15_erase_card,
diff --git a/src/pkcs15init/pkcs15-incrypto34.c b/src/pkcs15init/pkcs15-incrypto34.c
index 39ecb03..80e6010 100644
--- a/src/pkcs15init/pkcs15-incrypto34.c
+++ b/src/pkcs15init/pkcs15-incrypto34.c
@@ -184,19 +184,20 @@ incrypto34_select_pin_reference(sc_profile_t *profile, sc_pkcs15_card_t *p15card
 
 	if (auth_info->attrs.pin.flags & SC_PKCS15_PIN_FLAG_SO_PIN) {
 		preferred = 1;
+		if (current > preferred)
+			return SC_ERROR_TOO_MANY_OBJECTS;
 	} else {
 		preferred = current;
 		/* PINs are even numbered, PUKs are odd */
 		if (!(preferred & 1))
 			preferred++;
-		if (preferred >= 126)
-			return SC_ERROR_TOO_MANY_OBJECTS;
 	}
 
-	if (current > preferred || preferred > INCRYPTO34_PIN_ID_MAX)
+	if (preferred > INCRYPTO34_PIN_ID_MAX)
 		return SC_ERROR_TOO_MANY_OBJECTS;
 	auth_info->attrs.pin.reference = preferred;
-	return 0;
+
+	return SC_SUCCESS;
 }
 
 /*
diff --git a/src/pkcs15init/pkcs15-init.h b/src/pkcs15init/pkcs15-init.h
index f33684b..a301b20 100644
--- a/src/pkcs15init/pkcs15-init.h
+++ b/src/pkcs15init/pkcs15-init.h
@@ -13,6 +13,8 @@ extern "C" {
 
 #include "libopensc/pkcs15.h"
 
+#define DEFAULT_PRIVATE_KEY_LABEL "Private Key"
+
 #define SC_PKCS15INIT_X509_DIGITAL_SIGNATURE     0x0080UL
 #define SC_PKCS15INIT_X509_NON_REPUDIATION       0x0040UL
 #define SC_PKCS15INIT_X509_KEY_ENCIPHERMENT      0x0020UL
@@ -81,8 +83,8 @@ struct sc_pkcs15init_operations {
 	 * Create an empty key object.
 	 * @index is the number key objects already on the card.
 	 * @pin_info contains information on the PIN protecting
-	 * 		the key. NULL if the key should be
-	 * 		unprotected.
+	 *		the key. NULL if the key should be
+	 *		unprotected.
 	 * @key_info should be filled in by the function
 	 */
 	int	(*create_key)(struct sc_profile *, struct sc_pkcs15_card *,
@@ -145,9 +147,9 @@ struct sc_pkcs15init_operations {
 };
 
 /* Do not change these or reorder these */
-#define SC_PKCS15INIT_ID_STYLE_NATIVE 	0
-#define SC_PKCS15INIT_ID_STYLE_MOZILLA	1
-#define SC_PKCS15INIT_ID_STYLE_RFC2459	2
+#define SC_PKCS15INIT_ID_STYLE_NATIVE		0
+#define SC_PKCS15INIT_ID_STYLE_MOZILLA		1
+#define SC_PKCS15INIT_ID_STYLE_RFC2459		2
 
 #define SC_PKCS15INIT_SO_PIN		0
 #define SC_PKCS15INIT_SO_PUK		1
@@ -201,10 +203,12 @@ struct sc_pkcs15init_keyarg_gost_params {
 };
 
 struct sc_pkcs15init_prkeyargs {
+	/* TODO: member for private key algorithm: currently is used algorithm from 'key' member */
 	struct sc_pkcs15_id	id;
 	struct sc_pkcs15_id	auth_id;
-	const char *		label;
-	const char *		guid;
+	char *label;
+	unsigned char *guid;
+	size_t guid_len;
 	unsigned long		usage;
 	unsigned long		x509_usage;
 	unsigned int		flags;
@@ -369,6 +373,8 @@ extern int	sc_pkcs15init_delete_by_path(struct sc_profile *,
 				struct sc_pkcs15_card *, const struct sc_path *);
 extern int	sc_pkcs15init_update_any_df(struct sc_pkcs15_card *, struct sc_profile *,
 			struct sc_pkcs15_df *, int);
+extern int	sc_pkcs15init_select_intrinsic_id(struct sc_pkcs15_card *, struct sc_profile *,
+			int, struct sc_pkcs15_id *, void *);
 
 /* Erasing the card structure via rm -rf */
 extern int	sc_pkcs15init_erase_card_recursively(struct sc_pkcs15_card *,
diff --git a/src/pkcs15init/pkcs15-lib.c b/src/pkcs15init/pkcs15-lib.c
index 7bc64d7..8587b8d 100644
--- a/src/pkcs15init/pkcs15-lib.c
+++ b/src/pkcs15init/pkcs15-lib.c
@@ -114,16 +114,14 @@ static int	check_key_compatibility(struct sc_pkcs15_card *,
 static int	prkey_fixup(struct sc_pkcs15_card *, struct sc_pkcs15_prkey *);
 static int	prkey_bits(struct sc_pkcs15_card *, struct sc_pkcs15_prkey *);
 static int	prkey_pkcs15_algo(struct sc_pkcs15_card *, struct sc_pkcs15_prkey *);
-static int 	select_intrinsic_id(struct sc_pkcs15_card *, struct sc_profile *,
-			int, struct sc_pkcs15_id *, void *);
 static int	select_id(struct sc_pkcs15_card *, int, struct sc_pkcs15_id *);
 static int	select_object_path(struct sc_pkcs15_card *, struct sc_profile *,
 			struct sc_pkcs15_object *, struct sc_path *);
 static int	sc_pkcs15init_get_pin_path(struct sc_pkcs15_card *,
 			struct sc_pkcs15_id *, struct sc_path *);
 static int	sc_pkcs15init_qualify_pin(struct sc_card *, const char *,
-	       		unsigned int, struct sc_pkcs15_auth_info *);
-static struct sc_pkcs15_df * find_df_by_type(struct sc_pkcs15_card *,
+			unsigned int, struct sc_pkcs15_auth_info *);
+static struct	sc_pkcs15_df * find_df_by_type(struct sc_pkcs15_card *,
 			unsigned int);
 static int	sc_pkcs15init_read_info(struct sc_card *card, struct sc_profile *);
 static int	sc_pkcs15init_parse_info(struct sc_card *, const unsigned char *, size_t,
@@ -341,13 +339,13 @@ sc_pkcs15init_bind(struct sc_card *card, const char *name, const char *profile_o
 				profile->options[i++] = strdup(s);
 		}
 	}
-#if 0
+
 	r = sc_pkcs15init_read_info(card, profile);
 	if (r < 0) {
 		sc_profile_free(profile);
 		LOG_TEST_RET(ctx, r, "Read info error");
 	}
-#endif
+
 	/* Check the config file for a profile name.
 	 * If none is defined, use the default profile name.
 	 */
@@ -490,9 +488,13 @@ int
 sc_pkcs15init_erase_card(struct sc_pkcs15_card *p15card, struct sc_profile *profile,
 		struct sc_aid *aid)
 {
-	struct sc_context *ctx = p15card->card->ctx;
+	struct sc_context *ctx = NULL;
 	int rv;
 
+	if (!p15card)
+		return SC_ERROR_INVALID_ARGUMENTS;
+
+	ctx = p15card->card->ctx;
 	LOG_FUNC_CALLED(ctx);
 	/* Needs the 'SOPIN' AUTH pkcs15 object.
 	 * So that, SOPIN can be found by it's reference. */
@@ -545,13 +547,14 @@ sc_pkcs15init_erase_card_recursively(struct sc_pkcs15_card *p15card,
 
 
 int
-sc_pkcs15init_delete_by_path(struct sc_profile *profile, struct sc_pkcs15_card *p15card, 
+sc_pkcs15init_delete_by_path(struct sc_profile *profile, struct sc_pkcs15_card *p15card,
 		const struct sc_path *file_path)
 {
 	struct sc_context *ctx = p15card->card->ctx;
 	struct sc_file *parent = NULL, *file = NULL;
 	struct sc_path path;
-	int rv, file_type = SC_FILE_TYPE_DF;
+	int rv;
+	/*int file_type = SC_FILE_TYPE_DF;*/
 
 	LOG_FUNC_CALLED(ctx);
 	sc_log(ctx, "trying to delete '%s'", sc_print_path(file_path));
@@ -580,7 +583,7 @@ sc_pkcs15init_delete_by_path(struct sc_profile *profile, struct sc_pkcs15_card *
 	}
 	else    {
 		sc_log(ctx, "Try to get the parent's 'DELETE' access");
-		file_type = file->type;
+		/*file_type = file->type;*/
 		if (file_path->len >= 2) {
 			/* Select the parent DF */
 			path.len -= 2;
@@ -594,6 +597,10 @@ sc_pkcs15init_delete_by_path(struct sc_profile *profile, struct sc_pkcs15_card *
 	}
 	LOG_TEST_RET(ctx, rv, "'DELETE' authentication failed");
 
+	/* Reselect file to delete: current path could be changed by 'verify PIN' procedure */
+	rv = sc_select_file(p15card->card, &path, &file);
+	LOG_TEST_RET(ctx, rv, "cannot select file to delete");
+
 	memset(&path, 0, sizeof(path));
 	path.type = SC_PATH_TYPE_FILE_ID;
 	path.value[0] = file_path->value[file_path->len - 2];
@@ -601,10 +608,12 @@ sc_pkcs15init_delete_by_path(struct sc_profile *profile, struct sc_pkcs15_card *
 	path.len = 2;
 
 	/* Reselect file to delete if the parent DF was selected and it's not DF. */
+/*
 	if (file_type != SC_FILE_TYPE_DF)   {
 		rv = sc_select_file(p15card->card, &path, &file);
 		LOG_TEST_RET(ctx, rv, "cannot select file to delete");
 	}
+*/
 
 	sc_log(ctx, "Now really delete file");
 	rv = sc_delete_file(p15card->card, &path);
@@ -797,10 +806,9 @@ sc_pkcs15init_add_app(struct sc_card *card, struct sc_profile *profile,
 			pin_attrs->flags |= SC_PKCS15_PIN_FLAG_UNBLOCK_DISABLED;
 
 		pin_obj = sc_pkcs15init_new_object(SC_PKCS15_TYPE_AUTH_PIN, pin_label, NULL, &pin_ainfo);
-
 		if (pin_obj)   {
 			/* When composing ACLs to create 'DIR' DF,
-			 * 	the references of the not-yet-existing PINs can be requested.
+			 *	the references of the not-yet-existing PINs can be requested.
 			 * For this, create a 'virtual' AUTH object 'SO PIN', accessible by the card specific part,
 			 * but not yet written into the on-card PKCS#15.
 			 */
@@ -1140,10 +1148,8 @@ sc_pkcs15init_encode_prvkey_content(struct sc_pkcs15_card *p15card, struct sc_pk
  * Prepare private key download, and initialize a prkdf entry
  */
 static int
-sc_pkcs15init_init_prkdf(struct sc_pkcs15_card *p15card,
-		struct sc_profile *profile,
-		struct sc_pkcs15init_prkeyargs *keyargs,
-		struct sc_pkcs15_prkey *key, int keybits,
+sc_pkcs15init_init_prkdf(struct sc_pkcs15_card *p15card, struct sc_profile *profile,
+		struct sc_pkcs15init_prkeyargs *keyargs, struct sc_pkcs15_prkey *key, int keybits,
 		struct sc_pkcs15_object **res_obj)
 {
 	struct sc_context *ctx = p15card->card->ctx;
@@ -1167,7 +1173,7 @@ sc_pkcs15init_init_prkdf(struct sc_pkcs15_card *p15card,
 	}
 
 	if ((label = keyargs->label) == NULL)
-		label = "Private Key";
+		label = DEFAULT_PRIVATE_KEY_LABEL;
 
 	/* Create the prkey object now.
 	 * If we find out below that we're better off reusing an
@@ -1258,8 +1264,9 @@ sc_pkcs15init_generate_key(struct sc_pkcs15_card *p15card, struct sc_profile *pr
 {
 	struct sc_context *ctx = p15card->card->ctx;
 	struct sc_pkcs15init_pubkeyargs pubkey_args;
-	struct sc_pkcs15_object *object;
-	struct sc_pkcs15_prkey_info *key_info;
+	struct sc_pkcs15_object *object = NULL;
+	struct sc_pkcs15_prkey_info *key_info = NULL;
+	struct sc_pkcs15_pubkey *pubkey = NULL;
 	int r, caller_supplied_id = 0;
 
 	LOG_FUNC_CALLED(ctx);
@@ -1291,11 +1298,15 @@ sc_pkcs15init_generate_key(struct sc_pkcs15_card *p15card, struct sc_profile *pr
 	LOG_TEST_RET(ctx, r, "Set up private key object error");
 
 	key_info = (struct sc_pkcs15_prkey_info *) object->data;
-	if (keygen_args->prkey_args.guid)   {
-		object->guid = strdup(keygen_args->prkey_args.guid);
-		if (!object->guid)
+
+	if (keygen_args->prkey_args.guid && keygen_args->prkey_args.guid_len)   {
+		key_info->cmap_record.guid = malloc(keygen_args->prkey_args.guid_len);
+		if (!key_info->cmap_record.guid)
 			LOG_TEST_RET(ctx, SC_ERROR_OUT_OF_MEMORY, "Cannot allocate guid");
-		sc_log(ctx, "new key GUID: '%s'", object->guid);
+		memcpy(key_info->cmap_record.guid, keygen_args->prkey_args.guid, keygen_args->prkey_args.guid_len);
+		key_info->cmap_record.guid_len = keygen_args->prkey_args.guid_len;
+		sc_log(ctx, "new key GUID: 0x'%s'", sc_dump_hex(key_info->cmap_record.guid, key_info->cmap_record.guid_len));
+		key_info->cmap_record.flags = SC_MD_CONTAINER_MAP_VALID_CONTAINER;
 	}
 
 	/* Set up the PuKDF info. The public key will be filled in
@@ -1306,7 +1317,11 @@ sc_pkcs15init_generate_key(struct sc_pkcs15_card *p15card, struct sc_profile *pr
 	pubkey_args.label = keygen_args->pubkey_label ? keygen_args->pubkey_label : object->label;
 	pubkey_args.usage = keygen_args->prkey_args.usage;
 	pubkey_args.x509_usage = keygen_args->prkey_args.x509_usage;
-	pubkey_args.params.gost = keygen_args->prkey_args.params.gost;
+
+	if (keygen_args->prkey_args.key.algorithm == SC_ALGORITHM_GOSTR3410)
+		pubkey_args.params.gost = keygen_args->prkey_args.params.gost;
+	else if (keygen_args->prkey_args.key.algorithm == SC_ALGORITHM_EC)
+		pubkey_args.params.ec = keygen_args->prkey_args.params.ec;
 
 	/* Generate the private key on card */
 	r = profile->ops->create_key(profile, p15card, object);
@@ -1322,15 +1337,25 @@ sc_pkcs15init_generate_key(struct sc_pkcs15_card *p15card, struct sc_profile *pr
 		/* Caller not supplied ID, so,
 		 * if intrinsic ID can be calculated -- overwrite the native one */
 		memset(&iid, 0, sizeof(iid));
-		r = select_intrinsic_id(p15card, profile, SC_PKCS15_TYPE_PUBKEY, &iid, &pubkey_args.key);
+		r = sc_pkcs15init_select_intrinsic_id(p15card, profile, SC_PKCS15_TYPE_PUBKEY, &iid, &pubkey_args.key);
 		LOG_TEST_RET(ctx, r, "Select intrinsic ID error");
 
 		if (iid.len)
 			key_info->id = iid;
 	}
 
+	pubkey = &pubkey_args.key;
+	if (!pubkey->alg_id)   {
+		pubkey->alg_id = calloc(1, sizeof(struct sc_algorithm_id));
+		if (!pubkey->alg_id)
+			LOG_FUNC_RETURN(ctx, SC_ERROR_OUT_OF_MEMORY);
+
+		sc_init_oid(&pubkey->alg_id->oid);
+		pubkey->alg_id->algorithm = pubkey->algorithm;
+	}
+
 	pubkey_args.id = key_info->id;
-	r = sc_pkcs15_encode_pubkey(ctx, &pubkey_args.key, &object->content.value, &object->content.len);
+	r = sc_pkcs15_encode_pubkey(ctx, pubkey, &object->content.value, &object->content.len);
 	LOG_TEST_RET(ctx, r, "Failed to encode public key");
 
 	r = sc_pkcs15init_add_object(p15card, profile, SC_PKCS15_PRKDF, object);
@@ -1361,16 +1386,13 @@ sc_pkcs15init_generate_key(struct sc_pkcs15_card *p15card, struct sc_profile *pr
  * Store private key
  */
 int
-sc_pkcs15init_store_private_key(struct sc_pkcs15_card *p15card,
-		struct sc_profile *profile,
-		struct sc_pkcs15init_prkeyargs *keyargs,
-		struct sc_pkcs15_object **res_obj)
+sc_pkcs15init_store_private_key(struct sc_pkcs15_card *p15card, struct sc_profile *profile,
+		struct sc_pkcs15init_prkeyargs *keyargs, struct sc_pkcs15_object **res_obj)
 {
 	struct sc_context *ctx = p15card->card->ctx;
 	struct sc_pkcs15_object *object;
-	struct sc_pkcs15_prkey_info *key_info;
 	struct sc_pkcs15_prkey key;
-	int keybits, idx, r = 0;
+	int keybits, r = 0;
 
 	LOG_FUNC_CALLED(ctx);
 	/* Create a copy of the key first */
@@ -1391,7 +1413,8 @@ sc_pkcs15init_store_private_key(struct sc_pkcs15_card *p15card,
 	}
 
 	/* Select a intrinsic Key ID if user didn't specify one */
-	r = select_intrinsic_id(p15card, profile, SC_PKCS15_TYPE_PRKEY, &keyargs->id, &keyargs->key);
+	r = sc_pkcs15init_select_intrinsic_id(p15card, profile, SC_PKCS15_TYPE_PRKEY,
+			&keyargs->id, &keyargs->key);
 	LOG_TEST_RET(ctx, r, "Get intrinsic ID error");
 
 	/* Make sure that private key's ID is the unique inside the PKCS#15 application */
@@ -1404,18 +1427,19 @@ sc_pkcs15init_store_private_key(struct sc_pkcs15_card *p15card,
 	/* Set up the PrKDF object */
 	r = sc_pkcs15init_init_prkdf(p15card, profile, keyargs, &key, keybits, &object);
 	LOG_TEST_RET(ctx, r, "Failed to initialize private key object");
-	key_info = (struct sc_pkcs15_prkey_info *) object->data;
 
 	r = sc_pkcs15init_encode_prvkey_content(p15card, &key, object);
 	LOG_TEST_RET(ctx, r, "Failed to encode public key");
 
 	/* Get the number of private keys already on this card */
-	idx = sc_pkcs15_get_objects(p15card, SC_PKCS15_TYPE_PRKEY, NULL, 0);
+	/*idx = sc_pkcs15_get_objects(p15card, SC_PKCS15_TYPE_PRKEY, NULL, 0);*/
 
-	r = profile->ops->create_key(profile, p15card, object);
+	if (profile->ops->create_key)
+		r = profile->ops->create_key(profile, p15card, object);
 	LOG_TEST_RET(ctx, r, "Card specific 'create key' failed");
 
-	r = profile->ops->store_key(profile, p15card, object, &key);
+	if (profile->ops->store_key)
+		r = profile->ops->store_key(profile, p15card, object, &key);
 	LOG_TEST_RET(ctx, r, "Card specific 'store key' failed");
 
 	sc_pkcs15_free_object_content(object);
@@ -1426,13 +1450,6 @@ sc_pkcs15init_store_private_key(struct sc_pkcs15_card *p15card,
 	r = sc_pkcs15init_add_object(p15card, profile, SC_PKCS15_PRKDF, object);
 	LOG_TEST_RET(ctx, r, "Failed to add new private key PKCS#15 object");
 
-	if (keyargs->guid)   {
-		object->guid = strdup(keyargs->guid);
-		if (!object->guid)
-			LOG_TEST_RET(ctx, SC_ERROR_OUT_OF_MEMORY, "Cannot allocate guid");
-		sc_log(ctx, "new key GUID: '%s'", object->guid);
-	}
-
 	if (!r && profile->ops->emu_store_data)   {
 		r = profile->ops->emu_store_data(p15card, profile, object, NULL, NULL);
 		if (r == SC_ERROR_NOT_IMPLEMENTED)
@@ -1453,19 +1470,17 @@ sc_pkcs15init_store_private_key(struct sc_pkcs15_card *p15card,
  * Store a public key
  */
 int
-sc_pkcs15init_store_public_key(struct sc_pkcs15_card *p15card,
-		struct sc_profile *profile,
-		struct sc_pkcs15init_pubkeyargs *keyargs,
-		struct sc_pkcs15_object **res_obj)
+sc_pkcs15init_store_public_key(struct sc_pkcs15_card *p15card, struct sc_profile *profile,
+		struct sc_pkcs15init_pubkeyargs *keyargs, struct sc_pkcs15_object **res_obj)
 {
 	struct sc_context *ctx = p15card->card->ctx;
 	struct sc_pkcs15_object *object;
 	struct sc_pkcs15_pubkey_info *key_info;
 	struct sc_pkcs15_keyinfo_gostparams *keyinfo_gostparams;
 	struct sc_pkcs15_pubkey key;
-	struct sc_path 	*path;
+	struct sc_path	*path;
 	const char	*label;
-	unsigned int	keybits, type, usage;
+	unsigned int	keybits, type = 0, usage;
 	int		r;
 
 	LOG_FUNC_CALLED(ctx);
@@ -1491,8 +1506,12 @@ sc_pkcs15init_store_public_key(struct sc_pkcs15_card *p15card,
 		type = SC_PKCS15_TYPE_PUBKEY_GOSTR3410;
 		break;
 	case SC_ALGORITHM_EC:
-		keybits = key.u.ec.params.field_length;
 		type = SC_PKCS15_TYPE_PUBKEY_EC;
+
+		key.u.ec.params = keyargs->params.ec;
+		sc_pkcs15_fix_ec_parameters(ctx, &key.u.ec.params);
+
+		keybits = key.u.ec.params.field_length;
 		break;
 	default:
 		LOG_TEST_RET(ctx, SC_ERROR_NOT_SUPPORTED, "Unsupported key algorithm.");
@@ -1521,18 +1540,21 @@ sc_pkcs15init_store_public_key(struct sc_pkcs15_card *p15card,
 		/* FIXME: malloc() call in pkcs15init, but free() call
 		 * in libopensc (sc_pkcs15_free_prkey_info) */
 		key_info->params.data = malloc(key_info->params.len);
-		if (!key_info->params.data)
-			return SC_ERROR_OUT_OF_MEMORY;
+		if (!key_info->params.data) {
+			/* FIXME free object with sc_pkcs15init_delete_object */
+			LOG_TEST_RET(ctx, SC_ERROR_OUT_OF_MEMORY, "Cannot allocate GOST params");
+		}
 		keyinfo_gostparams = key_info->params.data;
 		keyinfo_gostparams->gostr3410 = keyargs->params.gost.gostr3410;
 		keyinfo_gostparams->gostr3411 = keyargs->params.gost.gostr3411;
 		keyinfo_gostparams->gost28147 = keyargs->params.gost.gost28147;
 	}
-	else if(key.algorithm == SC_ALGORITHM_EC)
+	else if (key.algorithm == SC_ALGORITHM_EC)   {
 		key_info->field_length = keybits;
+	}
 
 	/* Select a intrinsic Key ID if the user didn't specify one */
-	r = select_intrinsic_id(p15card, profile, SC_PKCS15_TYPE_PUBKEY, &keyargs->id, &key);
+	r = sc_pkcs15init_select_intrinsic_id(p15card, profile, SC_PKCS15_TYPE_PUBKEY, &keyargs->id, &key);
 	LOG_TEST_RET(ctx, r, "Get intrinsic ID error");
 
 	/* Select a Key ID if the user didn't specify one and there is no intrinsic ID,
@@ -1553,6 +1575,13 @@ sc_pkcs15init_store_public_key(struct sc_pkcs15_card *p15card,
 	r = sc_pkcs15_encode_pubkey(p15card->card->ctx, &key, &object->content.value, &object->content.len);
 	LOG_TEST_RET(ctx, r, "Encode public key error");
 
+	r = sc_pkcs15_encode_pubkey(p15card->card->ctx, &key, &key_info->direct.raw.value, &key_info->direct.raw.len);
+	LOG_TEST_RET(ctx, r, "RAW encode public key error");
+
+	/* EC key are encoded as SPKI to preserve domain parameter */
+	r = sc_pkcs15_encode_pubkey_as_spki(p15card->card->ctx, &key, &key_info->direct.spki.value, &key_info->direct.spki.len);
+	LOG_TEST_RET(ctx, r, "SPKI encode public key error");
+
 	/* Now create key file and store key */
 	r = sc_pkcs15init_store_data(p15card, profile, object, &object->content, &key_info->path);
 
@@ -1597,7 +1626,8 @@ sc_pkcs15init_store_certificate(struct sc_pkcs15_card *p15card,
 	if (!label)
 		label = "Certificate";
 
-	r = select_intrinsic_id(p15card, profile, SC_PKCS15_TYPE_CERT_X509, &args->id, &args->der_encoded);
+	r = sc_pkcs15init_select_intrinsic_id(p15card, profile, SC_PKCS15_TYPE_CERT_X509,
+			&args->id, &args->der_encoded);
 	LOG_TEST_RET(ctx, r, "Get certificate 'intrinsic ID' error");
 
 	/* Select an ID if the user didn't specify one, otherwise
@@ -1612,12 +1642,11 @@ sc_pkcs15init_store_certificate(struct sc_pkcs15_card *p15card,
 	cert_info->id = args->id;
 	cert_info->authority = args->authority;
 	sc_der_copy(&object->content, &args->der_encoded);
+	sc_der_copy(&cert_info->value, &args->der_encoded);
 
 	sc_log(ctx, "Store cert(%s,ID:%s,der(%p,%i))", object->label,
 			sc_pkcs15_print_id(&cert_info->id), args->der_encoded.value, args->der_encoded.len);
-	if (profile->pkcs15.direct_certificates)
-		sc_der_copy(&cert_info->value, &args->der_encoded);
-	else
+	if (!profile->pkcs15.direct_certificates)
 		r = sc_pkcs15init_store_data(p15card, profile, object, &args->der_encoded, &cert_info->path);
 
 	/* Now update the CDF */
@@ -1719,6 +1748,7 @@ sc_pkcs15init_store_data_object(struct sc_pkcs15_card *p15card,
 		strlcpy(data_object_info->app_label, label, sizeof(data_object_info->app_label));
 
 	data_object_info->app_oid = args->app_oid;
+	sc_der_copy(&data_object_info->data, &args->der_encoded);
 
 	r = sc_pkcs15init_store_data(p15card, profile, object, &args->der_encoded, &data_object_info->path);
 	LOG_TEST_RET(ctx, r, "Store 'DATA' object error");
@@ -1806,7 +1836,7 @@ sc_pkcs15init_get_pin_reference(struct sc_pkcs15_card *p15card,
 	}
 
 	/* 2. No existing pkcs15 PIN object
-	 * 	-- check if profile defines some PIN with 'reference' as PIN reference. */
+	 *	-- check if profile defines some PIN with 'reference' as PIN reference. */
 	r = sc_profile_get_pin_id_by_reference(profile, auth_method, reference, &auth_info);
 	if (r < 0)
 		LOG_TEST_RET(ctx, SC_ERROR_OBJECT_NOT_FOUND, "PIN template not found");
@@ -2112,7 +2142,7 @@ prkey_bits(struct sc_pkcs15_card *p15card, struct sc_pkcs15_prkey *key)
 			sc_log(ctx, "Unsupported key (keybits %u)", sc_pkcs15init_keybits(&key->u.gostr3410.d));
 			return SC_ERROR_OBJECT_NOT_VALID;
 		}
-		return SC_PKCS15_GOSTR3410_KEYSIZE;		
+		return SC_PKCS15_GOSTR3410_KEYSIZE;
 	case SC_ALGORITHM_EC:
 		/* calculation returns one bit too small, add one bu default */
 		sc_log(ctx, "Private EC key length %u", sc_pkcs15init_keybits(&key->u.ec.privateD) + 1);
@@ -2154,44 +2184,48 @@ find_df_by_type(struct sc_pkcs15_card *p15card, unsigned int type)
 }
 
 
-static int
-select_intrinsic_id(struct sc_pkcs15_card *p15card, struct sc_profile *profile,
-			int type, struct sc_pkcs15_id *id, void *data)
+int
+sc_pkcs15init_select_intrinsic_id(struct sc_pkcs15_card *p15card, struct sc_profile *profile,
+		int type, struct sc_pkcs15_id *id_out, void *data)
 {
 	struct sc_context *ctx = p15card->card->ctx;
 	struct sc_pkcs15_pubkey *pubkey = NULL;
 	unsigned id_style = profile->id_style;
+	struct sc_pkcs15_id id;
+	unsigned char *id_data = NULL;
+	size_t id_data_len = 0;
 	int rv, allocated = 0;
 
 	LOG_FUNC_CALLED(ctx);
 #ifndef ENABLE_OPENSSL
 	LOG_FUNC_RETURN(ctx, SC_SUCCESS);
 #else
+	if (!id_out)
+		LOG_FUNC_RETURN(ctx, SC_ERROR_INVALID_ARGUMENTS);
+
 	/* ID already exists */
-	if (id->len)
+	if (id_out->len)
 		LOG_FUNC_RETURN(ctx, SC_SUCCESS);
 
-	/* Native ID style is not an intrisic one */
+	/* Native ID style is not intrisic one */
 	if (profile->id_style == SC_PKCS15INIT_ID_STYLE_NATIVE)
 		LOG_FUNC_RETURN(ctx, SC_SUCCESS);
 
+	memset(&id, 0, sizeof(id));
 	/* Get PKCS15 public key */
 	switch(type)   {
 	case SC_PKCS15_TYPE_CERT_X509:
 		rv = sc_pkcs15_pubkey_from_cert(ctx, (struct sc_pkcs15_der *)data, &pubkey);
 		LOG_TEST_RET(ctx, rv, "X509 parse error");
-
 		allocated = 1;
 		break;
 	case SC_PKCS15_TYPE_PRKEY:
 		rv = sc_pkcs15_pubkey_from_prvkey(ctx, (struct sc_pkcs15_prkey *)data, &pubkey);
 		LOG_TEST_RET(ctx, rv, "Cannot get public key");
-
 		allocated = 1;
 		break;
 	case SC_PKCS15_TYPE_PUBKEY:
 		pubkey = (struct sc_pkcs15_pubkey *)data;
-
 		allocated = 0;
 		break;
 	default:
@@ -2207,7 +2241,7 @@ select_intrinsic_id(struct sc_pkcs15_card *p15card, struct sc_profile *profile,
 	else if (pubkey->algorithm == SC_ALGORITHM_GOSTR3410 &&
 			!pubkey->u.gostr3410.xy.data)
 		goto done;
-	else if (pubkey->algorithm == SC_ALGORITHM_EC && !pubkey->u.ec.ecpointQ.value)		
+	else if (pubkey->algorithm == SC_ALGORITHM_EC && !pubkey->u.ec.ecpointQ.value)
 		goto done;
 
 	/* In Mozilla 'GOST R 34.10' is not yet supported.
@@ -2215,46 +2249,45 @@ select_intrinsic_id(struct sc_pkcs15_card *p15card, struct sc_profile *profile,
 	if (pubkey->algorithm == SC_ALGORITHM_GOSTR3410 && id_style == SC_PKCS15INIT_ID_STYLE_MOZILLA)
 		id_style = SC_PKCS15INIT_ID_STYLE_RFC2459;
 
-	if (id_style == SC_PKCS15INIT_ID_STYLE_MOZILLA)   {
+	switch (id_style)  {
+	case SC_PKCS15INIT_ID_STYLE_MOZILLA:
 		if (pubkey->algorithm == SC_ALGORITHM_RSA)
-			SHA1(pubkey->u.rsa.modulus.data, pubkey->u.rsa.modulus.len, id->value);
+			SHA1(pubkey->u.rsa.modulus.data, pubkey->u.rsa.modulus.len, id.value);
 		else if (pubkey->algorithm == SC_ALGORITHM_DSA)
-			SHA1(pubkey->u.dsa.pub.data, pubkey->u.dsa.pub.len, id->value);
-		else if (pubkey->algorithm == SC_ALGORITHM_EC) {
+			SHA1(pubkey->u.dsa.pub.data, pubkey->u.dsa.pub.len, id.value);
+		else if (pubkey->algorithm == SC_ALGORITHM_EC)
 			/* ID should be SHA1 of the X coordinate according to PKCS#15 v1.1 */
 			/* skip the 04 tag and get the X component */
-			SHA1(pubkey->u.ec.ecpointQ.value+1, (pubkey->u.ec.ecpointQ.len - 1) / 2, id->value);
-		}
+			SHA1(pubkey->u.ec.ecpointQ.value+1, (pubkey->u.ec.ecpointQ.len - 1) / 2, id.value);
 		else
 			goto done;
 
-		id->len = SHA_DIGEST_LENGTH;
-	}
-	else if (id_style == SC_PKCS15INIT_ID_STYLE_RFC2459)  {
-		unsigned char *id_data = NULL;
-		size_t id_data_len = 0;
-
+		id.len = SHA_DIGEST_LENGTH;
+		break;
+	case SC_PKCS15INIT_ID_STYLE_RFC2459:
 		rv = sc_pkcs15_encode_pubkey(ctx, pubkey, &id_data, &id_data_len);
 		LOG_TEST_RET(ctx, rv, "Encoding public key error");
 
 		if (!id_data || !id_data_len)
 			LOG_TEST_RET(ctx, SC_ERROR_INTERNAL, "Encoding public key error");
 
-		SHA1(id_data, id_data_len, id->value);
-		id->len = SHA_DIGEST_LENGTH;
+		SHA1(id_data, id_data_len, id.value);
+		id.len = SHA_DIGEST_LENGTH;
 
-		free(id_data);
-	}
-	else   {
+		break;
+	default:
 		sc_log(ctx, "Unsupported ID style: %i", profile->id_style);
 		LOG_TEST_RET(ctx, SC_ERROR_NOT_SUPPORTED, "Non supported ID style");
 	}
 
 done:
+	memcpy(id_out, &id, sizeof(*id_out));
+	if (id_data)
+		free(id_data);
 	if (allocated)
 		sc_pkcs15_free_pubkey(pubkey);
 
-	LOG_FUNC_RETURN(ctx, id->len);
+	LOG_FUNC_RETURN(ctx, id_out->len);
 #endif
 }
 
@@ -2319,14 +2352,14 @@ select_id(struct sc_pkcs15_card *p15card, int type, struct sc_pkcs15_id *id)
 /*
  * Select a path for a new object
  *  1.	If the object is to be protected by a PIN, use the path
- *  	given in the PIN auth object
+ *	given in the PIN auth object
  *  2.	Otherwise, use the path of the application DF
  *  3.	If the profile defines a key-dir template, the new object
- *  	should go into a subdirectory of the selected DF:
- *  	Instantiate the template, using the ID of the new object
- *  	to uniquify the path. Inside the instantiated template,
- *  	look for a file corresponding to the type of object we
- *  	wish to create ("private-key", "public-key" etc).
+ *	should go into a subdirectory of the selected DF:
+ *	Instantiate the template, using the ID of the new object
+ *	to uniquify the path. Inside the instantiated template,
+ *	look for a file corresponding to the type of object we
+ *	wish to create ("private-key", "public-key" etc).
  */
 static const char *
 get_template_name_from_object (struct sc_pkcs15_object *obj)
@@ -2514,74 +2547,39 @@ sc_pkcs15init_update_dir(struct sc_pkcs15_card *p15card,
 }
 
 
-static char *
-get_generalized_time(struct sc_context *ctx)
-{
-#ifdef HAVE_GETTIMEOFDAY
-	struct timeval tv;
-#endif
-	struct tm *tm_time;
-	time_t t;
-	char*  ret;
-	size_t r;
-
-#ifdef HAVE_GETTIMEOFDAY
-	gettimeofday(&tv, NULL);
-	t = tv.tv_sec;
-#else
-	t = time(NULL);
-#endif
-	tm_time = gmtime(&t);
-	if (tm_time == NULL) {
-		sc_log(ctx, "error: gmtime failed");
-		return NULL;
-	}
-
-	ret = calloc(1, 16);
-	if (ret == NULL) {
-		sc_log(ctx, "error: calloc failed");
-		return NULL;
-	}
-	/* print time in generalized time format */
-	r = strftime(ret, 16, "%Y%m%d%H%M%SZ", tm_time);
-	if (r == 0) {
-		sc_log(ctx, "error: strftime failed");
-		free(ret);
-		return NULL;
-	}
-
-	return ret;
-}
-
-
 static int
 sc_pkcs15init_update_tokeninfo(struct sc_pkcs15_card *p15card, struct sc_profile *profile)
 {
-	struct sc_card	*card = p15card->card;
-	struct sc_pkcs15_tokeninfo tokeninfo;
+	struct sc_context *ctx = p15card->card->ctx;
 	unsigned char	*buf = NULL;
 	size_t		size;
-	int		r;
+	int		rv;
+
+	LOG_FUNC_CALLED(ctx);
 
-	LOG_FUNC_CALLED(p15card->card->ctx);
 	/* set lastUpdate field */
-	if (p15card->tokeninfo->last_update.gtime != NULL)
+	if (p15card->tokeninfo->last_update.gtime != NULL)   {
 		free(p15card->tokeninfo->last_update.gtime);
-	p15card->tokeninfo->last_update.gtime = get_generalized_time(card->ctx);
-	if (p15card->tokeninfo->last_update.gtime == NULL)
-		return SC_ERROR_INTERNAL;
-
-	tokeninfo = *(p15card->tokeninfo);
+		p15card->tokeninfo->last_update.gtime = NULL;
+	}
+	rv = sc_pkcs15_get_generalized_time(ctx, &p15card->tokeninfo->last_update.gtime);
+	LOG_TEST_RET(ctx, rv, "Cannot allocate generalized time string");
 
 	if (profile->ops->emu_update_tokeninfo)
-		return profile->ops->emu_update_tokeninfo(profile, p15card, &tokeninfo);
+		return profile->ops->emu_update_tokeninfo(profile, p15card, p15card->tokeninfo);
 
-	r = sc_pkcs15_encode_tokeninfo(card->ctx, &tokeninfo, &buf, &size);
-	if (r >= 0)
-		r = sc_pkcs15init_update_file(profile, p15card, p15card->file_tokeninfo, buf, size);
+	if (!p15card->file_tokeninfo)   {
+		sc_log(ctx, "No TokenInfo to update");
+		LOG_FUNC_RETURN(ctx, SC_SUCCESS);
+	}
+
+	rv = sc_pkcs15_encode_tokeninfo(ctx, p15card->tokeninfo, &buf, &size);
+	if (rv >= 0)
+		rv = sc_pkcs15init_update_file(profile, p15card, p15card->file_tokeninfo, buf, size);
 	if (buf)
 		free(buf);
-	LOG_FUNC_RETURN(p15card->card->ctx, r);
+
+	LOG_FUNC_RETURN(ctx, rv);
 }
 
 
@@ -2607,9 +2605,8 @@ sc_pkcs15init_update_lastupdate(struct sc_pkcs15_card *p15card, struct sc_profil
 		/* update 'lastUpdate' file */
 		if (last_update->gtime != NULL)
 			free(last_update->gtime);
-		last_update->gtime = get_generalized_time(ctx);
-		if (last_update->gtime == NULL)
-			return SC_ERROR_INTERNAL;
+		r = sc_pkcs15_get_generalized_time(ctx, &last_update->gtime);
+		LOG_TEST_RET(ctx, r, "Cannot allocate generalized time string");
 
 		sc_copy_asn1_entry(c_asn1_last_update, asn1_last_update);
 		lupdate_len = strlen(last_update->gtime);
@@ -2827,6 +2824,7 @@ sc_pkcs15init_change_attrib(struct sc_pkcs15_card *p15card, struct sc_profile *p
 	struct sc_pkcs15_df *df;
 	struct sc_pkcs15_id new_id = *((struct sc_pkcs15_id *) new_value);
 
+	LOG_FUNC_CALLED(ctx);
 	if (object == NULL || object->df == NULL)
 		LOG_TEST_RET(ctx, SC_ERROR_INVALID_ARGUMENTS, "Cannot change attribute");
 	df_type = object->df->type;
@@ -2835,6 +2833,7 @@ sc_pkcs15init_change_attrib(struct sc_pkcs15_card *p15card, struct sc_profile *p
 	if (df == NULL)
 		LOG_TEST_RET(ctx, SC_ERROR_OBJECT_NOT_FOUND, "Cannot change attribute");
 
+	sc_log(ctx, "type of attribute to change %i; DF type %i", new_attrib_type, df_type);
 	switch(new_attrib_type)   {
 	case P15_ATTR_TYPE_LABEL:
 		if (new_len >= SC_PKCS15_MAX_LABEL_SIZE)
@@ -2882,7 +2881,9 @@ sc_pkcs15init_change_attrib(struct sc_pkcs15_card *p15card, struct sc_profile *p
 		}
 	}
 
-	return r < 0 ? r : 0;
+	if (r > 0)
+		r = 0;
+	LOG_FUNC_RETURN(ctx, r);
 }
 
 
@@ -3003,8 +3004,8 @@ sc_pkcs15init_update_certificate(struct sc_pkcs15_card *p15card,
 		if (r < 0 && r != SC_ERROR_NOT_SUPPORTED)
 			goto done;
 
- 		r = sc_create_file(p15card->card, file);
- 		if (r < 0)   {
+		r = sc_create_file(p15card->card, file);
+		if (r < 0)   {
 			sc_log(ctx, "Cannot create cert file");
 			goto done;
 		}
@@ -3015,7 +3016,7 @@ sc_pkcs15init_update_certificate(struct sc_pkcs15_card *p15card,
 
 		/* FCI of selected cert file do not contains ACLs.
 		 * For the 'UPDATE' authentication use instead sc_file
-		 * 	instantiated from card profile with default ACLs. */
+		 *	instantiated from card profile with default ACLs. */
 		sc_file_free(file);
 
 		r = select_object_path(p15card, profile, obj, &tmp_path);
@@ -3479,6 +3480,9 @@ sc_pkcs15init_update_file(struct sc_profile *profile,
 	int		r, need_to_zap = 0;
 
 	LOG_FUNC_CALLED(ctx);
+	if (!file)
+		LOG_FUNC_RETURN(ctx, SC_ERROR_INVALID_ARGUMENTS);
+
 	sc_log(ctx, "path:%s; datalen:%i", sc_print_path(&file->path), datalen);
 
 	r = sc_select_file(p15card->card, &file->path, &selected_file);
@@ -3723,21 +3727,22 @@ sc_pkcs15init_qualify_pin(struct sc_card *card, const char *pin_name,
 	struct sc_context *ctx = card->ctx;
 	struct sc_pkcs15_pin_attributes *pin_attrs;
 
+	LOG_FUNC_CALLED(ctx);
 	if (pin_len == 0 || auth_info->auth_type != SC_PKCS15_PIN_AUTH_TYPE_PIN)
-		return SC_SUCCESS;
+		LOG_FUNC_RETURN(ctx, SC_SUCCESS);
 
 	pin_attrs = &auth_info->attrs.pin;
 
 	if (pin_len < pin_attrs->min_length) {
 		sc_log(ctx, "%s too short (min length %u)", pin_name, pin_attrs->min_length);
-		return SC_ERROR_WRONG_LENGTH;
+		LOG_FUNC_RETURN(ctx, SC_ERROR_WRONG_LENGTH);
 	}
 	if (pin_len > pin_attrs->max_length) {
 		sc_log(ctx, "%s too long (max length %u)", pin_name, pin_attrs->max_length);
-		return SC_ERROR_WRONG_LENGTH;
+		LOG_FUNC_RETURN(ctx, SC_ERROR_WRONG_LENGTH);
 	}
 
-	return SC_SUCCESS;
+	LOG_FUNC_RETURN(ctx, SC_SUCCESS);
 }
 
 
diff --git a/src/pkcs15init/pkcs15-myeid.c b/src/pkcs15init/pkcs15-myeid.c
index 816e039..4ade697 100644
--- a/src/pkcs15init/pkcs15-myeid.c
+++ b/src/pkcs15init/pkcs15-myeid.c
@@ -174,10 +174,10 @@ myeid_init_card(sc_profile_t *profile,
 
         r = sc_card_ctl(p15card->card, SC_CARDCTL_GET_SERIALNR, &rbuf);
 	LOG_TEST_RET(p15card->card->ctx, r,  "Get applet info failed");
-        
+
         sc_format_path("3F00", &path);
 	r = sc_select_file(p15card->card, &path, &file);
-        
+
 	if (file)
 		sc_file_free(file);
 
@@ -421,6 +421,7 @@ myeid_create_key(struct sc_profile *profile, struct sc_pkcs15_card *p15card,
 					"Unsupported RSA key size");
 			break;
 		case SC_PKCS15_TYPE_PRKEY_EC:
+			LOG_TEST_RET(ctx, SC_ERROR_NOT_IMPLEMENTED, "20140202: waiting for cards and specification from Aventra. VTA");
 			if (sc_card_find_ec_alg(p15card->card, keybits) == NULL)
 				LOG_TEST_RET(ctx, SC_ERROR_INVALID_ARGUMENTS,
 					"Unsupported EC key size");
@@ -474,26 +475,27 @@ myeid_store_key(struct sc_profile *profile, struct sc_pkcs15_card *p15card,
 	int r, keybits = key_info->modulus_length;
 
 	LOG_FUNC_CALLED(ctx);
-	
+
 	switch (object->type) {
 		case SC_PKCS15_TYPE_PRKEY_RSA:
 			if (sc_card_find_rsa_alg(p15card->card, keybits) == NULL)
 				LOG_TEST_RET(ctx, SC_ERROR_INVALID_ARGUMENTS, "Unsupported RSA key size");
 			break;
 		case SC_PKCS15_TYPE_PRKEY_EC:
+			LOG_TEST_RET(ctx, SC_ERROR_NOT_IMPLEMENTED, "20140202: waiting for cards and specification from Aventra. VTA");
 			if (sc_card_find_ec_alg(p15card->card, keybits) == NULL)
 				LOG_TEST_RET(ctx, SC_ERROR_INVALID_ARGUMENTS, "Unsupported EC key size");
 			if(key_info->field_length != 0)
 				keybits = key_info->field_length;
-			else 
+			else
 				key_info->field_length = keybits;
-				
+
 			break;
 		default:
 			LOG_TEST_RET(ctx, SC_ERROR_INVALID_ARGUMENTS, "Store key failed: Unsupported key type");
 			break;
 	}
-	
+
 	sc_log(ctx, "store MyEID key with ID:%s and path:%s",
 			sc_pkcs15_print_id(&key_info->id), sc_print_path(&key_info->path));
 
@@ -569,13 +571,15 @@ myeid_generate_key(struct sc_profile *profile, struct sc_pkcs15_card *p15card,
 				LOG_TEST_RET(ctx, SC_ERROR_INVALID_ARGUMENTS, "Unsupported RSA key size");
 			break;
 		case SC_PKCS15_TYPE_PRKEY_EC:
+			LOG_TEST_RET(ctx, SC_ERROR_NOT_IMPLEMENTED, "20140202: waiting for cards and specification from Aventra. VTA");
+
 			if (sc_card_find_ec_alg(p15card->card, keybits) == NULL)
 				LOG_TEST_RET(ctx, SC_ERROR_INVALID_ARGUMENTS, "Unsupported EC key size");
 			if(key_info->field_length != 0)
 				keybits = key_info->field_length;
-			else 
+			else
 				key_info->field_length = keybits;
-				
+
 			break;
 		default:
 			LOG_TEST_RET(ctx, SC_ERROR_INVALID_ARGUMENTS, "Unsupported key type");
@@ -635,7 +639,7 @@ myeid_generate_key(struct sc_profile *profile, struct sc_pkcs15_card *p15card,
 				LOG_TEST_RET(ctx, SC_ERROR_PKCS15INIT, "Cannot get RSA key modulus: invalid key-size");
 
 			memcpy(pubkey->u.rsa.modulus.data, raw_pubkey, pubkey->u.rsa.modulus.len);
-		} 
+		}
 		else if (object->type == SC_PKCS15_TYPE_PRKEY_EC) {
 
 			pubkey->algorithm = SC_ALGORITHM_EC;
@@ -651,14 +655,25 @@ myeid_generate_key(struct sc_profile *profile, struct sc_pkcs15_card *p15card,
 			r = sc_card_ctl(card, SC_CARDCTL_MYEID_GETDATA, &data_obj);
 			LOG_TEST_RET(ctx, r, "Cannot get EC public key: 'MYEID_GETDATA' failed");
 
+			/*
+			 * TODO DEE - this looks like a bug...
+			 * pubkey->u.ec.ecpointQ.value is just value. "04||X||Y"
+			 * pubkey->data.value should be DER OCTET STRING
+			 * but
+			 * pubkey->data.value looks like TLV with TAG if 0x86
+			 * and single byte length.
+			 * Could call sc_pkcs15_encode_pubkey
+			 * to set pubkey->data.value
+			 */
+
 			pubkey->u.ec.ecpointQ.value = malloc(data_obj.DataLen - 2);
 			pubkey->u.ec.ecpointQ.len = data_obj.DataLen - 2;
-			pubkey->data.value = malloc(data_obj.DataLen);
-			pubkey->data.len = data_obj.DataLen;
+			//pubkey->data.value = malloc(data_obj.DataLen);
+			//pubkey->data.len = data_obj.DataLen;
 			pubkey->u.ec.params.field_length = keybits;
 			/* Omit the first 2 bytes (0x86??) */
 			memcpy(pubkey->u.ec.ecpointQ.value, data_obj.Data + 2, data_obj.DataLen - 2);
-			memcpy(pubkey->data.value, data_obj.Data, data_obj.DataLen);
+			//memcpy(pubkey->data.value, data_obj.Data, data_obj.DataLen);
 		}
 	}
 
diff --git a/src/pkcs15init/pkcs15-oberthur-awp.c b/src/pkcs15init/pkcs15-oberthur-awp.c
index 39abef0..18032fb 100644
--- a/src/pkcs15init/pkcs15-oberthur-awp.c
+++ b/src/pkcs15init/pkcs15-oberthur-awp.c
@@ -1565,7 +1565,7 @@ awp_update_df_create(struct sc_pkcs15_card *p15card, struct sc_profile *profile,
 		struct sc_pkcs15_object *object)
 {
 	struct sc_context *ctx = p15card->card->ctx;
-	int rv;
+	int rv = SC_ERROR_INTERNAL;
 
 	SC_FUNC_CALLED(ctx, SC_LOG_DEBUG_NORMAL);
 	if (!object)
@@ -1891,7 +1891,7 @@ awp_update_df_delete(struct sc_pkcs15_card *p15card, struct sc_profile *profile,
 		struct sc_pkcs15_object *object)
 {
 	struct sc_context *ctx = p15card->card->ctx;
-	int rv;
+	int rv = SC_ERROR_INTERNAL;
 
 	SC_FUNC_CALLED(ctx, SC_LOG_DEBUG_NORMAL);
 	if (!object)
diff --git a/src/pkcs15init/pkcs15-sc-hsm.c b/src/pkcs15init/pkcs15-sc-hsm.c
index eaa71b5..aa02e4e 100644
--- a/src/pkcs15init/pkcs15-sc-hsm.c
+++ b/src/pkcs15init/pkcs15-sc-hsm.c
@@ -47,88 +47,6 @@ static u8 pubexp[] = { 0x01, 0x00, 0x01 };
 
 
 
-#define C_ASN1_EC_POINTQ_SIZE 2
-static struct sc_asn1_entry c_asn1_ec_pointQ[C_ASN1_EC_POINTQ_SIZE] = {
-	{ "ecpointQ", SC_ASN1_OCTET_STRING, SC_ASN1_TAG_OCTET_STRING, SC_ASN1_ALLOC, NULL, NULL },
-	{ NULL, 0, 0, 0, NULL, NULL }
-};
-
-
-
-struct ec_curve {
-	const struct sc_lv_data oid;
-	const struct sc_lv_data prime;
-	const struct sc_lv_data coefficientA;
-	const struct sc_lv_data coefficientB;
-	const struct sc_lv_data basePointG;
-	const struct sc_lv_data order;
-	const struct sc_lv_data coFactor;
-};
-
-
-
-static struct ec_curve curves[] = {
-		{
-				{ "\x2A\x86\x48\xCE\x3D\x03\x01\x01", 8},	// secp192r1 aka prime192r1
-				{ "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFE\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF", 24},
-				{ "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFE\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC", 24},
-				{ "\x64\x21\x05\x19\xE5\x9C\x80\xE7\x0F\xA7\xE9\xAB\x72\x24\x30\x49\xFE\xB8\xDE\xEC\xC1\x46\xB9\xB1", 24},
-				{ "\x04\x18\x8D\xA8\x0E\xB0\x30\x90\xF6\x7C\xBF\x20\xEB\x43\xA1\x88\x00\xF4\xFF\x0A\xFD\x82\xFF\x10\x12\x07\x19\x2B\x95\xFF\xC8\xDA\x78\x63\x10\x11\xED\x6B\x24\xCD\xD5\x73\xF9\x77\xA1\x1E\x79\x48\x11", 49},
-				{ "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x99\xDE\xF8\x36\x14\x6B\xC9\xB1\xB4\xD2\x28\x31", 24},
-				{ "\x01", 1}
-		},
-		{
-				{ "\x2A\x86\x48\xCE\x3D\x03\x01\x07", 8},	// secp256r1 aka prime256r1
-				{ "\xFF\xFF\xFF\xFF\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF", 32},
-				{ "\xFF\xFF\xFF\xFF\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC", 32},
-				{ "\x5A\xC6\x35\xD8\xAA\x3A\x93\xE7\xB3\xEB\xBD\x55\x76\x98\x86\xBC\x65\x1D\x06\xB0\xCC\x53\xB0\xF6\x3B\xCE\x3C\x3E\x27\xD2\x60\x4B", 32},
-				{ "\x04\x6B\x17\xD1\xF2\xE1\x2C\x42\x47\xF8\xBC\xE6\xE5\x63\xA4\x40\xF2\x77\x03\x7D\x81\x2D\xEB\x33\xA0\xF4\xA1\x39\x45\xD8\x98\xC2\x96\x4F\xE3\x42\xE2\xFE\x1A\x7F\x9B\x8E\xE7\xEB\x4A\x7C\x0F\x9E\x16\x2B\xCE\x33\x57\x6B\x31\x5E\xCE\xCB\xB6\x40\x68\x37\xBF\x51\xF5", 65},
-				{ "\xFF\xFF\xFF\xFF\x00\x00\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xBC\xE6\xFA\xAD\xA7\x17\x9E\x84\xF3\xB9\xCA\xC2\xFC\x63\x25\x51", 32},
-				{ "\x01", 1}
-		},
-		{
-				{ "\x2B\x24\x03\x03\x02\x08\x01\x01\x03", 9},	// brainpoolP192r1
-				{ "\xC3\x02\xF4\x1D\x93\x2A\x36\xCD\xA7\xA3\x46\x30\x93\xD1\x8D\xB7\x8F\xCE\x47\x6D\xE1\xA8\x62\x97", 24},
-				{ "\x6A\x91\x17\x40\x76\xB1\xE0\xE1\x9C\x39\xC0\x31\xFE\x86\x85\xC1\xCA\xE0\x40\xE5\xC6\x9A\x28\xEF", 24},
-				{ "\x46\x9A\x28\xEF\x7C\x28\xCC\xA3\xDC\x72\x1D\x04\x4F\x44\x96\xBC\xCA\x7E\xF4\x14\x6F\xBF\x25\xC9", 24},
-				{ "\x04\xC0\xA0\x64\x7E\xAA\xB6\xA4\x87\x53\xB0\x33\xC5\x6C\xB0\xF0\x90\x0A\x2F\x5C\x48\x53\x37\x5F\xD6\x14\xB6\x90\x86\x6A\xBD\x5B\xB8\x8B\x5F\x48\x28\xC1\x49\x00\x02\xE6\x77\x3F\xA2\xFA\x29\x9B\x8F", 49},
-				{ "\xC3\x02\xF4\x1D\x93\x2A\x36\xCD\xA7\xA3\x46\x2F\x9E\x9E\x91\x6B\x5B\xE8\xF1\x02\x9A\xC4\xAC\xC1", 24},
-				{ "\x01", 1}
-		},
-		{
-				{ "\x2B\x24\x03\x03\x02\x08\x01\x01\x05", 9},	// brainpoolP224r1
-				{ "\xD7\xC1\x34\xAA\x26\x43\x66\x86\x2A\x18\x30\x25\x75\xD1\xD7\x87\xB0\x9F\x07\x57\x97\xDA\x89\xF5\x7E\xC8\xC0\xFF", 28},
-				{ "\x68\xA5\xE6\x2C\xA9\xCE\x6C\x1C\x29\x98\x03\xA6\xC1\x53\x0B\x51\x4E\x18\x2A\xD8\xB0\x04\x2A\x59\xCA\xD2\x9F\x43", 28},
-				{ "\x25\x80\xF6\x3C\xCF\xE4\x41\x38\x87\x07\x13\xB1\xA9\x23\x69\xE3\x3E\x21\x35\xD2\x66\xDB\xB3\x72\x38\x6C\x40\x0B", 28},
-				{ "\x04\x0D\x90\x29\xAD\x2C\x7E\x5C\xF4\x34\x08\x23\xB2\xA8\x7D\xC6\x8C\x9E\x4C\xE3\x17\x4C\x1E\x6E\xFD\xEE\x12\xC0\x7D\x58\xAA\x56\xF7\x72\xC0\x72\x6F\x24\xC6\xB8\x9E\x4E\xCD\xAC\x24\x35\x4B\x9E\x99\xCA\xA3\xF6\xD3\x76\x14\x02\xCD", 57},
-				{ "\xD7\xC1\x34\xAA\x26\x43\x66\x86\x2A\x18\x30\x25\x75\xD0\xFB\x98\xD1\x16\xBC\x4B\x6D\xDE\xBC\xA3\xA5\xA7\x93\x9F", 28},
-				{ "\x01", 1}
-		},
-		{
-				{ "\x2B\x24\x03\x03\x02\x08\x01\x01\x07", 9},	// brainpoolP256r1
-				{ "\xA9\xFB\x57\xDB\xA1\xEE\xA9\xBC\x3E\x66\x0A\x90\x9D\x83\x8D\x72\x6E\x3B\xF6\x23\xD5\x26\x20\x28\x20\x13\x48\x1D\x1F\x6E\x53\x77", 32},
-				{ "\x7D\x5A\x09\x75\xFC\x2C\x30\x57\xEE\xF6\x75\x30\x41\x7A\xFF\xE7\xFB\x80\x55\xC1\x26\xDC\x5C\x6C\xE9\x4A\x4B\x44\xF3\x30\xB5\xD9", 32},
-				{ "\x26\xDC\x5C\x6C\xE9\x4A\x4B\x44\xF3\x30\xB5\xD9\xBB\xD7\x7C\xBF\x95\x84\x16\x29\x5C\xF7\xE1\xCE\x6B\xCC\xDC\x18\xFF\x8C\x07\xB6", 32},
-				{ "\x04\x8B\xD2\xAE\xB9\xCB\x7E\x57\xCB\x2C\x4B\x48\x2F\xFC\x81\xB7\xAF\xB9\xDE\x27\xE1\xE3\xBD\x23\xC2\x3A\x44\x53\xBD\x9A\xCE\x32\x62\x54\x7E\xF8\x35\xC3\xDA\xC4\xFD\x97\xF8\x46\x1A\x14\x61\x1D\xC9\xC2\x77\x45\x13\x2D\xED\x8E\x54\x5C\x1D\x54\xC7\x2F\x04\x69\x97", 65},
-				{ "\xA9\xFB\x57\xDB\xA1\xEE\xA9\xBC\x3E\x66\x0A\x90\x9D\x83\x8D\x71\x8C\x39\x7A\xA3\xB5\x61\xA6\xF7\x90\x1E\x0E\x82\x97\x48\x56\xA7", 32},
-				{ "\x01", 1}
-		},
-		{
-				{ "\x2B\x24\x03\x03\x02\x08\x01\x01\x09", 9},	// brainpoolP320r1
-				{ "\xD3\x5E\x47\x20\x36\xBC\x4F\xB7\xE1\x3C\x78\x5E\xD2\x01\xE0\x65\xF9\x8F\xCF\xA6\xF6\xF4\x0D\xEF\x4F\x92\xB9\xEC\x78\x93\xEC\x28\xFC\xD4\x12\xB1\xF1\xB3\x2E\x27", 40},
-				{ "\x3E\xE3\x0B\x56\x8F\xBA\xB0\xF8\x83\xCC\xEB\xD4\x6D\x3F\x3B\xB8\xA2\xA7\x35\x13\xF5\xEB\x79\xDA\x66\x19\x0E\xB0\x85\xFF\xA9\xF4\x92\xF3\x75\xA9\x7D\x86\x0E\xB4", 40},
-				{ "\x52\x08\x83\x94\x9D\xFD\xBC\x42\xD3\xAD\x19\x86\x40\x68\x8A\x6F\xE1\x3F\x41\x34\x95\x54\xB4\x9A\xCC\x31\xDC\xCD\x88\x45\x39\x81\x6F\x5E\xB4\xAC\x8F\xB1\xF1\xA6", 40},
-				{ "\x04\x43\xBD\x7E\x9A\xFB\x53\xD8\xB8\x52\x89\xBC\xC4\x8E\xE5\xBF\xE6\xF2\x01\x37\xD1\x0A\x08\x7E\xB6\xE7\x87\x1E\x2A\x10\xA5\x99\xC7\x10\xAF\x8D\x0D\x39\xE2\x06\x11\x14\xFD\xD0\x55\x45\xEC\x1C\xC8\xAB\x40\x93\x24\x7F\x77\x27\x5E\x07\x43\xFF\xED\x11\x71\x82\xEA\xA9\xC7\x78\x77\xAA\xAC\x6A\xC7\xD3\x52\x45\xD1\x69\x2E\x8E\xE1", 81},
-				{ "\xD3\x5E\x47\x20\x36\xBC\x4F\xB7\xE1\x3C\x78\x5E\xD2\x01\xE0\x65\xF9\x8F\xCF\xA5\xB6\x8F\x12\xA3\x2D\x48\x2E\xC7\xEE\x86\x58\xE9\x86\x91\x55\x5B\x44\xC5\x93\x11", 40},
-				{ "\x01", 1}
-		},
-		{
-				{ NULL, 0}
-		}
-};
-
-
-
 static int sc_hsm_delete_ef(sc_pkcs15_card_t *p15card, u8 prefix, u8 id)
 {
 	sc_card_t *card = p15card->card;
@@ -153,7 +71,6 @@ static int sc_hsm_update_ef(sc_pkcs15_card_t *p15card, u8 prefix, u8 id, int era
 {
 	sc_card_t *card = p15card->card;
 	sc_file_t *file = NULL;
-	sc_file_t newfile;
 	sc_path_t path;
 	u8 fid[2];
 	int r;
@@ -245,29 +162,12 @@ static int sc_hsm_encode_gakp_rsa(struct sc_pkcs15_card *p15card, sc_cvc_t *cvc,
 
 
 
-static int sc_hsm_get_curve(struct sc_pkcs15_card *p15card, struct ec_curve **curve, u8 *oid, size_t oidlen) {
-	int i;
-
-	LOG_FUNC_CALLED(p15card->card->ctx);
-	for (i = 0; curves[i].oid.value; i++) {
-		if ((curves[i].oid.len == oidlen) && !memcmp(curves[i].oid.value, oid, oidlen)) {
-			*curve = &curves[i];
-			return SC_SUCCESS;
-		}
-	}
-	sc_log(p15card->card->ctx, "Unknown curve");
-	LOG_FUNC_RETURN(p15card->card->ctx, SC_ERROR_INVALID_DATA);
-}
-
-
-
 static int sc_hsm_encode_gakp_ec(struct sc_pkcs15_card *p15card, sc_cvc_t *cvc, struct sc_pkcs15_prkey_info *key_info) {
 	struct sc_object_id ecdsaWithSHA256 = { { 0,4,0,127,0,7,2,2,2,2,3,-1 } };
 	struct sc_pkcs15_ec_parameters *ecparams = (struct sc_pkcs15_ec_parameters *)key_info->params.data;
-	struct ec_curve *curve;
+	struct ec_curve *curve = NULL;
 	u8 *curveoid;
 	int curveoidlen;
-	int r;
 
 	LOG_FUNC_CALLED(p15card->card->ctx);
 
@@ -279,7 +179,7 @@ static int sc_hsm_encode_gakp_ec(struct sc_pkcs15_card *p15card, sc_cvc_t *cvc,
 
 	curveoidlen = *curveoid++;
 
-	r = sc_hsm_get_curve(p15card, &curve, curveoid, curveoidlen);
+	sc_pkcs15emu_sc_hsm_get_curve(&curve, curveoid, curveoidlen);
 
 	cvc->primeOrModuluslen = curve->prime.len;
 	cvc->primeOrModulus = malloc(cvc->primeOrModuluslen);
@@ -330,93 +230,10 @@ static int sc_hsm_encode_gakp_ec(struct sc_pkcs15_card *p15card, sc_cvc_t *cvc,
 
 
 
-static int sc_hsm_decode_gakp_rsa(struct sc_pkcs15_card *p15card,
-									sc_cvc_t *cvc,
-									struct sc_pkcs15_prkey_info *key_info,
-									struct sc_pkcs15_pubkey *pubkey)
-{
-	u8 *buf;
-	size_t buflen;
-	int r;
-
-	LOG_FUNC_CALLED(p15card->card->ctx);
-
-	if (((key_info->modulus_length + 7) / 8) != cvc->primeOrModuluslen) {
-		sc_log(p15card->card->ctx, "Modulus size in request does not match generated public key");
-		LOG_FUNC_RETURN(p15card->card->ctx, SC_ERROR_OUT_OF_MEMORY);
-	}
-
-	pubkey->algorithm = SC_ALGORITHM_RSA;
-	pubkey->u.rsa.modulus.len	= cvc->primeOrModuluslen;
-	pubkey->u.rsa.modulus.data	= malloc(pubkey->u.rsa.modulus.len);
-	pubkey->u.rsa.exponent.len	= sizeof(pubexp);
-	pubkey->u.rsa.exponent.data	= malloc(pubkey->u.rsa.exponent.len);
-	if (!pubkey->u.rsa.modulus.data || !pubkey->u.rsa.exponent.data) {
-		LOG_FUNC_RETURN(p15card->card->ctx, SC_ERROR_OUT_OF_MEMORY);
-	}
-	memcpy(pubkey->u.rsa.exponent.data, pubexp, pubkey->u.rsa.exponent.len);
-	memcpy(pubkey->u.rsa.modulus.data, cvc->primeOrModulus, pubkey->u.rsa.modulus.len);
-
-	LOG_FUNC_RETURN(p15card->card->ctx, SC_SUCCESS);
-}
-
-
-
-static int sc_hsm_decode_gakp_ec(struct sc_pkcs15_card *p15card,
-									sc_cvc_t *cvc,
-									struct sc_pkcs15_prkey_info *key_info,
-									struct sc_pkcs15_pubkey *pubkey)
-{
-	struct sc_asn1_entry asn1_ec_pointQ[C_ASN1_EC_POINTQ_SIZE];
-	struct sc_pkcs15_ec_parameters *ecparams = (struct sc_pkcs15_ec_parameters *)(key_info->params.data);
-	struct sc_ec_params *ecp;
-	u8 *buf;
-	size_t buflen;
-	int r;
-
-	LOG_FUNC_CALLED(p15card->card->ctx);
-
-	pubkey->algorithm = SC_ALGORITHM_EC;
-	pubkey->u.ec.params.named_curve = strdup(ecparams->named_curve);
-	sc_pkcs15_fix_ec_parameters(p15card->card->ctx, &pubkey->u.ec.params);
-
-	ecp = calloc(1, sizeof(struct sc_ec_params));
-	if (!ecp) {
-		LOG_FUNC_RETURN(p15card->card->ctx, SC_ERROR_OUT_OF_MEMORY);
-	}
-
-	ecp->der = malloc(ecparams->der.len);
-	if (!ecp->der) {
-		LOG_FUNC_RETURN(p15card->card->ctx, SC_ERROR_OUT_OF_MEMORY);
-	}
-
-	ecp->der_len = ecparams->der.len;
-	memcpy(ecp->der, ecparams->der.value, ecp->der_len);
-
-	pubkey->alg_id = (struct sc_algorithm_id *)calloc(1, sizeof(struct sc_algorithm_id));
-	if (!pubkey->alg_id) {
-		LOG_FUNC_RETURN(p15card->card->ctx, SC_ERROR_OUT_OF_MEMORY);
-	}
-
-	pubkey->alg_id->algorithm = SC_ALGORITHM_EC;
-	pubkey->alg_id->params = ecp;
-
-	sc_copy_asn1_entry(c_asn1_ec_pointQ, asn1_ec_pointQ);
-	sc_format_asn1_entry(asn1_ec_pointQ + 0, cvc->publicPoint, &cvc->publicPointlen, 1);
-
-	r = sc_asn1_encode(p15card->card->ctx, asn1_ec_pointQ, &pubkey->u.ec.ecpointQ.value, &pubkey->u.ec.ecpointQ.len);
-	LOG_TEST_RET(p15card->card->ctx, r, "ASN.1 encoding failed");
-
-	LOG_FUNC_RETURN(p15card->card->ctx, SC_SUCCESS);
-}
-
-
-
 static int sc_hsm_generate_key(struct sc_profile *profile, struct sc_pkcs15_card *p15card,
 															struct sc_pkcs15_object *object,
 															struct sc_pkcs15_pubkey *pubkey)
 {
-	struct sc_context *ctx = p15card->card->ctx;
 	struct sc_card *card = p15card->card;
 	struct sc_pkcs15_prkey_info *key_info = (struct sc_pkcs15_prkey_info *)object->data;
 	sc_cardctl_sc_hsm_keygen_info_t sc_hsm_keyinfo;
@@ -486,14 +303,7 @@ static int sc_hsm_generate_key(struct sc_profile *profile, struct sc_pkcs15_card
 	}
 
 	if (pubkey != NULL) {
-		switch(object->type) {
-		case SC_PKCS15_TYPE_PRKEY_RSA:
-			r = sc_hsm_decode_gakp_rsa(p15card, &cvc, key_info, pubkey);
-			break;
-		case SC_PKCS15_TYPE_PRKEY_EC:
-			r = sc_hsm_decode_gakp_ec(p15card, &cvc, key_info, pubkey);
-			break;
-		}
+		r = sc_pkcs15emu_sc_hsm_get_public_key(p15card->card->ctx, &cvc, pubkey);
 	}
 
 	out:
@@ -522,7 +332,6 @@ static int sc_hsm_emu_store_cert(struct sc_pkcs15_card *p15card, struct sc_profi
 		struct sc_pkcs15_der *data)
 
 {
-	struct sc_context *ctx = p15card->card->ctx;
 	struct sc_pkcs15_cert_info *cert_info = (struct sc_pkcs15_cert_info *) object->data;
 	struct sc_pkcs15_object *prkey;
 	sc_path_t path;
@@ -557,7 +366,6 @@ static int sc_hsm_emu_delete_cert(struct sc_pkcs15_card *p15card, struct sc_prof
 		struct sc_pkcs15_object *object)
 
 {
-	struct sc_context *ctx = p15card->card->ctx;
 	struct sc_pkcs15_cert_info *cert_info = (struct sc_pkcs15_cert_info *) object->data;
 	struct sc_pkcs15_object *prkey;
 	int r;
@@ -580,7 +388,6 @@ static int sc_hsm_emu_store_binary(struct sc_pkcs15_card *p15card, struct sc_pro
 		struct sc_pkcs15_der *data)
 
 {
-	struct sc_context *ctx = p15card->card->ctx;
 	struct sc_pkcs15_data_info *data_info = (struct sc_pkcs15_data_info *) object->data;
 	sc_path_t path;
 	u8 id[2];
@@ -670,7 +477,6 @@ static int sc_hsm_emu_delete_object(struct sc_profile *profile, struct sc_pkcs15
 static int sc_hsm_emu_update_prkd(struct sc_profile *profile, struct sc_pkcs15_card *p15card,
 		struct sc_pkcs15_object *object)
 {
-	struct sc_context *ctx = p15card->card->ctx;
 	struct sc_pkcs15_prkey_info *key_info = (struct sc_pkcs15_prkey_info *)object->data;
 	u8 *buf;
 	size_t buflen;
@@ -689,7 +495,6 @@ static int sc_hsm_emu_update_prkd(struct sc_profile *profile, struct sc_pkcs15_c
 static int sc_hsm_emu_update_dcod(struct sc_profile *profile, struct sc_pkcs15_card *p15card,
 		struct sc_pkcs15_object *object)
 {
-	struct sc_context *ctx = p15card->card->ctx;
 	struct sc_pkcs15_data_info *data_info = (struct sc_pkcs15_data_info *) object->data;
 	u8 *buf;
 	size_t buflen;
@@ -698,7 +503,7 @@ static int sc_hsm_emu_update_dcod(struct sc_profile *profile, struct sc_pkcs15_c
 	r = sc_pkcs15_encode_dodf_entry(p15card->card->ctx, object, &buf, &buflen);
 	LOG_TEST_RET(p15card->card->ctx, r, "Error encoding DCOD entry");
 
-	r = sc_hsm_update_ef(p15card, DCOD_PREFIX, data_info->path.value[1], 0, buf, buflen);
+	r = sc_hsm_update_ef(p15card, DCOD_PREFIX, data_info->path.value[data_info->path.len - 1], 0, buf, buflen);
 	free(buf);
 	return r;
 }
@@ -708,7 +513,6 @@ static int sc_hsm_emu_update_dcod(struct sc_profile *profile, struct sc_pkcs15_c
 static int sc_hsm_emu_update_cd(struct sc_profile *profile, struct sc_pkcs15_card *p15card,
 		struct sc_pkcs15_object *object)
 {
-	struct sc_context *ctx = p15card->card->ctx;
 	struct sc_pkcs15_cert_info *cert_info = (struct sc_pkcs15_cert_info *) object->data;
 	u8 *buf;
 	size_t buflen;
@@ -723,7 +527,7 @@ static int sc_hsm_emu_update_cd(struct sc_profile *profile, struct sc_pkcs15_car
 	r = sc_pkcs15_encode_cdf_entry(p15card->card->ctx, object, &buf, &buflen);
 	LOG_TEST_RET(p15card->card->ctx, r, "Error encoding CD entry");
 
-	r = sc_hsm_update_ef(p15card, CD_PREFIX, cert_info->path.value[1], 0, buf, buflen);
+	r = sc_hsm_update_ef(p15card, CD_PREFIX, cert_info->path.value[cert_info->path.len - 1], 0, buf, buflen);
 	free(buf);
 	return r;
 }
@@ -733,11 +537,7 @@ static int sc_hsm_emu_update_cd(struct sc_profile *profile, struct sc_pkcs15_car
 static int sc_hsm_emu_delete_cd(struct sc_profile *profile, struct sc_pkcs15_card *p15card,
 		struct sc_pkcs15_object *object)
 {
-	struct sc_context *ctx = p15card->card->ctx;
 	struct sc_pkcs15_cert_info *cert_info = (struct sc_pkcs15_cert_info *) object->data;
-	u8 *buf;
-	size_t buflen;
-	int r;
 
 	if ((cert_info->path.len < 2) ||
 		((cert_info->path.value[cert_info->path.len - 2]) != CA_CERTIFICATE_PREFIX)) {
@@ -745,7 +545,7 @@ static int sc_hsm_emu_delete_cd(struct sc_profile *profile, struct sc_pkcs15_car
 		return SC_SUCCESS;
 	}
 
-	return sc_hsm_delete_ef(p15card, CD_PREFIX, ((struct sc_pkcs15_data_info *)object->data)->path.value[1]);
+	return sc_hsm_delete_ef(p15card, CD_PREFIX, cert_info->path.value[cert_info->path.len - 1]);
 }
 
 
diff --git a/src/pkcs15init/pkcs15.profile b/src/pkcs15init/pkcs15.profile
index 18e188e..c98319f 100644
--- a/src/pkcs15init/pkcs15.profile
+++ b/src/pkcs15init/pkcs15.profile
@@ -23,9 +23,9 @@ pkcs15 {
     # Have a lastUpdate field in the EF(TokenInfo)?
     do-last-update	= yes;
     # Method to calculate ID of the crypto objects
+    #     native: 'E' + number_of_present_objects_of_the_same_type
     #     mozilla: SHA1(modulus) for RSA, SHA1(pub) for DSA
     #     rfc2459: SHA1(SequenceASN1 of public key components as ASN1 integers)
-    #     native: 'E' + number_of_present_objects_of_the_same_type
     # default value: 'native'
     pkcs15-id-style	= mozilla;
 }
diff --git a/src/pkcs15init/profile.c b/src/pkcs15init/profile.c
index 55a7f6c..1c560f8 100644
--- a/src/pkcs15init/profile.c
+++ b/src/pkcs15init/profile.c
@@ -110,8 +110,10 @@ static struct map		fileOpNames[] = {
 	{ "SELECT",	SC_AC_OP_SELECT	},
 	{ "LOCK",	SC_AC_OP_LOCK	},
 	{ "DELETE",	SC_AC_OP_DELETE	},
-	{ "DELETE_SELF",SC_AC_OP_DELETE_SELF },
+	{ "DELETE-SELF",SC_AC_OP_DELETE_SELF },
 	{ "CREATE",	SC_AC_OP_CREATE	},
+	{ "CREATE-EF",	SC_AC_OP_CREATE_EF	},
+	{ "CREATE-DF",	SC_AC_OP_CREATE_DF	},
 	{ "REHABILITATE",SC_AC_OP_REHABILITATE	},
 	{ "INVALIDATE",	SC_AC_OP_INVALIDATE	},
 	{ "FILES",	SC_AC_OP_LIST_FILES	},
@@ -123,11 +125,15 @@ static struct map		fileOpNames[] = {
         { "PIN-DEFINE", SC_AC_OP_PIN_DEFINE },
         { "PIN-CHANGE", SC_AC_OP_PIN_CHANGE },
         { "PIN-RESET",  SC_AC_OP_PIN_RESET },
+        { "PIN-USE",	SC_AC_OP_PIN_USE },
 	{ "GENERATE",	SC_AC_OP_GENERATE },
 	{ "PSO-COMPUTE-SIGNATURE",	SC_AC_OP_PSO_COMPUTE_SIGNATURE },
 	{ "INTERNAL-AUTHENTICATE",	SC_AC_OP_INTERNAL_AUTHENTICATE },
 	{ "PSO-DECRYPT",		SC_AC_OP_PSO_DECRYPT },
 	{ "RESIZE",	SC_AC_OP_RESIZE },
+	{ "ADMIN",	SC_AC_OP_ADMIN	},
+	{ "ACTIVATE",	SC_AC_OP_ACTIVATE },
+	{ "DEACTIVATE",	SC_AC_OP_DEACTIVATE },
 	{ NULL, 0 }
 };
 static struct map		fileTypeNames[] = {
@@ -500,6 +506,9 @@ sc_profile_get_pin_info(struct sc_profile *profile,
 	pi = new_pin(profile, id);
 	if (pi == NULL)
 		return;
+
+	pi->pin.tries_left = pi->pin.tries_left;
+	pi->pin.max_tries = pi->pin.tries_left;
 	*info = pi->pin;
 }
 
@@ -1340,6 +1349,36 @@ do_reclength(struct state *cur, int argc, char **argv)
 }
 
 static int
+do_content(struct state *cur, int argc, char **argv)
+{
+	struct sc_file *file = cur->file->file;
+	size_t len = (strlen(argv[0]) + 1) / 2;
+	int rv = 0;
+
+	file->encoded_content = malloc(len);
+	if (!file->encoded_content)
+		return 1;
+	rv = sc_hex_to_bin(argv[0], file->encoded_content, &len);
+	file->encoded_content_len = len;
+	return rv;
+}
+
+static int
+do_prop_attr(struct state *cur, int argc, char **argv)
+{
+	struct sc_file *file = cur->file->file;
+	size_t len = (strlen(argv[0]) + 1) / 2;
+	int rv = 0;
+
+	file->prop_attr = malloc(len);
+	if (!file->prop_attr)
+		return 1;
+	rv = sc_hex_to_bin(argv[0], file->prop_attr, &len);
+	file->prop_attr_len = len;
+	return rv;
+}
+
+static int
 do_aid(struct state *cur, int argc, char **argv)
 {
 	struct sc_file	*file = cur->file->file;
@@ -1439,10 +1478,11 @@ do_acl(struct state *cur, int argc, char **argv)
 			method = SC_AC_SYMBOLIC;
 			if (map_str2int(cur, what+1, &id, pinIdNames))
 				return 1;
-		} else
-		if (get_authid(cur, what, &method, &id))
+		}
+		else if (get_authid(cur, what, &method, &id))
 			goto bad;
 
+
 		if (!strcmp(oper, "*")) {
 			for (op = 0; op < SC_MAX_AC_OPS; op++) {
 				sc_file_clear_acl_entries(file, op);
@@ -1458,6 +1498,7 @@ do_acl(struct state *cur, int argc, char **argv)
 			 || acl->method == SC_AC_NONE
 			 || acl->method == SC_AC_UNKNOWN)
 				sc_file_clear_acl_entries(file, op);
+
 			sc_file_add_acl_entry(file, op, method, id);
 		}
 	}
@@ -1569,6 +1610,18 @@ do_pin_attempts(struct state *cur, int argc, char **argv)
 }
 
 static int
+do_pin_maxunlocks(struct state *cur, int argc, char **argv)
+{
+	struct pin_info	*pi = cur->pin;
+	unsigned int	count;
+
+	if (get_uint(cur, argv[0], &count))
+		return 1;
+	pi->pin.max_unlocks = count;
+	return 0;
+}
+
+static int
 do_pin_type(struct state *cur, int argc, char **argv)
 {
 	unsigned int	type;
@@ -1754,6 +1807,8 @@ static struct command	fs_commands[] = {
  { "profile-extension",	1,	1,	do_profile_extension	},
 /* AID of the DFs without file-id */
  { "exclusive-aid",	1,	1,	do_exclusive_aid	},
+ { "content",		1,	1,	do_content	},
+ { "prop-attr",		1,	1,	do_prop_attr	},
 
  { NULL, 0, 0, NULL }
 };
@@ -1771,16 +1826,17 @@ static struct block	fs_blocks[] = {
  * Pin section
  */
 static struct command	pi_commands[] = {
- { "file",		1,	1,	do_pin_file	},
- { "offset",		1,	1,	do_pin_offset	},
- { "attempts",		1,	2,	do_pin_attempts	},
- { "encoding",		1,	1,	do_pin_type	},
- { "reference",		1,	1,	do_pin_reference},
- { "auth-id",		1,	1,	do_pin_authid	},
- { "max-length",	1,	1,	do_pin_maxlength},
- { "min-length",	1,	1,	do_pin_minlength},
- { "stored-length",	1,	1,	do_pin_storedlength},
- { "flags",		1,	-1,	do_pin_flags	},
+ { "file",		1,	1,	do_pin_file		},
+ { "offset",		1,	1,	do_pin_offset		},
+ { "attempts",		1,	2,	do_pin_attempts		},
+ { "encoding",		1,	1,	do_pin_type		},
+ { "reference",		1,	1,	do_pin_reference	},
+ { "auth-id",		1,	1,	do_pin_authid		},
+ { "max-length",	1,	1,	do_pin_maxlength	},
+ { "min-length",	1,	1,	do_pin_minlength	},
+ { "stored-length",	1,	1,	do_pin_storedlength	},
+ { "max-unlocks",	1,	1,	do_pin_maxunlocks	},
+ { "flags",		1,	-1,	do_pin_flags		},
  { NULL, 0, 0, NULL }
 };
 
diff --git a/src/scconf/Makefile.in b/src/scconf/Makefile.in
deleted file mode 100644
index d23805f..0000000
--- a/src/scconf/Makefile.in
+++ /dev/null
@@ -1,584 +0,0 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
- at SET_MAKE@
-
-# Required to build Windows resource file
-
-
-
-
-VPATH = @srcdir@
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-DIST_COMMON = $(dist_noinst_DATA) $(noinst_HEADERS) \
-	$(srcdir)/Makefile.am $(srcdir)/Makefile.in \
-	$(top_srcdir)/win32/ltrc.inc
-noinst_PROGRAMS = test-conf$(EXEEXT)
-subdir = src/scconf
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_pthread.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-LTLIBRARIES = $(noinst_LTLIBRARIES)
-libscconf_la_LIBADD =
-am_libscconf_la_OBJECTS = scconf.lo parse.lo write.lo sclex.lo
-libscconf_la_OBJECTS = $(am_libscconf_la_OBJECTS)
-AM_V_lt = $(am__v_lt_$(V))
-am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
-am__v_lt_0 = --silent
-PROGRAMS = $(noinst_PROGRAMS)
-am_test_conf_OBJECTS = test-conf.$(OBJEXT)
-test_conf_OBJECTS = $(am_test_conf_OBJECTS)
-test_conf_DEPENDENCIES = libscconf.la \
-	$(top_builddir)/src/common/libcompat.la
-DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
-depcomp = $(SHELL) $(top_srcdir)/depcomp
-am__depfiles_maybe = depfiles
-am__mv = mv -f
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
-	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
-	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
-	$(AM_CFLAGS) $(CFLAGS)
-AM_V_CC = $(am__v_CC_$(V))
-am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
-am__v_CC_0 = @echo "  CC    " $@;
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
-am__v_at_0 = @
-CCLD = $(CC)
-LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CCLD = $(am__v_CCLD_$(V))
-am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
-am__v_CCLD_0 = @echo "  CCLD  " $@;
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo "  GEN   " $@;
-SOURCES = $(libscconf_la_SOURCES) $(test_conf_SOURCES)
-DIST_SOURCES = $(libscconf_la_SOURCES) $(test_conf_SOURCES)
-DATA = $(dist_noinst_DATA)
-HEADERS = $(noinst_HEADERS)
-ETAGS = etags
-CTAGS = ctags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AR = @AR@
-AS = @AS@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEBUG_FILE = @DEBUG_FILE@
-DEFAULT_PCSC_PROVIDER = @DEFAULT_PCSC_PROVIDER@
-DEFAULT_SM_MODULE = @DEFAULT_SM_MODULE@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DLLTOOL = @DLLTOOL@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-FGREP = @FGREP@
-GIT = @GIT@
-GREP = @GREP@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBOBJS = @LIBOBJS@
-LIBRARY_BITNESS = @LIBRARY_BITNESS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-NM = @NM@
-NMEDIT = @NMEDIT@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OPENCT_CFLAGS = @OPENCT_CFLAGS@
-OPENCT_LIBS = @OPENCT_LIBS@
-OPENSC_LT_AGE = @OPENSC_LT_AGE@
-OPENSC_LT_CURRENT = @OPENSC_LT_CURRENT@
-OPENSC_LT_OLDEST = @OPENSC_LT_OLDEST@
-OPENSC_LT_REVISION = @OPENSC_LT_REVISION@
-OPENSC_VERSION_FIX = @OPENSC_VERSION_FIX@
-OPENSC_VERSION_MAJOR = @OPENSC_VERSION_MAJOR@
-OPENSC_VERSION_MINOR = @OPENSC_VERSION_MINOR@
-OPENSSL_CFLAGS = @OPENSSL_CFLAGS@
-OPENSSL_LIBS = @OPENSSL_LIBS@
-OPTIONAL_OPENCT_CFLAGS = @OPTIONAL_OPENCT_CFLAGS@
-OPTIONAL_OPENCT_LIBS = @OPTIONAL_OPENCT_LIBS@
-OPTIONAL_OPENSSL_CFLAGS = @OPTIONAL_OPENSSL_CFLAGS@
-OPTIONAL_OPENSSL_LIBS = @OPTIONAL_OPENSSL_LIBS@
-OPTIONAL_PCSC_CFLAGS = @OPTIONAL_PCSC_CFLAGS@
-OPTIONAL_READLINE_CFLAGS = @OPTIONAL_READLINE_CFLAGS@
-OPTIONAL_READLINE_LIBS = @OPTIONAL_READLINE_LIBS@
-OPTIONAL_ZLIB_CFLAGS = @OPTIONAL_ZLIB_CFLAGS@
-OPTIONAL_ZLIB_LIBS = @OPTIONAL_ZLIB_LIBS@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PCSC_CFLAGS = @PCSC_CFLAGS@
-PCSC_LIBS = @PCSC_LIBS@
-PKG_CONFIG = @PKG_CONFIG@
-PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
-PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
-PTHREAD_CC = @PTHREAD_CC@
-PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
-PTHREAD_LIBS = @PTHREAD_LIBS@
-RANLIB = @RANLIB@
-RC = @RC@
-READLINE_CFLAGS = @READLINE_CFLAGS@
-READLINE_LIBS = @READLINE_LIBS@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-WIN_LIBPREFIX = @WIN_LIBPREFIX@
-XSLTPROC = @XSLTPROC@
-ZLIB_CFLAGS = @ZLIB_CFLAGS@
-ZLIB_LIBS = @ZLIB_LIBS@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-ax_pthread_config = @ax_pthread_config@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-git = @git@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-pkcs11dir = @pkcs11dir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-xslstylesheetsdir = @xslstylesheetsdir@
-RCCOMPILE = $(RC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS)
-
-LTRCCOMPILE = $(LIBTOOL) --mode=compile --tag=RC $(RCCOMPILE)
-MAINTAINERCLEANFILES = $(srcdir)/Makefile.in 
-DISTCLEANFILES = lex-parse.c
-EXTRA_DIST = Makefile.mak
-dist_noinst_DATA = README.scconf lex-parse.l
-noinst_HEADERS = internal.h scconf.h
-noinst_LTLIBRARIES = libscconf.la
-AM_CPPFLAGS = -I$(top_srcdir)/src
-libscconf_la_SOURCES = scconf.c parse.c write.c sclex.c 
-test_conf_SOURCES = test-conf.c
-test_conf_LDADD = libscconf.la $(top_builddir)/src/common/libcompat.la
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .c .lo .o .obj .rc
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am $(top_srcdir)/win32/ltrc.inc $(am__configure_deps)
-	@for dep in $?; do \
-	  case '$(am__configure_deps)' in \
-	    *$$dep*) \
-	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
-	        && { if test -f $@; then exit 0; else break; fi; }; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/scconf/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --foreign src/scconf/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-	@case '$?' in \
-	  *config.status*) \
-	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-	esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure:  $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-
-clean-noinstLTLIBRARIES:
-	-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
-	@list='$(noinst_LTLIBRARIES)'; for p in $$list; do \
-	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
-	  test "$$dir" != "$$p" || dir=.; \
-	  echo "rm -f \"$${dir}/so_locations\""; \
-	  rm -f "$${dir}/so_locations"; \
-	done
-libscconf.la: $(libscconf_la_OBJECTS) $(libscconf_la_DEPENDENCIES) 
-	$(AM_V_CCLD)$(LINK)  $(libscconf_la_OBJECTS) $(libscconf_la_LIBADD) $(LIBS)
-
-clean-noinstPROGRAMS:
-	@list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \
-	echo " rm -f" $$list; \
-	rm -f $$list || exit $$?; \
-	test -n "$(EXEEXT)" || exit 0; \
-	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
-	echo " rm -f" $$list; \
-	rm -f $$list
-test-conf$(EXEEXT): $(test_conf_OBJECTS) $(test_conf_DEPENDENCIES) 
-	@rm -f test-conf$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(test_conf_OBJECTS) $(test_conf_LDADD) $(LIBS)
-
-mostlyclean-compile:
-	-rm -f *.$(OBJEXT)
-
-distclean-compile:
-	-rm -f *.tab.c
-
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/parse.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/scconf.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/sclex.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/test-conf.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/write.Plo at am__quote@
-
-.c.o:
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(COMPILE) -c $<
-
-.c.obj:
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
-
-.c.lo:
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
- at am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $<
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	set x; \
-	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	shift; \
-	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
-	  test -n "$$unique" || unique=$$empty_fix; \
-	  if test $$# -gt 0; then \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      "$$@" $$unique; \
-	  else \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      $$unique; \
-	  fi; \
-	fi
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	test -z "$(CTAGS_ARGS)$$unique" \
-	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$unique
-
-GTAGS:
-	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && $(am__cd) $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) "$$here"
-
-distclean-tags:
-	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d "$(distdir)/$$file"; then \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-	  else \
-	    test -f "$(distdir)/$$file" \
-	    || cp -p $$d/$$file "$(distdir)/$$file" \
-	    || exit 1; \
-	  fi; \
-	done
-check-am: all-am
-check: check-am
-all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) $(DATA) $(HEADERS)
-installdirs:
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
-
-maintainer-clean-generic:
-	@echo "This command is intended for maintainers to use"
-	@echo "it deletes files that may require special tools to rebuild."
-	-test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
-clean: clean-am
-
-clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
-	clean-noinstPROGRAMS mostlyclean-am
-
-distclean: distclean-am
-	-rm -rf ./$(DEPDIR)
-	-rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
-	distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am:
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am:
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
-	-rm -rf ./$(DEPDIR)
-	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-compile mostlyclean-generic \
-	mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am:
-
-.MAKE: install-am install-strip
-
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
-	clean-libtool clean-noinstLTLIBRARIES clean-noinstPROGRAMS \
-	ctags distclean distclean-compile distclean-generic \
-	distclean-libtool distclean-tags distdir dvi dvi-am html \
-	html-am info info-am install install-am install-data \
-	install-data-am install-dvi install-dvi-am install-exec \
-	install-exec-am install-html install-html-am install-info \
-	install-info-am install-man install-pdf install-pdf-am \
-	install-ps install-ps-am install-strip installcheck \
-	installcheck-am installdirs maintainer-clean \
-	maintainer-clean-generic mostlyclean mostlyclean-compile \
-	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-	tags uninstall uninstall-am
-
-
-.rc.lo:
-	$(LTRCCOMPILE) -i "$<" -o "$@"
-
-.rc.o:
-	$(RCCOMPILE) -i "$<" -o "$@"
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/src/scconf/scconf.c b/src/scconf/scconf.c
index d24c7d7..402b679 100644
--- a/src/scconf/scconf.c
+++ b/src/scconf/scconf.c
@@ -97,7 +97,12 @@ scconf_block **scconf_find_blocks(const scconf_context * config, const scconf_bl
 	}
 	size = 0;
 	alloc_size = 10;
-	blocks = (scconf_block **) realloc(blocks, sizeof(scconf_block *) * alloc_size);
+	tmp = (scconf_block **) realloc(blocks, sizeof(scconf_block *) * alloc_size);
+	if (!tmp) {
+		free(blocks);
+		return NULL;
+	}
+	blocks = tmp;
 
 	for (item = block->items; item; item = item->next) {
 		if (item->type == SCCONF_ITEM_TYPE_BLOCK &&
diff --git a/src/scconf/write.c b/src/scconf/write.c
index 9c963e5..7ef3a2d 100644
--- a/src/scconf/write.c
+++ b/src/scconf/write.c
@@ -83,10 +83,12 @@ static char *scconf_list_get_string(scconf_list * list)
 	}
 	len = 0;
 	alloc_len = 1024;
-	buffer = (char *) realloc(buffer, alloc_len);
-	if (!buffer) {
+	tmp = (char *) realloc(buffer, alloc_len);
+	if (!tmp) {
+		free(buffer);
 		return strdup("");
 	}
+	buffer = tmp;
 	memset(buffer, 0, alloc_len);
 	while (list) {
 		datalen = strlen(list->data);
diff --git a/src/sm/Makefile.in b/src/sm/Makefile.in
deleted file mode 100644
index 54a499d..0000000
--- a/src/sm/Makefile.in
+++ /dev/null
@@ -1,607 +0,0 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
- at SET_MAKE@
-
-# Process this file with automake to create Makefile.in
-
-VPATH = @srcdir@
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-subdir = src/sm
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_pthread.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
-  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
-  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
-  for p in $$list; do echo "$$p $$p"; done | \
-  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
-  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
-    if (++n[$$2] == $(am__install_max)) \
-      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
-    END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
-  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
-  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__installdirs = "$(DESTDIR)$(libdir)"
-LTLIBRARIES = $(lib_LTLIBRARIES)
-am__DEPENDENCIES_1 =
-libsmm_local_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
-	../libopensc/libopensc.la
-am_libsmm_local_la_OBJECTS = smm-local.lo sm-common.lo \
-	sm-global-platform.lo sm-cwa14890.lo sm-card-authentic.lo \
-	sm-card-iasecc.lo
-libsmm_local_la_OBJECTS = $(am_libsmm_local_la_OBJECTS)
-AM_V_lt = $(am__v_lt_$(V))
-am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
-am__v_lt_0 = --silent
-libsmm_local_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
-	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
-	$(AM_CFLAGS) $(CFLAGS) $(libsmm_local_la_LDFLAGS) $(LDFLAGS) \
-	-o $@
-DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
-depcomp = $(SHELL) $(top_srcdir)/depcomp
-am__depfiles_maybe = depfiles
-am__mv = mv -f
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
-	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
-	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
-	$(AM_CFLAGS) $(CFLAGS)
-AM_V_CC = $(am__v_CC_$(V))
-am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
-am__v_CC_0 = @echo "  CC    " $@;
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
-am__v_at_0 = @
-CCLD = $(CC)
-LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CCLD = $(am__v_CCLD_$(V))
-am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
-am__v_CCLD_0 = @echo "  CCLD  " $@;
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo "  GEN   " $@;
-SOURCES = $(libsmm_local_la_SOURCES)
-DIST_SOURCES = $(libsmm_local_la_SOURCES)
-ETAGS = etags
-CTAGS = ctags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AR = @AR@
-AS = @AS@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEBUG_FILE = @DEBUG_FILE@
-DEFAULT_PCSC_PROVIDER = @DEFAULT_PCSC_PROVIDER@
-DEFAULT_SM_MODULE = @DEFAULT_SM_MODULE@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DLLTOOL = @DLLTOOL@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-FGREP = @FGREP@
-GIT = @GIT@
-GREP = @GREP@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBOBJS = @LIBOBJS@
-LIBRARY_BITNESS = @LIBRARY_BITNESS@
-LIBS = $(top_builddir)/src/libopensc/libopensc.la $(top_builddir)/src/common/libcompat.la
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-NM = @NM@
-NMEDIT = @NMEDIT@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OPENCT_CFLAGS = @OPENCT_CFLAGS@
-OPENCT_LIBS = @OPENCT_LIBS@
-OPENSC_LT_AGE = @OPENSC_LT_AGE@
-OPENSC_LT_CURRENT = @OPENSC_LT_CURRENT@
-OPENSC_LT_OLDEST = @OPENSC_LT_OLDEST@
-OPENSC_LT_REVISION = @OPENSC_LT_REVISION@
-OPENSC_VERSION_FIX = @OPENSC_VERSION_FIX@
-OPENSC_VERSION_MAJOR = @OPENSC_VERSION_MAJOR@
-OPENSC_VERSION_MINOR = @OPENSC_VERSION_MINOR@
-OPENSSL_CFLAGS = @OPENSSL_CFLAGS@
-OPENSSL_LIBS = @OPENSSL_LIBS@
-OPTIONAL_OPENCT_CFLAGS = @OPTIONAL_OPENCT_CFLAGS@
-OPTIONAL_OPENCT_LIBS = @OPTIONAL_OPENCT_LIBS@
-OPTIONAL_OPENSSL_CFLAGS = @OPTIONAL_OPENSSL_CFLAGS@
-OPTIONAL_OPENSSL_LIBS = @OPTIONAL_OPENSSL_LIBS@
-OPTIONAL_PCSC_CFLAGS = @OPTIONAL_PCSC_CFLAGS@
-OPTIONAL_READLINE_CFLAGS = @OPTIONAL_READLINE_CFLAGS@
-OPTIONAL_READLINE_LIBS = @OPTIONAL_READLINE_LIBS@
-OPTIONAL_ZLIB_CFLAGS = @OPTIONAL_ZLIB_CFLAGS@
-OPTIONAL_ZLIB_LIBS = @OPTIONAL_ZLIB_LIBS@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PCSC_CFLAGS = @PCSC_CFLAGS@
-PCSC_LIBS = @PCSC_LIBS@
-PKG_CONFIG = @PKG_CONFIG@
-PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
-PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
-PTHREAD_CC = @PTHREAD_CC@
-PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
-PTHREAD_LIBS = @PTHREAD_LIBS@
-RANLIB = @RANLIB@
-RC = @RC@
-READLINE_CFLAGS = @READLINE_CFLAGS@
-READLINE_LIBS = @READLINE_LIBS@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-WIN_LIBPREFIX = @WIN_LIBPREFIX@
-XSLTPROC = @XSLTPROC@
-ZLIB_CFLAGS = @ZLIB_CFLAGS@
-ZLIB_LIBS = @ZLIB_LIBS@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-ax_pthread_config = @ax_pthread_config@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-git = @git@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-pkcs11dir = @pkcs11dir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-xslstylesheetsdir = @xslstylesheetsdir@
-MAINTAINERCLEANFILES = Makefile.in
-EXTRA_DIST = Makefile.mak
-AM_CFLAGS = $(OPTIONAL_OPENSSL_CFLAGS) $(OPTIONAL_READLINE_CFLAGS)
-AM_CPPFLAGS = -I$(top_srcdir)/src -I$(top_srcdir)/src/common -I$(top_builddir)/src/include
-lib_LTLIBRARIES = libsmm-local.la
-libsmm_local_la_SOURCES = smm-local.c sm-module.h sm-common.c sm-global-platform.c sm-cwa14890.c \
-	sm-card-authentic.c sm-card-iasecc.c \
-	smm-local.exports
-
-libsmm_local_la_LIBADD = $(OPTIONAL_OPENSSL_LIBS) ../libopensc/libopensc.la
-libsmm_local_la_LDFLAGS = -version-info @OPENSC_LT_CURRENT@:@OPENSC_LT_REVISION@:@OPENSC_LT_AGE@
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .c .lo .o .obj
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
-	@for dep in $?; do \
-	  case '$(am__configure_deps)' in \
-	    *$$dep*) \
-	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
-	        && { if test -f $@; then exit 0; else break; fi; }; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/sm/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --foreign src/sm/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-	@case '$?' in \
-	  *config.status*) \
-	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-	esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure:  $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-install-libLTLIBRARIES: $(lib_LTLIBRARIES)
-	@$(NORMAL_INSTALL)
-	test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)"
-	@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
-	list2=; for p in $$list; do \
-	  if test -f $$p; then \
-	    list2="$$list2 $$p"; \
-	  else :; fi; \
-	done; \
-	test -z "$$list2" || { \
-	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \
-	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \
-	}
-
-uninstall-libLTLIBRARIES:
-	@$(NORMAL_UNINSTALL)
-	@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
-	for p in $$list; do \
-	  $(am__strip_dir) \
-	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \
-	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \
-	done
-
-clean-libLTLIBRARIES:
-	-test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
-	@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
-	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
-	  test "$$dir" != "$$p" || dir=.; \
-	  echo "rm -f \"$${dir}/so_locations\""; \
-	  rm -f "$${dir}/so_locations"; \
-	done
-libsmm-local.la: $(libsmm_local_la_OBJECTS) $(libsmm_local_la_DEPENDENCIES) 
-	$(AM_V_CCLD)$(libsmm_local_la_LINK) -rpath $(libdir) $(libsmm_local_la_OBJECTS) $(libsmm_local_la_LIBADD) $(LIBS)
-
-mostlyclean-compile:
-	-rm -f *.$(OBJEXT)
-
-distclean-compile:
-	-rm -f *.tab.c
-
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/sm-card-authentic.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/sm-card-iasecc.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/sm-common.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/sm-cwa14890.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/sm-global-platform.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/smm-local.Plo at am__quote@
-
-.c.o:
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(COMPILE) -c $<
-
-.c.obj:
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
-
-.c.lo:
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
- at am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $<
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	set x; \
-	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	shift; \
-	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
-	  test -n "$$unique" || unique=$$empty_fix; \
-	  if test $$# -gt 0; then \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      "$$@" $$unique; \
-	  else \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      $$unique; \
-	  fi; \
-	fi
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	test -z "$(CTAGS_ARGS)$$unique" \
-	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$unique
-
-GTAGS:
-	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && $(am__cd) $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) "$$here"
-
-distclean-tags:
-	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d "$(distdir)/$$file"; then \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-	  else \
-	    test -f "$(distdir)/$$file" \
-	    || cp -p $$d/$$file "$(distdir)/$$file" \
-	    || exit 1; \
-	  fi; \
-	done
-check-am: all-am
-check: check-am
-all-am: Makefile $(LTLIBRARIES)
-installdirs:
-	for dir in "$(DESTDIR)$(libdir)"; do \
-	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
-	done
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
-	@echo "This command is intended for maintainers to use"
-	@echo "it deletes files that may require special tools to rebuild."
-	-test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
-clean: clean-am
-
-clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \
-	mostlyclean-am
-
-distclean: distclean-am
-	-rm -rf ./$(DEPDIR)
-	-rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
-	distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am:
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am: install-libLTLIBRARIES
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
-	-rm -rf ./$(DEPDIR)
-	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-compile mostlyclean-generic \
-	mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-libLTLIBRARIES
-
-.MAKE: install-am install-strip
-
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
-	clean-libLTLIBRARIES clean-libtool ctags distclean \
-	distclean-compile distclean-generic distclean-libtool \
-	distclean-tags distdir dvi dvi-am html html-am info info-am \
-	install install-am install-data install-data-am install-dvi \
-	install-dvi-am install-exec install-exec-am install-html \
-	install-html-am install-info install-info-am \
-	install-libLTLIBRARIES install-man install-pdf install-pdf-am \
-	install-ps install-ps-am install-strip installcheck \
-	installcheck-am installdirs maintainer-clean \
-	maintainer-clean-generic mostlyclean mostlyclean-compile \
-	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-	tags uninstall uninstall-am uninstall-libLTLIBRARIES
-
-
-# noinst_HEADERS = sm.h
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/src/sm/Makefile.am b/src/smm/Makefile.am
similarity index 72%
rename from src/sm/Makefile.am
rename to src/smm/Makefile.am
index c48e9ce..9e3e921 100644
--- a/src/sm/Makefile.am
+++ b/src/smm/Makefile.am
@@ -6,11 +6,14 @@ EXTRA_DIST = Makefile.mak
 
 AM_CFLAGS = $(OPTIONAL_OPENSSL_CFLAGS) $(OPTIONAL_READLINE_CFLAGS)
 AM_CPPFLAGS = -I$(top_srcdir)/src -I$(top_srcdir)/src/common -I$(top_builddir)/src/include
-LIBS = $(top_builddir)/src/libopensc/libopensc.la $(top_builddir)/src/common/libcompat.la
+LIBS = $(top_builddir)/src/libsm/libsm.la \
+	$(top_builddir)/src/libopensc/libopensc.la \
+	$(top_builddir)/src/common/libcompat.la
 
 lib_LTLIBRARIES = libsmm-local.la
 
-libsmm_local_la_SOURCES = smm-local.c sm-module.h sm-common.c sm-global-platform.c sm-cwa14890.c \
+libsmm_local_la_SOURCES = smm-local.c sm-module.h \
+	sm-global-platform.c sm-cwa14890.c \
 	sm-card-authentic.c sm-card-iasecc.c \
 	smm-local.exports
 libsmm_local_la_LIBADD = $(OPTIONAL_OPENSSL_LIBS) ../libopensc/libopensc.la
diff --git a/src/sm/Makefile.mak b/src/smm/Makefile.mak
similarity index 52%
rename from src/sm/Makefile.mak
rename to src/smm/Makefile.mak
index b10eb02..4cf11cf 100644
--- a/src/sm/Makefile.mak
+++ b/src/smm/Makefile.mak
@@ -2,17 +2,17 @@ TOPDIR = ..\..
 
 TARGET = smm-local.dll
 
-OBJECTS = smm-local.obj sm-common.obj sm-global-platform.obj sm-cwa14890.obj sm-card-iasecc.obj sm-card-authentic.obj
+OBJECTS = smm-local.obj sm-global-platform.obj sm-cwa14890.obj sm-card-iasecc.obj sm-card-authentic.obj
 
 all: $(TARGET)
 
 !INCLUDE $(TOPDIR)\win32\Make.rules.mak
 
-$(TARGET): $(OBJECTS) ..\libopensc\opensc.lib 
+$(TARGET): $(OBJECTS) ..\libsm\libsm.lib ..\libopensc\opensc.lib
 	echo LIBRARY $* > $*.def
 	echo EXPORTS >> $*.def
 	type $*.exports >> $*.def
-	link /dll $(LINKFLAGS) /def:$*.def /out:$(TARGET) $(OBJECTS) ..\libopensc\opensc_a.lib $(ZLIB_LIB) $(OPENSSL_LIB) ..\common\libscdl.lib ws2_32.lib gdi32.lib advapi32.lib Crypt32.lib User32.lib
+	link /dll $(LINKFLAGS) /def:$*.def /out:$(TARGET) $(OBJECTS) ..\libsm\libsm.lib ..\libopensc\opensc_a.lib $(ZLIB_LIB) $(OPENSSL_LIB) ..\common\libscdl.lib ws2_32.lib gdi32.lib advapi32.lib Crypt32.lib User32.lib
 	if EXIST $(TARGET).manifest mt -manifest $(TARGET).manifest -outputresource:$(TARGET);2
 
 .c.obj:
diff --git a/src/sm/sm-card-authentic.c b/src/smm/sm-card-authentic.c
similarity index 100%
rename from src/sm/sm-card-authentic.c
rename to src/smm/sm-card-authentic.c
index 4756234..8ebfbdc 100644
--- a/src/sm/sm-card-authentic.c
+++ b/src/smm/sm-card-authentic.c
@@ -238,7 +238,6 @@ sm_authentic_get_apdu_create_file(struct sc_context *ctx, struct sm_info *sm_inf
 
 	LOG_FUNC_RETURN(ctx, rv);
 }
-#endif
 
 static int
 sm_authentic_get_apdu_release(struct sc_context *ctx, struct sm_info *sm_info,
@@ -267,6 +266,7 @@ sm_authentic_get_apdu_release(struct sc_context *ctx, struct sm_info *sm_info,
 
 	LOG_FUNC_RETURN(ctx, rv);
 }
+#endif
 
 
 int
diff --git a/src/sm/sm-card-iasecc.c b/src/smm/sm-card-iasecc.c
similarity index 100%
rename from src/sm/sm-card-iasecc.c
rename to src/smm/sm-card-iasecc.c
diff --git a/src/smm/sm-common.exports b/src/smm/sm-common.exports
new file mode 100644
index 0000000..35d4cdb
--- /dev/null
+++ b/src/smm/sm-common.exports
@@ -0,0 +1,3 @@
+sm_cwa_get_mac
+sm_cwa_securize_apdu
+
diff --git a/src/sm/sm-cwa14890.c b/src/smm/sm-cwa14890.c
similarity index 97%
rename from src/sm/sm-cwa14890.c
rename to src/smm/sm-cwa14890.c
index 5b3f6e9..df8bfee 100644
--- a/src/sm/sm-cwa14890.c
+++ b/src/smm/sm-cwa14890.c
@@ -229,22 +229,6 @@ sm_cwa_init_session_keys(struct sc_context *ctx, struct sm_cwa_session *session_
 }
 
 
-void
-sm_cwa_incr_ssc(struct sm_cwa_session *session_data)
-{
-	int ii;
-
-	if (!session_data)
-		return;
-
-	for (ii=7; ii>=0; ii--)   {
-		session_data->ssc[ii] += 1;
-		if (session_data->ssc[ii])
-			break;
-	}
-}
-
-
 int
 sm_cwa_initialize(struct sc_context *ctx, struct sm_info *sm_info, struct sc_remote_data *rdata)
 {
@@ -328,14 +312,14 @@ sm_cwa_securize_apdu(struct sc_context *ctx, struct sm_info *sm_info, struct sc_
 	unsigned char sbuf[0x400];
 	DES_cblock cblock, icv;
 	unsigned char *encrypted = NULL, edfb_data[0x200], mac_data[0x200];
-	size_t encrypted_len, edfb_len = 0, mac_len = 0;
-	int rv, offs;
+	size_t encrypted_len, edfb_len = 0, mac_len = 0, offs;
+	int rv;
 
 	LOG_FUNC_CALLED(ctx);
 	sc_log(ctx, "securize APDU (cla:%X,ins:%X,p1:%X,p2:%X,data(%i):%p)",
 			apdu->cla, apdu->ins, apdu->p1, apdu->p2, apdu->datalen, apdu->data);
 
-	sm_cwa_incr_ssc(session_data);
+	sm_incr_ssc(session_data->ssc, sizeof(session_data->ssc));
 
 	rv = sm_encrypt_des_cbc3(ctx, session_data->session_enc, apdu->data, apdu->datalen, &encrypted, &encrypted_len, 0);
 	LOG_TEST_RET(ctx, rv, "securize APDU: DES CBC3 encryption failed");
@@ -419,7 +403,7 @@ sm_cwa_securize_apdu(struct sc_context *ctx, struct sm_info *sm_info, struct sc_
 	apdu->datalen = offs;
 	memcpy((unsigned char *)apdu->data, sbuf, offs);
 
-	sm_cwa_incr_ssc(session_data);
+	sm_incr_ssc(session_data->ssc, sizeof(session_data->ssc));
 
 	LOG_FUNC_RETURN(ctx, SC_SUCCESS);
 }
diff --git a/src/sm/sm-global-platform.c b/src/smm/sm-global-platform.c
similarity index 99%
rename from src/sm/sm-global-platform.c
rename to src/smm/sm-global-platform.c
index 0b0efe9..d7561e7 100644
--- a/src/sm/sm-global-platform.c
+++ b/src/smm/sm-global-platform.c
@@ -248,7 +248,7 @@ sm_gp_get_mac(unsigned char *key, DES_cblock *icv,
 
 	block = malloc(in_len + 8);
 	if (!block)
-		return SC_ERROR_MEMORY_FAILURE;
+		return SC_ERROR_OUT_OF_MEMORY;
 
 	memcpy(block, in, in_len);
 	memcpy(block + in_len, "\x80\0\0\0\0\0\0\0", 8);
@@ -343,7 +343,7 @@ sm_gp_external_authentication(struct sc_context *ctx, struct sm_info *sm_info,
 	unsigned char host_cryptogram[8], raw_apdu[SC_MAX_APDU_BUFFER_SIZE];
 	struct sm_gp_session *gp_session = &sm_info->session.gp;
 	DES_cblock mac;
-	int rv, idx = 0, offs = 0;
+	int rv, offs = 0;
 
 	LOG_FUNC_CALLED(ctx);
 	if (!sm_info || !init_data || !rdata || !rdata->alloc)
diff --git a/src/sm/sm-module.h b/src/smm/sm-module.h
similarity index 81%
rename from src/sm/sm-module.h
rename to src/smm/sm-module.h
index 1102159..14a06bc 100644
--- a/src/sm/sm-module.h
+++ b/src/smm/sm-module.h
@@ -31,20 +31,7 @@ extern "C" {
 #include <openssl/sha.h>
 
 #include "libopensc/sm.h"
-
-DES_LONG DES_cbc_cksum_3des(const unsigned char *in, DES_cblock *output, long length,
-		DES_key_schedule *schedule, DES_key_schedule *schedule2, const_DES_cblock *ivec);
-DES_LONG DES_cbc_cksum_3des_emv96(const unsigned char *in, DES_cblock *output,
-		long length, DES_key_schedule *schedule, DES_key_schedule *schedule2,
-		const_DES_cblock *ivec);
-int sm_encrypt_des_ecb3(unsigned char *key, unsigned char *data, int data_len,
-		unsigned char **out, int *out_len);
-int sm_encrypt_des_cbc3(struct sc_context *ctx, unsigned char *key,
-		const unsigned char *in, size_t in_len,
-		unsigned char **out, size_t *out_len, int
-		not_force_pad);
-int sm_decrypt_des_cbc3(struct sc_context *ctx, unsigned char *key,
-		unsigned char *data, size_t data_len, unsigned char **out, size_t *out_len);
+#include "libsm/sm-common.h"
 
 /* Global Platform definitions */
 int sm_gp_get_mac(unsigned char *key, DES_cblock *icv, unsigned char *in, int in_len,
diff --git a/src/sm/smm-local.c b/src/smm/smm-local.c
similarity index 99%
rename from src/sm/smm-local.c
rename to src/smm/smm-local.c
index aba7561..c7384f7 100644
--- a/src/sm/smm-local.c
+++ b/src/smm/smm-local.c
@@ -310,7 +310,7 @@ get_apdus(struct sc_context *ctx, struct sm_info *sm_info, unsigned char *init_d
 int
 finalize(struct sc_context *ctx, struct sm_info *sm_info, struct sc_remote_data *rdata, unsigned char *out, size_t out_len)
 {
-	int rv;
+	int rv = SC_ERROR_INTERNAL;
 
 	LOG_FUNC_CALLED(ctx);
 	sc_log(ctx, "SM finalize: out buffer(%i) %p", out_len, out);
diff --git a/src/sm/smm-local.exports b/src/smm/smm-local.exports
similarity index 100%
rename from src/sm/smm-local.exports
rename to src/smm/smm-local.exports
diff --git a/src/tests/Makefile.in b/src/tests/Makefile.in
deleted file mode 100644
index 8034a0d..0000000
--- a/src/tests/Makefile.in
+++ /dev/null
@@ -1,789 +0,0 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
- at SET_MAKE@
-
-# Required to build Windows resource file
-
-VPATH = @srcdir@
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
-	$(top_srcdir)/win32/ltrc.inc
-noinst_PROGRAMS = base64$(EXEEXT) lottery$(EXEEXT) p15dump$(EXEEXT) \
-	pintest$(EXEEXT) prngtest$(EXEEXT)
- at WIN32_TRUE@am__append_1 = $(top_builddir)/win32/versioninfo.rc
- at WIN32_TRUE@am__append_2 = $(top_builddir)/win32/versioninfo.rc
- at WIN32_TRUE@am__append_3 = $(top_builddir)/win32/versioninfo.rc
- at WIN32_TRUE@am__append_4 = $(top_builddir)/win32/versioninfo.rc
- at WIN32_TRUE@am__append_5 = $(top_builddir)/win32/versioninfo.rc
-subdir = src/tests
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_pthread.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-PROGRAMS = $(noinst_PROGRAMS)
-am__base64_SOURCES_DIST = base64.c sc-test.c sc-test.h \
-	$(top_builddir)/win32/versioninfo.rc
-am__objects_1 = sc-test.$(OBJEXT)
-am__objects_2 =
-am__dirstamp = $(am__leading_dot)dirstamp
- at WIN32_TRUE@am__objects_3 =  \
- at WIN32_TRUE@	$(top_builddir)/win32/versioninfo.$(OBJEXT)
-am_base64_OBJECTS = base64.$(OBJEXT) $(am__objects_1) $(am__objects_2) \
-	$(am__objects_3)
-base64_OBJECTS = $(am_base64_OBJECTS)
-base64_LDADD = $(LDADD)
-AM_V_lt = $(am__v_lt_$(V))
-am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
-am__v_lt_0 = --silent
-am__lottery_SOURCES_DIST = lottery.c sc-test.c sc-test.h \
-	$(top_builddir)/win32/versioninfo.rc
-am_lottery_OBJECTS = lottery.$(OBJEXT) $(am__objects_1) \
-	$(am__objects_2) $(am__objects_3)
-lottery_OBJECTS = $(am_lottery_OBJECTS)
-lottery_LDADD = $(LDADD)
-am__p15dump_SOURCES_DIST = p15dump.c print.c sc-test.c sc-test.h \
-	$(top_builddir)/win32/versioninfo.rc
-am_p15dump_OBJECTS = p15dump.$(OBJEXT) print.$(OBJEXT) \
-	$(am__objects_1) $(am__objects_2) $(am__objects_3)
-p15dump_OBJECTS = $(am_p15dump_OBJECTS)
-p15dump_LDADD = $(LDADD)
-am__pintest_SOURCES_DIST = pintest.c print.c sc-test.c sc-test.h \
-	$(top_builddir)/win32/versioninfo.rc
-am_pintest_OBJECTS = pintest.$(OBJEXT) print.$(OBJEXT) \
-	$(am__objects_1) $(am__objects_2) $(am__objects_3)
-pintest_OBJECTS = $(am_pintest_OBJECTS)
-pintest_LDADD = $(LDADD)
-am__prngtest_SOURCES_DIST = prngtest.c sc-test.c sc-test.h \
-	$(top_builddir)/win32/versioninfo.rc
-am_prngtest_OBJECTS = prngtest.$(OBJEXT) $(am__objects_1) \
-	$(am__objects_2) $(am__objects_3)
-prngtest_OBJECTS = $(am_prngtest_OBJECTS)
-prngtest_LDADD = $(LDADD)
-DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
-depcomp = $(SHELL) $(top_srcdir)/depcomp
-am__depfiles_maybe = depfiles
-am__mv = mv -f
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
-	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
-	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
-	$(AM_CFLAGS) $(CFLAGS)
-AM_V_CC = $(am__v_CC_$(V))
-am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
-am__v_CC_0 = @echo "  CC    " $@;
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
-am__v_at_0 = @
-CCLD = $(CC)
-LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CCLD = $(am__v_CCLD_$(V))
-am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
-am__v_CCLD_0 = @echo "  CCLD  " $@;
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo "  GEN   " $@;
-SOURCES = $(base64_SOURCES) $(lottery_SOURCES) $(p15dump_SOURCES) \
-	$(pintest_SOURCES) $(prngtest_SOURCES)
-DIST_SOURCES = $(am__base64_SOURCES_DIST) $(am__lottery_SOURCES_DIST) \
-	$(am__p15dump_SOURCES_DIST) $(am__pintest_SOURCES_DIST) \
-	$(am__prngtest_SOURCES_DIST)
-RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
-	html-recursive info-recursive install-data-recursive \
-	install-dvi-recursive install-exec-recursive \
-	install-html-recursive install-info-recursive \
-	install-pdf-recursive install-ps-recursive install-recursive \
-	installcheck-recursive installdirs-recursive pdf-recursive \
-	ps-recursive uninstall-recursive
-RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
-  distclean-recursive maintainer-clean-recursive
-AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
-	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
-	distdir
-ETAGS = etags
-CTAGS = ctags
-DIST_SUBDIRS = $(SUBDIRS)
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-am__relativize = \
-  dir0=`pwd`; \
-  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
-  sed_rest='s,^[^/]*/*,,'; \
-  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
-  sed_butlast='s,/*[^/]*$$,,'; \
-  while test -n "$$dir1"; do \
-    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
-    if test "$$first" != "."; then \
-      if test "$$first" = ".."; then \
-        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
-        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
-      else \
-        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
-        if test "$$first2" = "$$first"; then \
-          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
-        else \
-          dir2="../$$dir2"; \
-        fi; \
-        dir0="$$dir0"/"$$first"; \
-      fi; \
-    fi; \
-    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
-  done; \
-  reldir="$$dir2"
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AR = @AR@
-AS = @AS@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEBUG_FILE = @DEBUG_FILE@
-DEFAULT_PCSC_PROVIDER = @DEFAULT_PCSC_PROVIDER@
-DEFAULT_SM_MODULE = @DEFAULT_SM_MODULE@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DLLTOOL = @DLLTOOL@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-FGREP = @FGREP@
-GIT = @GIT@
-GREP = @GREP@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBOBJS = @LIBOBJS@
-LIBRARY_BITNESS = @LIBRARY_BITNESS@
-LIBS = \
-	$(top_builddir)/src/libopensc/libopensc.la \
-	$(top_builddir)/src/common/libscdl.la \
-	$(top_builddir)/src/common/libcompat.la
-
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-NM = @NM@
-NMEDIT = @NMEDIT@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OPENCT_CFLAGS = @OPENCT_CFLAGS@
-OPENCT_LIBS = @OPENCT_LIBS@
-OPENSC_LT_AGE = @OPENSC_LT_AGE@
-OPENSC_LT_CURRENT = @OPENSC_LT_CURRENT@
-OPENSC_LT_OLDEST = @OPENSC_LT_OLDEST@
-OPENSC_LT_REVISION = @OPENSC_LT_REVISION@
-OPENSC_VERSION_FIX = @OPENSC_VERSION_FIX@
-OPENSC_VERSION_MAJOR = @OPENSC_VERSION_MAJOR@
-OPENSC_VERSION_MINOR = @OPENSC_VERSION_MINOR@
-OPENSSL_CFLAGS = @OPENSSL_CFLAGS@
-OPENSSL_LIBS = @OPENSSL_LIBS@
-OPTIONAL_OPENCT_CFLAGS = @OPTIONAL_OPENCT_CFLAGS@
-OPTIONAL_OPENCT_LIBS = @OPTIONAL_OPENCT_LIBS@
-OPTIONAL_OPENSSL_CFLAGS = @OPTIONAL_OPENSSL_CFLAGS@
-OPTIONAL_OPENSSL_LIBS = @OPTIONAL_OPENSSL_LIBS@
-OPTIONAL_PCSC_CFLAGS = @OPTIONAL_PCSC_CFLAGS@
-OPTIONAL_READLINE_CFLAGS = @OPTIONAL_READLINE_CFLAGS@
-OPTIONAL_READLINE_LIBS = @OPTIONAL_READLINE_LIBS@
-OPTIONAL_ZLIB_CFLAGS = @OPTIONAL_ZLIB_CFLAGS@
-OPTIONAL_ZLIB_LIBS = @OPTIONAL_ZLIB_LIBS@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PCSC_CFLAGS = @PCSC_CFLAGS@
-PCSC_LIBS = @PCSC_LIBS@
-PKG_CONFIG = @PKG_CONFIG@
-PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
-PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
-PTHREAD_CC = @PTHREAD_CC@
-PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
-PTHREAD_LIBS = @PTHREAD_LIBS@
-RANLIB = @RANLIB@
-RC = @RC@
-READLINE_CFLAGS = @READLINE_CFLAGS@
-READLINE_LIBS = @READLINE_LIBS@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-WIN_LIBPREFIX = @WIN_LIBPREFIX@
-XSLTPROC = @XSLTPROC@
-ZLIB_CFLAGS = @ZLIB_CFLAGS@
-ZLIB_LIBS = @ZLIB_LIBS@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-ax_pthread_config = @ax_pthread_config@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-git = @git@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-pkcs11dir = @pkcs11dir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-xslstylesheetsdir = @xslstylesheetsdir@
-RCCOMPILE = $(RC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS)
-
-LTRCCOMPILE = $(LIBTOOL) --mode=compile --tag=RC $(RCCOMPILE)
-MAINTAINERCLEANFILES = $(srcdir)/Makefile.in
-EXTRA_DIST = Makefile.mak
-SUBDIRS = regression
-AM_CPPFLAGS = -I$(top_srcdir)/src
-COMMON_SRC = sc-test.c
-COMMON_INC = sc-test.h
-base64_SOURCES = base64.c $(COMMON_SRC) $(COMMON_INC) $(am__append_1)
-lottery_SOURCES = lottery.c $(COMMON_SRC) $(COMMON_INC) \
-	$(am__append_2)
-p15dump_SOURCES = p15dump.c print.c $(COMMON_SRC) $(COMMON_INC) \
-	$(am__append_3)
-pintest_SOURCES = pintest.c print.c $(COMMON_SRC) $(COMMON_INC) \
-	$(am__append_4)
-prngtest_SOURCES = prngtest.c $(COMMON_SRC) $(COMMON_INC) \
-	$(am__append_5)
-all: all-recursive
-
-.SUFFIXES:
-.SUFFIXES: .c .lo .o .obj .rc
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am $(top_srcdir)/win32/ltrc.inc $(am__configure_deps)
-	@for dep in $?; do \
-	  case '$(am__configure_deps)' in \
-	    *$$dep*) \
-	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
-	        && { if test -f $@; then exit 0; else break; fi; }; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/tests/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --foreign src/tests/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-	@case '$?' in \
-	  *config.status*) \
-	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-	esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure:  $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-
-clean-noinstPROGRAMS:
-	@list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \
-	echo " rm -f" $$list; \
-	rm -f $$list || exit $$?; \
-	test -n "$(EXEEXT)" || exit 0; \
-	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
-	echo " rm -f" $$list; \
-	rm -f $$list
-$(top_builddir)/win32/$(am__dirstamp):
-	@$(MKDIR_P) $(top_builddir)/win32
-	@: > $(top_builddir)/win32/$(am__dirstamp)
-$(top_builddir)/win32/$(DEPDIR)/$(am__dirstamp):
-	@$(MKDIR_P) $(top_builddir)/win32/$(DEPDIR)
-	@: > $(top_builddir)/win32/$(DEPDIR)/$(am__dirstamp)
-$(top_builddir)/win32/versioninfo.$(OBJEXT):  \
-	$(top_builddir)/win32/$(am__dirstamp) \
-	$(top_builddir)/win32/$(DEPDIR)/$(am__dirstamp)
-base64$(EXEEXT): $(base64_OBJECTS) $(base64_DEPENDENCIES) 
-	@rm -f base64$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(base64_OBJECTS) $(base64_LDADD) $(LIBS)
-lottery$(EXEEXT): $(lottery_OBJECTS) $(lottery_DEPENDENCIES) 
-	@rm -f lottery$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(lottery_OBJECTS) $(lottery_LDADD) $(LIBS)
-p15dump$(EXEEXT): $(p15dump_OBJECTS) $(p15dump_DEPENDENCIES) 
-	@rm -f p15dump$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(p15dump_OBJECTS) $(p15dump_LDADD) $(LIBS)
-pintest$(EXEEXT): $(pintest_OBJECTS) $(pintest_DEPENDENCIES) 
-	@rm -f pintest$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(pintest_OBJECTS) $(pintest_LDADD) $(LIBS)
-prngtest$(EXEEXT): $(prngtest_OBJECTS) $(prngtest_DEPENDENCIES) 
-	@rm -f prngtest$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(prngtest_OBJECTS) $(prngtest_LDADD) $(LIBS)
-
-mostlyclean-compile:
-	-rm -f *.$(OBJEXT)
-	-rm -f $(top_builddir)/win32/versioninfo.$(OBJEXT)
-
-distclean-compile:
-	-rm -f *.tab.c
-
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/base64.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/lottery.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/p15dump.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pintest.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/print.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/prngtest.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/sc-test.Po at am__quote@
-
-.c.o:
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(COMPILE) -c $<
-
-.c.obj:
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
-
-.c.lo:
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
- at am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $<
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-
-# This directory's subdirectories are mostly independent; you can cd
-# into them and run `make' without going through this Makefile.
-# To change the values of `make' variables: instead of editing Makefiles,
-# (1) if the variable is set in `config.status', edit `config.status'
-#     (which will cause the Makefiles to be regenerated when you run `make');
-# (2) otherwise, pass the desired values on the `make' command line.
-$(RECURSIVE_TARGETS):
-	@fail= failcom='exit 1'; \
-	for f in x $$MAKEFLAGS; do \
-	  case $$f in \
-	    *=* | --[!k]*);; \
-	    *k*) failcom='fail=yes';; \
-	  esac; \
-	done; \
-	dot_seen=no; \
-	target=`echo $@ | sed s/-recursive//`; \
-	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  echo "Making $$target in $$subdir"; \
-	  if test "$$subdir" = "."; then \
-	    dot_seen=yes; \
-	    local_target="$$target-am"; \
-	  else \
-	    local_target="$$target"; \
-	  fi; \
-	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
-	  || eval $$failcom; \
-	done; \
-	if test "$$dot_seen" = "no"; then \
-	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
-	fi; test -z "$$fail"
-
-$(RECURSIVE_CLEAN_TARGETS):
-	@fail= failcom='exit 1'; \
-	for f in x $$MAKEFLAGS; do \
-	  case $$f in \
-	    *=* | --[!k]*);; \
-	    *k*) failcom='fail=yes';; \
-	  esac; \
-	done; \
-	dot_seen=no; \
-	case "$@" in \
-	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
-	  *) list='$(SUBDIRS)' ;; \
-	esac; \
-	rev=''; for subdir in $$list; do \
-	  if test "$$subdir" = "."; then :; else \
-	    rev="$$subdir $$rev"; \
-	  fi; \
-	done; \
-	rev="$$rev ."; \
-	target=`echo $@ | sed s/-recursive//`; \
-	for subdir in $$rev; do \
-	  echo "Making $$target in $$subdir"; \
-	  if test "$$subdir" = "."; then \
-	    local_target="$$target-am"; \
-	  else \
-	    local_target="$$target"; \
-	  fi; \
-	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
-	  || eval $$failcom; \
-	done && test -z "$$fail"
-tags-recursive:
-	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
-	done
-ctags-recursive:
-	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
-	done
-
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	set x; \
-	here=`pwd`; \
-	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
-	  include_option=--etags-include; \
-	  empty_fix=.; \
-	else \
-	  include_option=--include; \
-	  empty_fix=; \
-	fi; \
-	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  if test "$$subdir" = .; then :; else \
-	    test ! -f $$subdir/TAGS || \
-	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
-	  fi; \
-	done; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	shift; \
-	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
-	  test -n "$$unique" || unique=$$empty_fix; \
-	  if test $$# -gt 0; then \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      "$$@" $$unique; \
-	  else \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      $$unique; \
-	  fi; \
-	fi
-ctags: CTAGS
-CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	test -z "$(CTAGS_ARGS)$$unique" \
-	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$unique
-
-GTAGS:
-	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && $(am__cd) $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) "$$here"
-
-distclean-tags:
-	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d "$(distdir)/$$file"; then \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-	  else \
-	    test -f "$(distdir)/$$file" \
-	    || cp -p $$d/$$file "$(distdir)/$$file" \
-	    || exit 1; \
-	  fi; \
-	done
-	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
-	  if test "$$subdir" = .; then :; else \
-	    test -d "$(distdir)/$$subdir" \
-	    || $(MKDIR_P) "$(distdir)/$$subdir" \
-	    || exit 1; \
-	  fi; \
-	done
-	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
-	  if test "$$subdir" = .; then :; else \
-	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
-	    $(am__relativize); \
-	    new_distdir=$$reldir; \
-	    dir1=$$subdir; dir2="$(top_distdir)"; \
-	    $(am__relativize); \
-	    new_top_distdir=$$reldir; \
-	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
-	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
-	    ($(am__cd) $$subdir && \
-	      $(MAKE) $(AM_MAKEFLAGS) \
-	        top_distdir="$$new_top_distdir" \
-	        distdir="$$new_distdir" \
-		am__remove_distdir=: \
-		am__skip_length_check=: \
-		am__skip_mode_fix=: \
-	        distdir) \
-	      || exit 1; \
-	  fi; \
-	done
-check-am: all-am
-check: check-recursive
-all-am: Makefile $(PROGRAMS)
-installdirs: installdirs-recursive
-installdirs-am:
-install: install-recursive
-install-exec: install-exec-recursive
-install-data: install-data-recursive
-uninstall: uninstall-recursive
-
-install-am: all-am
-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-recursive
-install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-	-test -z "$(top_builddir)/win32/$(DEPDIR)/$(am__dirstamp)" || rm -f $(top_builddir)/win32/$(DEPDIR)/$(am__dirstamp)
-	-test -z "$(top_builddir)/win32/$(am__dirstamp)" || rm -f $(top_builddir)/win32/$(am__dirstamp)
-
-maintainer-clean-generic:
-	@echo "This command is intended for maintainers to use"
-	@echo "it deletes files that may require special tools to rebuild."
-	-test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
-clean: clean-recursive
-
-clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \
-	mostlyclean-am
-
-distclean: distclean-recursive
-	-rm -rf ./$(DEPDIR)
-	-rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
-	distclean-tags
-
-dvi: dvi-recursive
-
-dvi-am:
-
-html: html-recursive
-
-html-am:
-
-info: info-recursive
-
-info-am:
-
-install-data-am:
-
-install-dvi: install-dvi-recursive
-
-install-dvi-am:
-
-install-exec-am:
-
-install-html: install-html-recursive
-
-install-html-am:
-
-install-info: install-info-recursive
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-recursive
-
-install-pdf-am:
-
-install-ps: install-ps-recursive
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-recursive
-	-rm -rf ./$(DEPDIR)
-	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-recursive
-
-mostlyclean-am: mostlyclean-compile mostlyclean-generic \
-	mostlyclean-libtool
-
-pdf: pdf-recursive
-
-pdf-am:
-
-ps: ps-recursive
-
-ps-am:
-
-uninstall-am:
-
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
-	install-am install-strip tags-recursive
-
-.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
-	all all-am check check-am clean clean-generic clean-libtool \
-	clean-noinstPROGRAMS ctags ctags-recursive distclean \
-	distclean-compile distclean-generic distclean-libtool \
-	distclean-tags distdir dvi dvi-am html html-am info info-am \
-	install install-am install-data install-data-am install-dvi \
-	install-dvi-am install-exec install-exec-am install-html \
-	install-html-am install-info install-info-am install-man \
-	install-pdf install-pdf-am install-ps install-ps-am \
-	install-strip installcheck installcheck-am installdirs \
-	installdirs-am maintainer-clean maintainer-clean-generic \
-	mostlyclean mostlyclean-compile mostlyclean-generic \
-	mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \
-	uninstall uninstall-am
-
-
-.rc.lo:
-	$(LTRCCOMPILE) -i "$<" -o "$@"
-
-.rc.o:
-	$(RCCOMPILE) -i "$<" -o "$@"
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/src/tests/base64.c b/src/tests/base64.c
index 8b37722..ec9583d 100644
--- a/src/tests/base64.c
+++ b/src/tests/base64.c
@@ -7,34 +7,37 @@
 
 int main(int argc, char *argv[])
 {
-	int len;
-	FILE *inf;
+	int len, r = 1;
+	FILE *inf = NULL;
 	u8 buf[8192];
 	u8 outbuf[8192];
 
 	if (argc != 2) {
 		fprintf(stderr, "Usage: base64 <file>\n");
-		return 1;
+		goto err;
 	}
 	inf = fopen(argv[1], "r");
 	if (inf == NULL) {
 		perror(argv[1]);
-		return 1;
+		goto err;
 	}
 	len = fread(buf, 1, sizeof(buf), inf);
 	if (len < 0) {
 		perror("fread");
-		return 1;
+		goto err;
 	}
 	if (len == 8192) {
 		fprintf(stderr, "Too long input file.\n");
-		return 1;
+		goto err;
 	}
 	len = sc_base64_decode((const char *) buf, outbuf, sizeof(outbuf));
 	if (len < 0) {
 		fprintf(stderr, "Base64 decoding failed: %s\n", sc_strerror(len));	
-		return 1;
+		goto err;
 	}
 	fwrite(outbuf, len, 1, stdout);
-	return 0;
+	r = 0;
+err:
+	fclose(inf);
+	return r;
 }
diff --git a/src/tests/regression/Makefile.in b/src/tests/regression/Makefile.in
deleted file mode 100644
index bbdf69e..0000000
--- a/src/tests/regression/Makefile.in
+++ /dev/null
@@ -1,421 +0,0 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
- at SET_MAKE@
-VPATH = @srcdir@
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-subdir = src/tests/regression
-DIST_COMMON = README $(dist_check_DATA) $(dist_check_SCRIPTS) \
-	$(srcdir)/Makefile.am $(srcdir)/Makefile.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_pthread.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo "  GEN   " $@;
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
-am__v_at_0 = @
-SOURCES =
-DIST_SOURCES =
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AR = @AR@
-AS = @AS@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEBUG_FILE = @DEBUG_FILE@
-DEFAULT_PCSC_PROVIDER = @DEFAULT_PCSC_PROVIDER@
-DEFAULT_SM_MODULE = @DEFAULT_SM_MODULE@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DLLTOOL = @DLLTOOL@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-FGREP = @FGREP@
-GIT = @GIT@
-GREP = @GREP@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBOBJS = @LIBOBJS@
-LIBRARY_BITNESS = @LIBRARY_BITNESS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-NM = @NM@
-NMEDIT = @NMEDIT@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OPENCT_CFLAGS = @OPENCT_CFLAGS@
-OPENCT_LIBS = @OPENCT_LIBS@
-OPENSC_LT_AGE = @OPENSC_LT_AGE@
-OPENSC_LT_CURRENT = @OPENSC_LT_CURRENT@
-OPENSC_LT_OLDEST = @OPENSC_LT_OLDEST@
-OPENSC_LT_REVISION = @OPENSC_LT_REVISION@
-OPENSC_VERSION_FIX = @OPENSC_VERSION_FIX@
-OPENSC_VERSION_MAJOR = @OPENSC_VERSION_MAJOR@
-OPENSC_VERSION_MINOR = @OPENSC_VERSION_MINOR@
-OPENSSL_CFLAGS = @OPENSSL_CFLAGS@
-OPENSSL_LIBS = @OPENSSL_LIBS@
-OPTIONAL_OPENCT_CFLAGS = @OPTIONAL_OPENCT_CFLAGS@
-OPTIONAL_OPENCT_LIBS = @OPTIONAL_OPENCT_LIBS@
-OPTIONAL_OPENSSL_CFLAGS = @OPTIONAL_OPENSSL_CFLAGS@
-OPTIONAL_OPENSSL_LIBS = @OPTIONAL_OPENSSL_LIBS@
-OPTIONAL_PCSC_CFLAGS = @OPTIONAL_PCSC_CFLAGS@
-OPTIONAL_READLINE_CFLAGS = @OPTIONAL_READLINE_CFLAGS@
-OPTIONAL_READLINE_LIBS = @OPTIONAL_READLINE_LIBS@
-OPTIONAL_ZLIB_CFLAGS = @OPTIONAL_ZLIB_CFLAGS@
-OPTIONAL_ZLIB_LIBS = @OPTIONAL_ZLIB_LIBS@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PCSC_CFLAGS = @PCSC_CFLAGS@
-PCSC_LIBS = @PCSC_LIBS@
-PKG_CONFIG = @PKG_CONFIG@
-PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
-PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
-PTHREAD_CC = @PTHREAD_CC@
-PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
-PTHREAD_LIBS = @PTHREAD_LIBS@
-RANLIB = @RANLIB@
-RC = @RC@
-READLINE_CFLAGS = @READLINE_CFLAGS@
-READLINE_LIBS = @READLINE_LIBS@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-WIN_LIBPREFIX = @WIN_LIBPREFIX@
-XSLTPROC = @XSLTPROC@
-ZLIB_CFLAGS = @ZLIB_CFLAGS@
-ZLIB_LIBS = @ZLIB_LIBS@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-ax_pthread_config = @ax_pthread_config@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-git = @git@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-pkcs11dir = @pkcs11dir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-xslstylesheetsdir = @xslstylesheetsdir@
-MAINTAINERCLEANFILES = $(srcdir)/Makefile.in
-dist_check_DATA = \
-	crypt0001 crypt0002 crypt0003 crypt0004 crypt0005 crypt0006 crypt0007 \
-	init0001 init0002 init0003 init0004 init0005 init0006 \
-	init0007 init0008 init0009 init0010 init0011 init0012 \
-	pin0001 pin0002 \
-	README test.p12 bintest
-
-dist_check_SCRIPTS = erase functions run-all 
-all: all-am
-
-.SUFFIXES:
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
-	@for dep in $?; do \
-	  case '$(am__configure_deps)' in \
-	    *$$dep*) \
-	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
-	        && { if test -f $@; then exit 0; else break; fi; }; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/tests/regression/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --foreign src/tests/regression/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-	@case '$?' in \
-	  *config.status*) \
-	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-	esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure:  $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-tags: TAGS
-TAGS:
-
-ctags: CTAGS
-CTAGS:
-
-
-distdir: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d "$(distdir)/$$file"; then \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-	  else \
-	    test -f "$(distdir)/$$file" \
-	    || cp -p $$d/$$file "$(distdir)/$$file" \
-	    || exit 1; \
-	  fi; \
-	done
-check-am: all-am
-	$(MAKE) $(AM_MAKEFLAGS) $(dist_check_SCRIPTS) \
-	  $(dist_check_DATA)
-check: check-am
-all-am: Makefile
-installdirs:
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
-	@echo "This command is intended for maintainers to use"
-	@echo "it deletes files that may require special tools to rebuild."
-	-test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
-clean: clean-am
-
-clean-am: clean-generic clean-libtool clean-local mostlyclean-am
-
-distclean: distclean-am
-	-rm -f Makefile
-distclean-am: clean-am distclean-generic
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am:
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am:
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
-	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-generic mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am:
-
-.MAKE: check-am install-am install-strip
-
-.PHONY: all all-am check check-am clean clean-generic clean-libtool \
-	clean-local distclean distclean-generic distclean-libtool \
-	distdir dvi dvi-am html html-am info info-am install \
-	install-am install-data install-data-am install-dvi \
-	install-dvi-am install-exec install-exec-am install-html \
-	install-html-am install-info install-info-am install-man \
-	install-pdf install-pdf-am install-ps install-ps-am \
-	install-strip installcheck installcheck-am installdirs \
-	maintainer-clean maintainer-clean-generic mostlyclean \
-	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-	uninstall uninstall-am
-
-
-# remove log files from regression tests
-clean-local:
-	-rm -rf out failed
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/src/tools/Makefile.am b/src/tools/Makefile.am
index cc8ab28..3061496 100644
--- a/src/tools/Makefile.am
+++ b/src/tools/Makefile.am
@@ -1,13 +1,14 @@
 include $(top_srcdir)/win32/ltrc.inc
 
-MAINTAINERCLEANFILES = $(srcdir)/Makefile.in
-EXTRA_DIST = Makefile.mak
+MAINTAINERCLEANFILES = $(srcdir)/Makefile.in $(srcdir)/versioninfo-tools.rc
+EXTRA_DIST = Makefile.mak versioninfo-tools.rc.in
 
 noinst_HEADERS = util.h
 bin_PROGRAMS = opensc-tool opensc-explorer pkcs15-tool pkcs15-crypt \
 	pkcs11-tool cardos-tool eidenv openpgp-tool iasecc-tool
 if ENABLE_OPENSSL
-bin_PROGRAMS += cryptoflex-tool pkcs15-init netkey-tool piv-tool westcos-tool sc-hsm-tool
+bin_PROGRAMS += cryptoflex-tool pkcs15-init netkey-tool piv-tool \
+	westcos-tool sc-hsm-tool dnie-tool
 endif
 
 # compile with $(PTHREAD_CFLAGS) to allow debugging with gdb
@@ -48,21 +49,23 @@ iasecc_tool_SOURCES = iasecc-tool.c util.c
 iasecc_tool_LDADD = $(OPTIONAL_OPENSSL_LIBS)
 sc_hsm_tool_SOURCES = sc-hsm-tool.c util.c
 sc_hsm_tool_LDADD = $(OPTIONAL_OPENSSL_LIBS)
+dnie_tool_SOURCES = dnie-tool.c util.c
+dnie_tool_LDADD = $(OPTIONAL_OPENSSL_LIBS)
 
 if WIN32
-opensc_tool_SOURCES += $(top_builddir)/win32/versioninfo.rc
-piv_tool_SOURCES += $(top_builddir)/win32/versioninfo.rc
-opensc_explorer_SOURCES += $(top_builddir)/win32/versioninfo.rc
-pkcs15_tool_SOURCES += $(top_builddir)/win32/versioninfo.rc
-pkcs11_tool_SOURCES += $(top_builddir)/win32/versioninfo.rc
-pkcs15_crypt_SOURCES += $(top_builddir)/win32/versioninfo.rc
-cryptoflex_tool_SOURCES += $(top_builddir)/win32/versioninfo.rc
-pkcs15_init_SOURCES += $(top_builddir)/win32/versioninfo.rc
-cardos_tool_SOURCES += $(top_builddir)/win32/versioninfo.rc
-eidenv_SOURCES += $(top_builddir)/win32/versioninfo.rc
-netkey_tool_SOURCES += $(top_builddir)/win32/versioninfo.rc
-westcos_tool_SOURCES += $(top_builddir)/win32/versioninfo.rc
-openpgp_tool_SOURCES += $(top_builddir)/win32/versioninfo.rc
-iasecc_tool_SOURCES += $(top_builddir)/win32/versioninfo.rc
-sc_hsm_tool_SOURCES += $(top_builddir)/win32/versioninfo.rc
+opensc_tool_SOURCES += versioninfo-tools.rc
+piv_tool_SOURCES += versioninfo-tools.rc
+opensc_explorer_SOURCES += versioninfo-tools.rc
+pkcs15_tool_SOURCES += versioninfo-tools.rc
+pkcs11_tool_SOURCES += versioninfo-tools.rc
+pkcs15_crypt_SOURCES += versioninfo-tools.rc
+cryptoflex_tool_SOURCES += versioninfo-tools.rc
+pkcs15_init_SOURCES += versioninfo-tools.rc
+cardos_tool_SOURCES += versioninfo-tools.rc
+eidenv_SOURCES += versioninfo-tools.rc
+netkey_tool_SOURCES += versioninfo-tools.rc
+westcos_tool_SOURCES += versioninfo-tools.rc
+openpgp_tool_SOURCES += versioninfo-tools.rc
+iasecc_tool_SOURCES += versioninfo-tools.rc
+sc_hsm_tool_SOURCES += versioninfo-tools.rc
 endif
diff --git a/src/tools/Makefile.in b/src/tools/Makefile.in
deleted file mode 100644
index 53457a6..0000000
--- a/src/tools/Makefile.in
+++ /dev/null
@@ -1,829 +0,0 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
- at SET_MAKE@
-
-# Required to build Windows resource file
-
-
-VPATH = @srcdir@
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \
-	$(srcdir)/Makefile.in $(top_srcdir)/win32/ltrc.inc
-bin_PROGRAMS = opensc-tool$(EXEEXT) opensc-explorer$(EXEEXT) \
-	pkcs15-tool$(EXEEXT) pkcs15-crypt$(EXEEXT) \
-	pkcs11-tool$(EXEEXT) cardos-tool$(EXEEXT) eidenv$(EXEEXT) \
-	openpgp-tool$(EXEEXT) iasecc-tool$(EXEEXT) $(am__EXEEXT_1)
- at ENABLE_OPENSSL_TRUE@am__append_1 = cryptoflex-tool pkcs15-init netkey-tool piv-tool westcos-tool sc-hsm-tool
- at WIN32_TRUE@am__append_2 = $(top_builddir)/win32/versioninfo.rc
- at WIN32_TRUE@am__append_3 = $(top_builddir)/win32/versioninfo.rc
- at WIN32_TRUE@am__append_4 = $(top_builddir)/win32/versioninfo.rc
- at WIN32_TRUE@am__append_5 = $(top_builddir)/win32/versioninfo.rc
- at WIN32_TRUE@am__append_6 = $(top_builddir)/win32/versioninfo.rc
- at WIN32_TRUE@am__append_7 = $(top_builddir)/win32/versioninfo.rc
- at WIN32_TRUE@am__append_8 = $(top_builddir)/win32/versioninfo.rc
- at WIN32_TRUE@am__append_9 = $(top_builddir)/win32/versioninfo.rc
- at WIN32_TRUE@am__append_10 = $(top_builddir)/win32/versioninfo.rc
- at WIN32_TRUE@am__append_11 = $(top_builddir)/win32/versioninfo.rc
- at WIN32_TRUE@am__append_12 = $(top_builddir)/win32/versioninfo.rc
- at WIN32_TRUE@am__append_13 = $(top_builddir)/win32/versioninfo.rc
- at WIN32_TRUE@am__append_14 = $(top_builddir)/win32/versioninfo.rc
- at WIN32_TRUE@am__append_15 = $(top_builddir)/win32/versioninfo.rc
- at WIN32_TRUE@am__append_16 = $(top_builddir)/win32/versioninfo.rc
-subdir = src/tools
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_pthread.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
- at ENABLE_OPENSSL_TRUE@am__EXEEXT_1 = cryptoflex-tool$(EXEEXT) \
- at ENABLE_OPENSSL_TRUE@	pkcs15-init$(EXEEXT) netkey-tool$(EXEEXT) \
- at ENABLE_OPENSSL_TRUE@	piv-tool$(EXEEXT) westcos-tool$(EXEEXT) \
- at ENABLE_OPENSSL_TRUE@	sc-hsm-tool$(EXEEXT)
-am__installdirs = "$(DESTDIR)$(bindir)"
-PROGRAMS = $(bin_PROGRAMS)
-am__cardos_tool_SOURCES_DIST = cardos-tool.c util.c \
-	$(top_builddir)/win32/versioninfo.rc
-am__dirstamp = $(am__leading_dot)dirstamp
- at WIN32_TRUE@am__objects_1 =  \
- at WIN32_TRUE@	$(top_builddir)/win32/versioninfo.$(OBJEXT)
-am_cardos_tool_OBJECTS = cardos-tool.$(OBJEXT) util.$(OBJEXT) \
-	$(am__objects_1)
-cardos_tool_OBJECTS = $(am_cardos_tool_OBJECTS)
-am__DEPENDENCIES_1 =
-cardos_tool_DEPENDENCIES = $(am__DEPENDENCIES_1)
-AM_V_lt = $(am__v_lt_$(V))
-am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
-am__v_lt_0 = --silent
-am__cryptoflex_tool_SOURCES_DIST = cryptoflex-tool.c util.c \
-	$(top_builddir)/win32/versioninfo.rc
-am_cryptoflex_tool_OBJECTS = cryptoflex-tool.$(OBJEXT) util.$(OBJEXT) \
-	$(am__objects_1)
-cryptoflex_tool_OBJECTS = $(am_cryptoflex_tool_OBJECTS)
-cryptoflex_tool_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__eidenv_SOURCES_DIST = eidenv.c util.c \
-	$(top_builddir)/win32/versioninfo.rc
-am_eidenv_OBJECTS = eidenv.$(OBJEXT) util.$(OBJEXT) $(am__objects_1)
-eidenv_OBJECTS = $(am_eidenv_OBJECTS)
-eidenv_LDADD = $(LDADD)
-am__iasecc_tool_SOURCES_DIST = iasecc-tool.c util.c \
-	$(top_builddir)/win32/versioninfo.rc
-am_iasecc_tool_OBJECTS = iasecc-tool.$(OBJEXT) util.$(OBJEXT) \
-	$(am__objects_1)
-iasecc_tool_OBJECTS = $(am_iasecc_tool_OBJECTS)
-iasecc_tool_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__netkey_tool_SOURCES_DIST = netkey-tool.c \
-	$(top_builddir)/win32/versioninfo.rc
-am_netkey_tool_OBJECTS = netkey-tool.$(OBJEXT) $(am__objects_1)
-netkey_tool_OBJECTS = $(am_netkey_tool_OBJECTS)
-netkey_tool_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__openpgp_tool_SOURCES_DIST = openpgp-tool.c util.c \
-	$(top_builddir)/win32/versioninfo.rc
-am_openpgp_tool_OBJECTS = openpgp-tool.$(OBJEXT) util.$(OBJEXT) \
-	$(am__objects_1)
-openpgp_tool_OBJECTS = $(am_openpgp_tool_OBJECTS)
-openpgp_tool_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__opensc_explorer_SOURCES_DIST = opensc-explorer.c util.c \
-	$(top_builddir)/win32/versioninfo.rc
-am_opensc_explorer_OBJECTS = opensc-explorer.$(OBJEXT) util.$(OBJEXT) \
-	$(am__objects_1)
-opensc_explorer_OBJECTS = $(am_opensc_explorer_OBJECTS)
-opensc_explorer_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__opensc_tool_SOURCES_DIST = opensc-tool.c util.c \
-	$(top_builddir)/win32/versioninfo.rc
-am_opensc_tool_OBJECTS = opensc-tool.$(OBJEXT) util.$(OBJEXT) \
-	$(am__objects_1)
-opensc_tool_OBJECTS = $(am_opensc_tool_OBJECTS)
-opensc_tool_LDADD = $(LDADD)
-am__piv_tool_SOURCES_DIST = piv-tool.c util.c \
-	$(top_builddir)/win32/versioninfo.rc
-am_piv_tool_OBJECTS = piv-tool.$(OBJEXT) util.$(OBJEXT) \
-	$(am__objects_1)
-piv_tool_OBJECTS = $(am_piv_tool_OBJECTS)
-piv_tool_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__pkcs11_tool_SOURCES_DIST = pkcs11-tool.c util.c \
-	$(top_builddir)/win32/versioninfo.rc
-am_pkcs11_tool_OBJECTS = pkcs11-tool.$(OBJEXT) util.$(OBJEXT) \
-	$(am__objects_1)
-pkcs11_tool_OBJECTS = $(am_pkcs11_tool_OBJECTS)
-pkcs11_tool_DEPENDENCIES = $(top_builddir)/src/common/libpkcs11.la \
-	$(am__DEPENDENCIES_1)
-am__pkcs15_crypt_SOURCES_DIST = pkcs15-crypt.c util.c \
-	$(top_builddir)/win32/versioninfo.rc
-am_pkcs15_crypt_OBJECTS = pkcs15-crypt.$(OBJEXT) util.$(OBJEXT) \
-	$(am__objects_1)
-pkcs15_crypt_OBJECTS = $(am_pkcs15_crypt_OBJECTS)
-pkcs15_crypt_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__pkcs15_init_SOURCES_DIST = pkcs15-init.c util.c \
-	$(top_builddir)/win32/versioninfo.rc
-am_pkcs15_init_OBJECTS = pkcs15-init.$(OBJEXT) util.$(OBJEXT) \
-	$(am__objects_1)
-pkcs15_init_OBJECTS = $(am_pkcs15_init_OBJECTS)
-pkcs15_init_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__pkcs15_tool_SOURCES_DIST = pkcs15-tool.c util.c \
-	$(top_builddir)/win32/versioninfo.rc
-am_pkcs15_tool_OBJECTS = pkcs15-tool.$(OBJEXT) util.$(OBJEXT) \
-	$(am__objects_1)
-pkcs15_tool_OBJECTS = $(am_pkcs15_tool_OBJECTS)
-pkcs15_tool_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__sc_hsm_tool_SOURCES_DIST = sc-hsm-tool.c util.c \
-	$(top_builddir)/win32/versioninfo.rc
-am_sc_hsm_tool_OBJECTS = sc-hsm-tool.$(OBJEXT) util.$(OBJEXT) \
-	$(am__objects_1)
-sc_hsm_tool_OBJECTS = $(am_sc_hsm_tool_OBJECTS)
-sc_hsm_tool_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__westcos_tool_SOURCES_DIST = westcos-tool.c util.c \
-	$(top_builddir)/win32/versioninfo.rc
-am_westcos_tool_OBJECTS = westcos-tool.$(OBJEXT) util.$(OBJEXT) \
-	$(am__objects_1)
-westcos_tool_OBJECTS = $(am_westcos_tool_OBJECTS)
-westcos_tool_DEPENDENCIES = $(am__DEPENDENCIES_1)
-DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
-depcomp = $(SHELL) $(top_srcdir)/depcomp
-am__depfiles_maybe = depfiles
-am__mv = mv -f
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
-	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
-	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
-	$(AM_CFLAGS) $(CFLAGS)
-AM_V_CC = $(am__v_CC_$(V))
-am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
-am__v_CC_0 = @echo "  CC    " $@;
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
-am__v_at_0 = @
-CCLD = $(CC)
-LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CCLD = $(am__v_CCLD_$(V))
-am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
-am__v_CCLD_0 = @echo "  CCLD  " $@;
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo "  GEN   " $@;
-SOURCES = $(cardos_tool_SOURCES) $(cryptoflex_tool_SOURCES) \
-	$(eidenv_SOURCES) $(iasecc_tool_SOURCES) \
-	$(netkey_tool_SOURCES) $(openpgp_tool_SOURCES) \
-	$(opensc_explorer_SOURCES) $(opensc_tool_SOURCES) \
-	$(piv_tool_SOURCES) $(pkcs11_tool_SOURCES) \
-	$(pkcs15_crypt_SOURCES) $(pkcs15_init_SOURCES) \
-	$(pkcs15_tool_SOURCES) $(sc_hsm_tool_SOURCES) \
-	$(westcos_tool_SOURCES)
-DIST_SOURCES = $(am__cardos_tool_SOURCES_DIST) \
-	$(am__cryptoflex_tool_SOURCES_DIST) $(am__eidenv_SOURCES_DIST) \
-	$(am__iasecc_tool_SOURCES_DIST) \
-	$(am__netkey_tool_SOURCES_DIST) \
-	$(am__openpgp_tool_SOURCES_DIST) \
-	$(am__opensc_explorer_SOURCES_DIST) \
-	$(am__opensc_tool_SOURCES_DIST) $(am__piv_tool_SOURCES_DIST) \
-	$(am__pkcs11_tool_SOURCES_DIST) \
-	$(am__pkcs15_crypt_SOURCES_DIST) \
-	$(am__pkcs15_init_SOURCES_DIST) \
-	$(am__pkcs15_tool_SOURCES_DIST) \
-	$(am__sc_hsm_tool_SOURCES_DIST) \
-	$(am__westcos_tool_SOURCES_DIST)
-HEADERS = $(noinst_HEADERS)
-ETAGS = etags
-CTAGS = ctags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AR = @AR@
-AS = @AS@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEBUG_FILE = @DEBUG_FILE@
-DEFAULT_PCSC_PROVIDER = @DEFAULT_PCSC_PROVIDER@
-DEFAULT_SM_MODULE = @DEFAULT_SM_MODULE@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DLLTOOL = @DLLTOOL@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-FGREP = @FGREP@
-GIT = @GIT@
-GREP = @GREP@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBOBJS = @LIBOBJS@
-LIBRARY_BITNESS = @LIBRARY_BITNESS@
-LIBS = \
-	$(top_builddir)/src/libopensc/libopensc.la \
-	$(top_builddir)/src/common/libscdl.la \
-	$(top_builddir)/src/common/libcompat.la
-
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-NM = @NM@
-NMEDIT = @NMEDIT@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OPENCT_CFLAGS = @OPENCT_CFLAGS@
-OPENCT_LIBS = @OPENCT_LIBS@
-OPENSC_LT_AGE = @OPENSC_LT_AGE@
-OPENSC_LT_CURRENT = @OPENSC_LT_CURRENT@
-OPENSC_LT_OLDEST = @OPENSC_LT_OLDEST@
-OPENSC_LT_REVISION = @OPENSC_LT_REVISION@
-OPENSC_VERSION_FIX = @OPENSC_VERSION_FIX@
-OPENSC_VERSION_MAJOR = @OPENSC_VERSION_MAJOR@
-OPENSC_VERSION_MINOR = @OPENSC_VERSION_MINOR@
-OPENSSL_CFLAGS = @OPENSSL_CFLAGS@
-OPENSSL_LIBS = @OPENSSL_LIBS@
-OPTIONAL_OPENCT_CFLAGS = @OPTIONAL_OPENCT_CFLAGS@
-OPTIONAL_OPENCT_LIBS = @OPTIONAL_OPENCT_LIBS@
-OPTIONAL_OPENSSL_CFLAGS = @OPTIONAL_OPENSSL_CFLAGS@
-OPTIONAL_OPENSSL_LIBS = @OPTIONAL_OPENSSL_LIBS@
-OPTIONAL_PCSC_CFLAGS = @OPTIONAL_PCSC_CFLAGS@
-OPTIONAL_READLINE_CFLAGS = @OPTIONAL_READLINE_CFLAGS@
-OPTIONAL_READLINE_LIBS = @OPTIONAL_READLINE_LIBS@
-OPTIONAL_ZLIB_CFLAGS = @OPTIONAL_ZLIB_CFLAGS@
-OPTIONAL_ZLIB_LIBS = @OPTIONAL_ZLIB_LIBS@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PCSC_CFLAGS = @PCSC_CFLAGS@
-PCSC_LIBS = @PCSC_LIBS@
-PKG_CONFIG = @PKG_CONFIG@
-PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
-PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
-PTHREAD_CC = @PTHREAD_CC@
-PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
-PTHREAD_LIBS = @PTHREAD_LIBS@
-RANLIB = @RANLIB@
-RC = @RC@
-READLINE_CFLAGS = @READLINE_CFLAGS@
-READLINE_LIBS = @READLINE_LIBS@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-WIN_LIBPREFIX = @WIN_LIBPREFIX@
-XSLTPROC = @XSLTPROC@
-ZLIB_CFLAGS = @ZLIB_CFLAGS@
-ZLIB_LIBS = @ZLIB_LIBS@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-ax_pthread_config = @ax_pthread_config@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-git = @git@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-pkcs11dir = @pkcs11dir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-xslstylesheetsdir = @xslstylesheetsdir@
-RCCOMPILE = $(RC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS)
-
-LTRCCOMPILE = $(LIBTOOL) --mode=compile --tag=RC $(RCCOMPILE)
-MAINTAINERCLEANFILES = $(srcdir)/Makefile.in
-EXTRA_DIST = Makefile.mak
-noinst_HEADERS = util.h
-
-# compile with $(PTHREAD_CFLAGS) to allow debugging with gdb
-AM_CFLAGS = $(OPTIONAL_OPENSSL_CFLAGS) $(OPTIONAL_READLINE_CFLAGS) $(PTHREAD_CFLAGS)
-AM_CPPFLAGS = -I$(top_srcdir)/src
-opensc_tool_SOURCES = opensc-tool.c util.c $(am__append_2)
-piv_tool_SOURCES = piv-tool.c util.c $(am__append_3)
-piv_tool_LDADD = $(OPTIONAL_OPENSSL_LIBS)
-opensc_explorer_SOURCES = opensc-explorer.c util.c $(am__append_4)
-opensc_explorer_LDADD = $(OPTIONAL_READLINE_LIBS)
-pkcs15_tool_SOURCES = pkcs15-tool.c util.c $(am__append_5)
-pkcs15_tool_LDADD = $(OPTIONAL_OPENSSL_LIBS)
-pkcs11_tool_SOURCES = pkcs11-tool.c util.c $(am__append_6)
-pkcs11_tool_LDADD = \
-	$(top_builddir)/src/common/libpkcs11.la \
-	$(OPTIONAL_OPENSSL_LIBS)
-
-pkcs15_crypt_SOURCES = pkcs15-crypt.c util.c $(am__append_7)
-pkcs15_crypt_LDADD = $(OPTIONAL_OPENSSL_LIBS)
-cryptoflex_tool_SOURCES = cryptoflex-tool.c util.c $(am__append_8)
-cryptoflex_tool_LDADD = $(OPTIONAL_OPENSSL_LIBS)
-pkcs15_init_SOURCES = pkcs15-init.c util.c $(am__append_9)
-pkcs15_init_LDADD = $(OPTIONAL_OPENSSL_LIBS)
-cardos_tool_SOURCES = cardos-tool.c util.c $(am__append_10)
-cardos_tool_LDADD = $(OPTIONAL_OPENSSL_LIBS)
-eidenv_SOURCES = eidenv.c util.c $(am__append_11)
-netkey_tool_SOURCES = netkey-tool.c $(am__append_12)
-netkey_tool_LDADD = $(OPTIONAL_OPENSSL_LIBS)
-westcos_tool_SOURCES = westcos-tool.c util.c $(am__append_13)
-westcos_tool_LDADD = $(OPTIONAL_OPENSSL_LIBS)
-openpgp_tool_SOURCES = openpgp-tool.c util.c $(am__append_14)
-openpgp_tool_LDADD = $(OPTIONAL_OPENSSL_LIBS)
-iasecc_tool_SOURCES = iasecc-tool.c util.c $(am__append_15)
-iasecc_tool_LDADD = $(OPTIONAL_OPENSSL_LIBS)
-sc_hsm_tool_SOURCES = sc-hsm-tool.c util.c $(am__append_16)
-sc_hsm_tool_LDADD = $(OPTIONAL_OPENSSL_LIBS)
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .c .lo .o .obj .rc
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am $(top_srcdir)/win32/ltrc.inc $(am__configure_deps)
-	@for dep in $?; do \
-	  case '$(am__configure_deps)' in \
-	    *$$dep*) \
-	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
-	        && { if test -f $@; then exit 0; else break; fi; }; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/tools/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --foreign src/tools/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-	@case '$?' in \
-	  *config.status*) \
-	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-	esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure:  $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-install-binPROGRAMS: $(bin_PROGRAMS)
-	@$(NORMAL_INSTALL)
-	test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
-	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
-	for p in $$list; do echo "$$p $$p"; done | \
-	sed 's/$(EXEEXT)$$//' | \
-	while read p p1; do if test -f $$p || test -f $$p1; \
-	  then echo "$$p"; echo "$$p"; else :; fi; \
-	done | \
-	sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \
-	    -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
-	sed 'N;N;N;s,\n, ,g' | \
-	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
-	  { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
-	    if ($$2 == $$4) files[d] = files[d] " " $$1; \
-	    else { print "f", $$3 "/" $$4, $$1; } } \
-	  END { for (d in files) print "f", d, files[d] }' | \
-	while read type dir files; do \
-	    if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
-	    test -z "$$files" || { \
-	    echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \
-	    $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
-	    } \
-	; done
-
-uninstall-binPROGRAMS:
-	@$(NORMAL_UNINSTALL)
-	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
-	files=`for p in $$list; do echo "$$p"; done | \
-	  sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
-	      -e 's/$$/$(EXEEXT)/' `; \
-	test -n "$$list" || exit 0; \
-	echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
-	cd "$(DESTDIR)$(bindir)" && rm -f $$files
-
-clean-binPROGRAMS:
-	@list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \
-	echo " rm -f" $$list; \
-	rm -f $$list || exit $$?; \
-	test -n "$(EXEEXT)" || exit 0; \
-	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
-	echo " rm -f" $$list; \
-	rm -f $$list
-$(top_builddir)/win32/$(am__dirstamp):
-	@$(MKDIR_P) $(top_builddir)/win32
-	@: > $(top_builddir)/win32/$(am__dirstamp)
-$(top_builddir)/win32/$(DEPDIR)/$(am__dirstamp):
-	@$(MKDIR_P) $(top_builddir)/win32/$(DEPDIR)
-	@: > $(top_builddir)/win32/$(DEPDIR)/$(am__dirstamp)
-$(top_builddir)/win32/versioninfo.$(OBJEXT):  \
-	$(top_builddir)/win32/$(am__dirstamp) \
-	$(top_builddir)/win32/$(DEPDIR)/$(am__dirstamp)
-cardos-tool$(EXEEXT): $(cardos_tool_OBJECTS) $(cardos_tool_DEPENDENCIES) 
-	@rm -f cardos-tool$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(cardos_tool_OBJECTS) $(cardos_tool_LDADD) $(LIBS)
-cryptoflex-tool$(EXEEXT): $(cryptoflex_tool_OBJECTS) $(cryptoflex_tool_DEPENDENCIES) 
-	@rm -f cryptoflex-tool$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(cryptoflex_tool_OBJECTS) $(cryptoflex_tool_LDADD) $(LIBS)
-eidenv$(EXEEXT): $(eidenv_OBJECTS) $(eidenv_DEPENDENCIES) 
-	@rm -f eidenv$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(eidenv_OBJECTS) $(eidenv_LDADD) $(LIBS)
-iasecc-tool$(EXEEXT): $(iasecc_tool_OBJECTS) $(iasecc_tool_DEPENDENCIES) 
-	@rm -f iasecc-tool$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(iasecc_tool_OBJECTS) $(iasecc_tool_LDADD) $(LIBS)
-netkey-tool$(EXEEXT): $(netkey_tool_OBJECTS) $(netkey_tool_DEPENDENCIES) 
-	@rm -f netkey-tool$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(netkey_tool_OBJECTS) $(netkey_tool_LDADD) $(LIBS)
-openpgp-tool$(EXEEXT): $(openpgp_tool_OBJECTS) $(openpgp_tool_DEPENDENCIES) 
-	@rm -f openpgp-tool$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(openpgp_tool_OBJECTS) $(openpgp_tool_LDADD) $(LIBS)
-opensc-explorer$(EXEEXT): $(opensc_explorer_OBJECTS) $(opensc_explorer_DEPENDENCIES) 
-	@rm -f opensc-explorer$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(opensc_explorer_OBJECTS) $(opensc_explorer_LDADD) $(LIBS)
-opensc-tool$(EXEEXT): $(opensc_tool_OBJECTS) $(opensc_tool_DEPENDENCIES) 
-	@rm -f opensc-tool$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(opensc_tool_OBJECTS) $(opensc_tool_LDADD) $(LIBS)
-piv-tool$(EXEEXT): $(piv_tool_OBJECTS) $(piv_tool_DEPENDENCIES) 
-	@rm -f piv-tool$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(piv_tool_OBJECTS) $(piv_tool_LDADD) $(LIBS)
-pkcs11-tool$(EXEEXT): $(pkcs11_tool_OBJECTS) $(pkcs11_tool_DEPENDENCIES) 
-	@rm -f pkcs11-tool$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(pkcs11_tool_OBJECTS) $(pkcs11_tool_LDADD) $(LIBS)
-pkcs15-crypt$(EXEEXT): $(pkcs15_crypt_OBJECTS) $(pkcs15_crypt_DEPENDENCIES) 
-	@rm -f pkcs15-crypt$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(pkcs15_crypt_OBJECTS) $(pkcs15_crypt_LDADD) $(LIBS)
-pkcs15-init$(EXEEXT): $(pkcs15_init_OBJECTS) $(pkcs15_init_DEPENDENCIES) 
-	@rm -f pkcs15-init$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(pkcs15_init_OBJECTS) $(pkcs15_init_LDADD) $(LIBS)
-pkcs15-tool$(EXEEXT): $(pkcs15_tool_OBJECTS) $(pkcs15_tool_DEPENDENCIES) 
-	@rm -f pkcs15-tool$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(pkcs15_tool_OBJECTS) $(pkcs15_tool_LDADD) $(LIBS)
-sc-hsm-tool$(EXEEXT): $(sc_hsm_tool_OBJECTS) $(sc_hsm_tool_DEPENDENCIES) 
-	@rm -f sc-hsm-tool$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(sc_hsm_tool_OBJECTS) $(sc_hsm_tool_LDADD) $(LIBS)
-westcos-tool$(EXEEXT): $(westcos_tool_OBJECTS) $(westcos_tool_DEPENDENCIES) 
-	@rm -f westcos-tool$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(westcos_tool_OBJECTS) $(westcos_tool_LDADD) $(LIBS)
-
-mostlyclean-compile:
-	-rm -f *.$(OBJEXT)
-	-rm -f $(top_builddir)/win32/versioninfo.$(OBJEXT)
-
-distclean-compile:
-	-rm -f *.tab.c
-
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/cardos-tool.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/cryptoflex-tool.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/eidenv.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/iasecc-tool.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/netkey-tool.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/openpgp-tool.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/opensc-explorer.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/opensc-tool.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/piv-tool.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pkcs11-tool.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pkcs15-crypt.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pkcs15-init.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pkcs15-tool.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/sc-hsm-tool.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/util.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/westcos-tool.Po at am__quote@
-
-.c.o:
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(COMPILE) -c $<
-
-.c.obj:
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
-
-.c.lo:
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
- at am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $<
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	set x; \
-	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	shift; \
-	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
-	  test -n "$$unique" || unique=$$empty_fix; \
-	  if test $$# -gt 0; then \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      "$$@" $$unique; \
-	  else \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      $$unique; \
-	  fi; \
-	fi
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	test -z "$(CTAGS_ARGS)$$unique" \
-	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$unique
-
-GTAGS:
-	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && $(am__cd) $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) "$$here"
-
-distclean-tags:
-	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d "$(distdir)/$$file"; then \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-	  else \
-	    test -f "$(distdir)/$$file" \
-	    || cp -p $$d/$$file "$(distdir)/$$file" \
-	    || exit 1; \
-	  fi; \
-	done
-check-am: all-am
-check: check-am
-all-am: Makefile $(PROGRAMS) $(HEADERS)
-installdirs:
-	for dir in "$(DESTDIR)$(bindir)"; do \
-	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
-	done
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-	-test -z "$(top_builddir)/win32/$(DEPDIR)/$(am__dirstamp)" || rm -f $(top_builddir)/win32/$(DEPDIR)/$(am__dirstamp)
-	-test -z "$(top_builddir)/win32/$(am__dirstamp)" || rm -f $(top_builddir)/win32/$(am__dirstamp)
-
-maintainer-clean-generic:
-	@echo "This command is intended for maintainers to use"
-	@echo "it deletes files that may require special tools to rebuild."
-	-test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
-clean: clean-am
-
-clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am
-
-distclean: distclean-am
-	-rm -rf ./$(DEPDIR)
-	-rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
-	distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am:
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am: install-binPROGRAMS
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
-	-rm -rf ./$(DEPDIR)
-	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-compile mostlyclean-generic \
-	mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-binPROGRAMS
-
-.MAKE: install-am install-strip
-
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
-	clean-generic clean-libtool ctags distclean distclean-compile \
-	distclean-generic distclean-libtool distclean-tags distdir dvi \
-	dvi-am html html-am info info-am install install-am \
-	install-binPROGRAMS install-data install-data-am install-dvi \
-	install-dvi-am install-exec install-exec-am install-html \
-	install-html-am install-info install-info-am install-man \
-	install-pdf install-pdf-am install-ps install-ps-am \
-	install-strip installcheck installcheck-am installdirs \
-	maintainer-clean maintainer-clean-generic mostlyclean \
-	mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
-	pdf pdf-am ps ps-am tags uninstall uninstall-am \
-	uninstall-binPROGRAMS
-
-
-.rc.lo:
-	$(LTRCCOMPILE) -i "$<" -o "$@"
-
-.rc.o:
-	$(RCCOMPILE) -i "$<" -o "$@"
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/src/tools/Makefile.mak b/src/tools/Makefile.mak
index 3706b6a..05d7f9e 100644
--- a/src/tools/Makefile.mak
+++ b/src/tools/Makefile.mak
@@ -3,10 +3,10 @@ TOPDIR = ..\..
 !INCLUDE $(TOPDIR)\win32\Make.rules.mak
 
 TARGETS = opensc-tool.exe opensc-explorer.exe pkcs15-tool.exe pkcs15-crypt.exe \
-		pkcs11-tool.exe cardos-tool.exe eidenv.exe sc-hsm-tool.exe \
+		pkcs11-tool.exe cardos-tool.exe eidenv.exe sc-hsm-tool.exe openpgp-tool.exe dnie-tool.exe \
 		$(PROGRAMS_OPENSSL)
 
-$(TARGETS): $(TOPDIR)\win32\versioninfo.res util.obj 
+$(TARGETS): versioninfo-tools.res util.obj
 
 all: $(TARGETS)
 
@@ -15,8 +15,7 @@ all: $(TARGETS)
 
 .c.exe:
 	cl $(COPTS) /c $<
-	link $(LINKFLAGS) /pdb:$*.pdb /out:$@ $*.obj util.obj \
-        ..\common\common.lib ..\scconf\scconf.lib ..\libopensc\opensc.lib \
-        ..\pkcs15init\pkcs15init.lib ..\common\libpkcs11.lib ..\common\libscdl.lib \
-        $(TOPDIR)\win32\versioninfo.res $(OPENSSL_LIB) gdi32.lib
+	link $(LINKFLAGS) /pdb:$*.pdb /out:$@ $*.obj util.obj ..\common\common.lib \
+	..\scconf\scconf.lib ..\libopensc\opensc.lib ..\pkcs15init\pkcs15init.lib \
+	..\common\libpkcs11.lib ..\common\libscdl.lib versioninfo-tools.res $(OPENSSL_LIB) gdi32.lib
 		if EXIST $@.manifest mt -manifest $@.manifest -outputresource:$@;1
diff --git a/src/tools/cardos-tool.c b/src/tools/cardos-tool.c
index a708b54..7d67843 100644
--- a/src/tools/cardos-tool.c
+++ b/src/tools/cardos-tool.c
@@ -79,6 +79,7 @@ static int cardos_info(void)
 {
 	sc_apdu_t apdu;
 	u8 rbuf[SC_MAX_APDU_BUFFER_SIZE];
+	int is_cardos5 = 0;
 	int r;
 
 	if (verbose) {
@@ -115,6 +116,24 @@ static int cardos_info(void)
 	}
 	printf("Info : %s\n", apdu.resp);
 
+	apdu.p2 = 0x82;
+	apdu.resplen = sizeof(rbuf);
+	r = sc_transmit_apdu(card, &apdu);
+	if (r) {
+		fprintf(stderr, "APDU transmit failed: %s\n",
+			sc_strerror(r));
+		return 1;
+	}
+	if (apdu.sw1 != 0x90 || apdu.sw2 != 00 || verbose) {
+		fprintf(stderr, "Received (SW1=0x%02X, SW2=0x%02X)%s\n",
+			apdu.sw1, apdu.sw2, apdu.resplen ? ":" : "");
+		if (apdu.resplen)
+			util_hex_dump_asc(stdout, apdu.resp, apdu.resplen, -1);
+		return 1;
+	}
+	if (apdu.resp[0] == 0xc9)
+		is_cardos5 = 1;
+	
 	apdu.p2 = 0x81;
 	apdu.resplen = sizeof(rbuf);
 	r = sc_transmit_apdu(card, &apdu);
@@ -130,15 +149,20 @@ static int cardos_info(void)
 			util_hex_dump_asc(stdout, apdu.resp, apdu.resplen, -1);
 		return 1;
 	}
-
-	printf("Chip type: %d\n", apdu.resp[8]);
-	printf("Serial number: %02x %02x %02x %02x %02x %02x\n",
-	       apdu.resp[10], apdu.resp[11], apdu.resp[12],
-	       apdu.resp[13], apdu.resp[14], apdu.resp[15]);
-	printf("Full prom dump:\n");
-	if (apdu.resplen)
-		util_hex_dump_asc(stdout, apdu.resp, apdu.resplen, -1);
-
+	if (is_cardos5)	{
+		printf("Serial number: %02x %02x %02x %02x %02x %02x %02x %02x\n",	
+			apdu.resp[0], apdu.resp[1], apdu.resp[2], apdu.resp[3],
+			apdu.resp[4], apdu.resp[5], apdu.resp[6], apdu.resp[7]);
+	} else	{
+		printf("Chip type: %d\n", apdu.resp[8]);
+		printf("Serial number: %02x %02x %02x %02x %02x %02x\n",
+			   apdu.resp[10], apdu.resp[11], apdu.resp[12],
+			   apdu.resp[13], apdu.resp[14], apdu.resp[15]);
+		printf("Full prom dump:\n");
+		if (apdu.resplen)
+			util_hex_dump_asc(stdout, apdu.resp, apdu.resplen, -1);
+	}
+	
 	apdu.p2 = 0x82;
 	apdu.resplen = sizeof(rbuf);
 	r = sc_transmit_apdu(card, &apdu);
@@ -173,6 +197,8 @@ static int cardos_info(void)
 		printf(" (that's CardOS M4.2C)\n");
 	} else if (apdu.resp[0] == 0xc8 && apdu.resp[1] == 0x0D) {
 		printf(" (that's CardOS M4.4)\n");
+	} else if (apdu.resp[0] == 0xc9 && apdu.resp[1] == 0x01) {
+		printf(" (that's CardOS V5.0)\n");
 	} else {
 		printf(" (unknown Version)\n");
 	}
@@ -198,7 +224,12 @@ static int cardos_info(void)
 	if (rbuf[0] == 0x34) {
 		printf("%d (manufacturing)\n", rbuf[0]);
 	} else if (rbuf[0] == 0x26) {
-		printf("%d (initialization)\n", rbuf[0]);
+		if (is_cardos5)
+			printf("%d (physinit)\n", rbuf[0]);
+		else
+			printf("%d (initialization)\n", rbuf[0]);
+	} else if (rbuf[0] == 0x23) {
+		printf("%d (physpers)\n", rbuf[0]);
 	} else if (rbuf[0] == 0x24) {
 		printf("%d (personalization)\n", rbuf[0]);
 	} else if (rbuf[0] == 0x20) {
@@ -207,6 +238,8 @@ static int cardos_info(void)
 		printf("%d (operational)\n", rbuf[0]);
 	} else if (rbuf[0] == 0x29) {
 		printf("%d (erase in progress)\n", rbuf[0]);
+	} else if (rbuf[0] == 0x3F) {
+		printf("%d (death)\n", rbuf[0]);
 	} else {
 		printf("%d (unknown)\n", rbuf[0]);
 	}
@@ -266,7 +299,7 @@ static int cardos_info(void)
 
 	if (rbuf[0] == 0x00) {
 		printf("ATR Status: 0x%d ROM-ATR\n",rbuf[0]);
-	} else if (rbuf[0] == 0x90) {
+	} else if (rbuf[0] == 0x80)	{
 		printf("ATR Status: 0x%d EEPROM-ATR\n",rbuf[0]);
 	} else {
 		printf("ATR Status: 0x%d unknown\n",rbuf[0]);
@@ -307,7 +340,11 @@ static int cardos_info(void)
 		return 1;
 	}
 
-	printf("Ram size: %d, Eeprom size: %d, cpu type: %x, chip config: %d\n",
+	if (is_cardos5)
+		printf("Ram size: %d, Eeprom size: %d, cpu type: %x, chip config: %d, chip manufacturer: %d\n",
+			rbuf[0]<<8|rbuf[1], rbuf[2]<<8|rbuf[3], rbuf[4], rbuf[6], rbuf[7]);	
+	else
+		printf("Ram size: %d, Eeprom size: %d, cpu type: %x, chip config: %d\n",
 			rbuf[0]<<8|rbuf[1], rbuf[2]<<8|rbuf[3], rbuf[4], rbuf[5]);
 
 	apdu.p2 = 0x8a;
@@ -326,8 +363,50 @@ static int cardos_info(void)
 		return 1;
 	}
 
-	printf("Free eeprom memory: %d\n", rbuf[0]<<8|rbuf[1]);
+	if (is_cardos5)
+		printf("Free eeprom memory: %d\n", rbuf[0]<<24|rbuf[1]<<16|rbuf[2]<<8|rbuf[3]);
+	else
+		printf("Free eeprom memory: %d\n", rbuf[0]<<8|rbuf[1]);
+
+	apdu.p2 = 0x8d;
+	apdu.resplen = sizeof(rbuf);
+	r = sc_transmit_apdu(card, &apdu);
+	if (r) {
+		fprintf(stderr, "APDU transmit failed: %s\n",
+			sc_strerror(r));
+		return 1;
+	}
+	if (apdu.sw1 != 0x90 || apdu.sw2 != 00 || verbose) {
+		fprintf(stderr, "Received (SW1=0x%02X, SW2=0x%02X)%s\n",
+			apdu.sw1, apdu.sw2, apdu.resplen ? ":" : "");
+		if (apdu.resplen)
+			util_hex_dump_asc(stdout, apdu.resp, apdu.resplen, -1);
+		return 1;
+	}
+
+	printf("Current Maximum Data Field Length: %d\n", rbuf[0]<<8|rbuf[1]);
 
+	if (is_cardos5)	{
+		apdu.p2 = 0x8B;
+		apdu.resplen = sizeof(rbuf);
+		r = sc_transmit_apdu(card, &apdu);
+		if (r) {
+			fprintf(stderr, "APDU transmit failed: %s\n",
+				sc_strerror(r));
+			return 1;
+		}
+		if (apdu.sw1 != 0x90 || apdu.sw2 != 00 || verbose) {
+			fprintf(stderr, "Received (SW1=0x%02X, SW2=0x%02X)%s\n",
+				apdu.sw1, apdu.sw2, apdu.resplen ? ":" : "");
+			if (apdu.resplen)
+				util_hex_dump_asc(stdout, apdu.resp, apdu.resplen, -1);
+			return 1;
+		}
+	
+		printf("Complete chip production data:\n");
+		util_hex_dump_asc(stdout, apdu.resp, apdu.resplen, -1);
+	}
+	
 	apdu.p2 = 0x96;
 	apdu.resplen = sizeof(rbuf);
 	r = sc_transmit_apdu(card, &apdu);
diff --git a/src/tools/dnie-tool.c b/src/tools/dnie-tool.c
new file mode 100644
index 0000000..b3db7f5
--- /dev/null
+++ b/src/tools/dnie-tool.c
@@ -0,0 +1,244 @@
+/*
+ * dnie-tool.c: DNIe tool
+ *
+ * Copyright (C) 2011  Juan Antonio Martinez <jonsito at terra.es>
+ *
+ * Based on file rutoken-tool.c from  Pavel Mironchik <rutoken at rutoken.ru>
+ * and Eugene Hermann <rutoken at rutoken.ru>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+#include "config.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+#include <string.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+#include <fcntl.h>
+
+#include "libopensc/opensc.h"
+#include "libopensc/errors.h"
+#include "libopensc/cardctl.h"
+#include "libopensc/pkcs15.h"
+#include "util.h"
+
+/* win32 needs this in open(2) */
+#ifndef O_BINARY
+#define O_BINARY 0
+#endif
+
+static const char *app_name = "dnie-tool";
+
+#define OP_NONE 	0 /* no operation requested */
+#define	OP_GET_DATA	1 /* retrieve DNIe number, apellidos, nombre */
+#define OP_GET_IDESP	2 /* retrieve IDESP */
+#define	OP_GET_VERSION	4 /* retrieve DNIe version number */
+#define	OP_GET_SERIALNR	8 /* Get SerialNumber */
+
+static const struct option options[] = {
+	{"reader",      1, NULL, 'r'},
+	{"driver",      1, NULL, 'c'},
+	{"wait",	0, NULL, 'w'},
+	{"pin",		1, NULL, 'p'},
+	{"idesp",       0, NULL, 'i'},
+	{"version",     0, NULL, 'V'},
+	{"data",	0, NULL, 'd'},
+	{"serial",      0, NULL, 's'},
+	{"all",	 	0, NULL, 'a'},
+	{"verbose",     0, NULL, 'v'},
+	{NULL,	  	0, NULL,  0 }
+};
+
+static const char *option_help[] = {
+	"Uses reader number <arg> [0]",
+	"Uses reader driver <arg> [auto-detect]",
+	"Wait for a card to be inserted",
+	"Specify PIN",
+	"Retrieve IDESP",
+	"Gets DNIe software version",
+	"Show DNIe number, Name, and SurName",
+	"Show DNIe serial number",
+	"Display all the information available",
+	"Verbose operation. Use several times to enable debug output."
+};
+
+/*  Get DNIe device extra information  */
+
+int main(int argc, char* argv[])
+{
+	int	     opt_wait = 0;
+	const char  *opt_pin = NULL;
+	const char  *opt_reader = NULL;
+	const char  *opt_driver = NULL;
+	int	     opt_operation = OP_NONE;
+	int	     verbose = 0;
+	
+	int err = 0;
+	sc_context_t *ctx = NULL;
+	sc_context_param_t ctx_param;
+	sc_card_t *card = NULL;
+	int c, long_optind, r, tries_left;
+	
+	char *data[] = { NULL, NULL, NULL, NULL, NULL };
+	sc_serial_number_t serial;
+
+	while (1) {
+		c = getopt_long(argc, argv, "r:c:wp:iVdsav",
+				options, &long_optind);
+		if (c == -1)
+			break;
+		switch (c) {
+		case '?':
+			util_print_usage_and_die(app_name, options, option_help, NULL);
+		case 'r':
+			opt_reader = optarg;
+			break;
+		case 'c':
+			opt_driver = optarg;
+			break;
+		case 'w':
+			opt_wait = 1;
+			break;
+		case 'p':
+			opt_pin = optarg;
+			break;
+		case 'i':
+			opt_operation |= OP_GET_IDESP;
+			break;
+		case 'V':
+			opt_operation |= OP_GET_VERSION;
+			break;
+		case 'd':
+			opt_operation |= OP_GET_DATA;
+			break;
+		case 's':
+			opt_operation |= OP_GET_SERIALNR;
+			break;
+		case 'a':
+			opt_operation = OP_GET_IDESP | OP_GET_VERSION | OP_GET_DATA | OP_GET_SERIALNR;
+			break;
+		case 'v':
+			verbose++;
+			break;
+		}
+	}
+
+	memset(&ctx_param, 0, sizeof(ctx_param));
+	ctx_param.app_name = app_name;
+	r = sc_context_create(&ctx, &ctx_param);
+	if (r) {
+		fprintf(stderr, "Error: Failed to establish context: %s\n",
+			sc_strerror(r));
+		return -1;
+	}
+
+	if (verbose > 1) {
+		ctx->debug = verbose;
+		sc_ctx_log_to_file(ctx,"stderr");
+	}
+
+	if (opt_driver != NULL) {
+		err = sc_set_card_driver(ctx, opt_driver);
+		if (err) {
+			fprintf(stderr, "Driver '%s' not found!\n",
+				opt_driver);
+			err = -1;
+			goto dnie_tool_end;
+		}
+	}
+	
+	if (util_connect_card(ctx, &card, opt_reader, opt_wait, verbose) ) {
+		fprintf(stderr, "Error: Cannot connect with card\n");
+		err = -1;
+		goto dnie_tool_end;
+	}
+
+	if ( strcmp(card->name,"dnie") ) {
+		fprintf(stderr, "Error: Card sems not to be a  DNIe\n");
+		err=-1;
+		goto dnie_tool_end;
+	}
+
+	if ( opt_pin ) {
+		/*  verify  */
+		r = sc_verify(card, SC_AC_CHV, 0,
+				(u8*)opt_pin, strlen(opt_pin), &tries_left);
+		if (r) {
+			fprintf(stderr, "Error: PIN verification failed: %s",
+					sc_strerror(r));
+			if (r == SC_ERROR_PIN_CODE_INCORRECT)
+				fprintf(stderr, " (tries left %d)", tries_left);
+			putc('\n', stderr);
+			err=-1;
+			goto dnie_tool_end;
+		}
+	}
+
+	if (opt_operation==0) {
+		fprintf(stderr,"Error: No operation specified");
+		err = -1;
+		goto dnie_tool_end;
+	}
+	if (opt_operation & 0x0f) {
+		r = sc_card_ctl(card, SC_CARDCTL_DNIE_GET_INFO, data);
+		if ( r != SC_SUCCESS ) {
+			fprintf(stderr, "Error: Get info failed: %s\n", sc_strerror(r));
+			err = -1;
+			goto dnie_tool_end;
+		}
+	}
+	if (opt_operation & OP_GET_DATA) {
+		printf("DNIe Number:   %s\n",data[0]);
+		printf("SurName:       %s\n",data[1]);
+		printf("Name:	  %s\n",data[2]);
+	}
+	if (opt_operation & OP_GET_IDESP) {
+		if (data[3]==NULL) 
+			printf("IDESP:	 (No disponible)\n");
+		else 	printf("IDESP:	 %s\n",data[3]);
+	}
+	if (opt_operation & OP_GET_VERSION) {
+		if (data[4]==NULL)
+			printf("DNIe Version:  (No disponible)\n");
+		else 	printf("DNIe Version:  %s\n",data[4]);
+	}
+	if (opt_operation & OP_GET_SERIALNR) {
+		r = sc_card_ctl(card, SC_CARDCTL_GET_SERIALNR, &serial);
+		if ( r != SC_SUCCESS ) {
+			fprintf(stderr,"Error: Get serial failed: %s\n",sc_strerror(r));
+			err = -1;
+			goto dnie_tool_end;
+		}
+		printf("Serial number: ");
+		util_hex_dump(stdout, serial.value, serial.len, NULL);
+		putchar('\n');
+	}
+
+dnie_tool_end:
+	if (card) {
+		/*  sc_lock  and  sc_connect_card  in  util_connect_card  */
+		sc_unlock(card);
+		sc_disconnect_card(card);
+	}
+	if (ctx)
+		sc_release_context(ctx);
+	return err;
+}
+
diff --git a/src/tools/eidenv.c b/src/tools/eidenv.c
index 554933b..4d2029b 100644
--- a/src/tools/eidenv.c
+++ b/src/tools/eidenv.c
@@ -1,7 +1,7 @@
 /*
  * eidenv.c: EstEID utility
  *
- * Copyright (C) 2004 Martin Paljak <martin at paljak.pri.ee>
+ * Copyright (C) 2004 Martin Paljak <martin at martinpaljak.net>
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
diff --git a/src/tools/netkey-tool.c b/src/tools/netkey-tool.c
index 7bc4153..e03db69 100644
--- a/src/tools/netkey-tool.c
+++ b/src/tools/netkey-tool.c
@@ -41,9 +41,9 @@ static struct {
 	{"DF01C100", 1, "Telesec Authentifizierungs Zertifikat"},
 	{"DF014371", 0, "User Authentifizierungs Zertifikat1"},
 	{"DF014372", 0, "User Authentifizierungs Zertifikat2"},
-	{"DF01C200", 1, "Telesec Verschl�sselungs Zertifikat"},
-	{"DF0143B1", 0, "User Verschl�sselungs Zertifikat1"},
-	{"DF0143B2", 0, "User Verschl�sselungs Zertifikat2"},
+	{"DF01C200", 1, "Telesec Verschluesselungs Zertifikat"},
+	{"DF0143B1", 0, "User Verschluesselungs Zertifikat1"},
+	{"DF0143B2", 0, "User Verschluesselungs Zertifikat2"},
 };
 
 static struct {
diff --git a/src/tools/openpgp-tool.c b/src/tools/openpgp-tool.c
index 7058aaa..d21e3ab 100644
--- a/src/tools/openpgp-tool.c
+++ b/src/tools/openpgp-tool.c
@@ -33,6 +33,7 @@
 #include "libopensc/cards.h"
 #include "libopensc/cardctl.h"
 #include "util.h"
+#include "libopensc/log.h"
 
 #define	OPT_RAW		256
 #define	OPT_PRETTY	257
@@ -55,8 +56,6 @@ static char *prettify_gender(char *str);
 static void display_data(const struct ef_name_map *mapping, char *value);
 static int decode_options(int argc, char **argv);
 static int do_userinfo(sc_card_t *card);
-static int read_transp(sc_card_t *card, const char *pathstring, unsigned char *buf, int buflen);
-static void bintohex(char *buf, int len);
 
 /* define global variables */
 static int actions = 0;
@@ -216,7 +215,7 @@ static void display_data(const struct ef_name_map *mapping, char *value)
 			} else {
 				const char *label = mapping->name;
 
-				printf("%s:%*s%s\n", label, 10-strlen(label), "", value);
+				printf("%s:%*s%s\n", label, (int)(10-strlen(label)), "", value);
 			}
 		}
 	}
@@ -299,89 +298,50 @@ static int decode_options(int argc, char **argv)
 static int do_userinfo(sc_card_t *card)
 {
 	int i;
+	/* FIXME there are no length checks on buf. */
 	unsigned char buf[2048];
 
 	for (i = 0; openpgp_data[i].ef != NULL; i++) {
 		sc_path_t path;
 		sc_file_t *file;
-		size_t count;
-		size_t offset = 0;
+		int count;
 		int r;
 
 		sc_format_path(openpgp_data[i].ef, &path);
 		r = sc_select_file(card, &path, &file);
-
 		if (r) {
-			fprintf(stderr, "Failed to select EF %s: %s\n",
-				openpgp_data[i].ef, sc_strerror(r));
+			fprintf(stderr, "Failed to select EF %s: %s\n", openpgp_data[i].ef, sc_strerror(r));
 			return EXIT_FAILURE;
 		}
 
 		count = file->size;
-		while (count > 0) {
-	                int c = count > sizeof(buf) ? sizeof(buf) : count;
-
-        	        r = sc_read_binary(card, offset, buf+offset, c, 0);
-                	if (r < 0) {
-				fprintf(stderr, "%s: read failed - %s\n",
-					openpgp_data[i].ef, sc_strerror(r));
-	                        return EXIT_FAILURE;
-        	        }
-                	if (r != c) {
-                        	fprintf(stderr, "%s: expecting %d, got only %d bytes\n",
-					openpgp_data[i].ef, c, r);
-	                        return EXIT_FAILURE;
-        	        }
-
-        	        offset += r;
-                	count -= r;
-	        }
-
-		buf[file->size] = '\0';
-
-		if (file->size > 0) {
-			display_data(openpgp_data + i, buf);
-		}
-	}
-
-	return EXIT_SUCCESS;
-}
+		if (!count)
+			continue;
 
+		if (count > (int)sizeof(buf) - 1)   {
+			fprintf(stderr, "Too small buffer to read the OpenPGP data\n");
+			return EXIT_FAILURE;
+		}
+	
+        	r = sc_read_binary(card, 0, buf, count, 0);
+               	if (r < 0) {
+			fprintf(stderr, "%s: read failed - %s\n", openpgp_data[i].ef, sc_strerror(r));
+			return EXIT_FAILURE;
+        	}
+               	if (r != count) {
+                        fprintf(stderr, "%s: expecting %d, got only %d bytes\n", openpgp_data[i].ef, count, r);
+			return EXIT_FAILURE;
+        	}
 
-/* Select and read a transparent EF */
-static int read_transp(sc_card_t *card, const char *pathstring, unsigned char *buf, int buflen)
-{
-	sc_path_t path;
-	int r;
+		buf[count] = '\0';
 
-	sc_format_path(pathstring, &path);
-	r = sc_select_file(card, &path, NULL);
-	if (r < 0)
-		fprintf(stderr, "\nFailed to select file %s: %s\n", pathstring, sc_strerror(r));
-	else {
-		r = sc_read_binary(card, 0, buf, buflen, 0);
-		if (r < 0)
-			fprintf(stderr, "\nFailed to read %s: %s\n", pathstring, sc_strerror(r));
+		display_data(openpgp_data + i, (char *) buf);
 	}
 
-	return r;
+	return EXIT_SUCCESS;
 }
 
 
-/* Hex-encode the buf, 2*len+1 bytes must be reserved. E.g. {'1','2'} -> {'3','1','3','2','\0'} */
-static void bintohex(char *buf, int len)
-{
-	static const char hextable[] = "0123456789ABCDEF";
-	int i;
-
-	for (i = len - 1; i >= 0; i--) {
-		unsigned char c = (unsigned char) buf[i];
-
-		buf[2 * i + 1] = hextable[c % 16];
-		buf[2 * i] = hextable[c / 16];
-	}
-}
-
 int do_genkey(sc_card_t *card, u8 key_id, unsigned int key_len)
 {
 	int r;
@@ -415,7 +375,7 @@ int do_genkey(sc_card_t *card, u8 key_id, unsigned int key_len)
 	return 0;
 }
 
-int do_verify(sc_card_t *card, u8 *type, u8* pin)
+int do_verify(sc_card_t *card, char *type, char *pin)
 {
 	struct sc_pin_cmd_data data;
 	int tries_left;
@@ -437,7 +397,7 @@ int do_verify(sc_card_t *card, u8 *type, u8* pin)
 	data.cmd = SC_PIN_CMD_VERIFY;
 	data.pin_type = SC_AC_CHV;
 	data.pin_reference = type[3] - '0';
-	data.pin1.data = pin;
+	data.pin1.data = (unsigned char *) pin;
 	data.pin1.len = strlen(pin);
 	r = sc_pin_cmd(card, &data, &tries_left);
 	return r;
diff --git a/src/tools/opensc-explorer.c b/src/tools/opensc-explorer.c
index 27c3521..cefc3e1 100644
--- a/src/tools/opensc-explorer.c
+++ b/src/tools/opensc-explorer.c
@@ -104,6 +104,7 @@ static int do_random(int argc, char **argv);
 static int do_get_data(int argc, char **argv);
 static int do_put_data(int argc, char **argv);
 static int do_apdu(int argc, char **argv);
+static int do_sm(int argc, char **argv);
 static int do_asn1(int argc, char **argv);
 static int do_help(int argc, char **argv);
 static int do_quit(int argc, char **argv);
@@ -186,6 +187,9 @@ static struct command	cmds[] = {
 	{ do_asn1,
 		"asn1",	"[<file id>]",
 		"decode an ASN.1 file"			},
+	{ do_sm,
+		"sm",	"open|close",
+		"call SM 'open' or 'close' handlers, if available"},
 	{ do_debug,
 		"debug",	"[<value>]",
 		"get/set the debug level"		},
@@ -293,27 +297,40 @@ ambiguous_match(struct command *table, const char *cmd)
 	return last_match;
 }
 
-static void check_ret(int r, int op, const char *err, const sc_file_t *file)
+
+static void
+check_ret(int r, int op, const char *err, const sc_file_t *file)
 {
 	fprintf(stderr, "%s: %s\n", err, sc_strerror(r));
 	if (r == SC_ERROR_SECURITY_STATUS_NOT_SATISFIED)
 		fprintf(stderr, "ACL for operation: %s\n", util_acl_to_str(sc_file_get_acl_entry(file, op)));
 }
 
-static int arg_to_fid(const char *arg, u8 *fid)
+
+static int
+arg_to_fid(const char *arg, u8 *fid)
 {
-    if (strlen(arg) != 4) {
-        printf("Wrong ID length.\n");
-        return -1;
-    }
-    if (sscanf(arg, "%02X%02X", &fid[0], &fid[1]) != 2) {
-        printf("Invalid ID.\n");
-        return -1;
-    }
-
-    return 0;
+	unsigned int fid0, fid1;
+
+	if (strlen(arg) != 4) {
+		printf("Wrong ID length.\n");
+		return -1;
+	}
+
+	if (sscanf(arg, "%02X%02X", &fid0, &fid1) != 2) {
+		printf("Invalid ID.\n");
+		return -1;
+	}
+
+	fid[0] = (unsigned char)fid0;
+	fid[1] = (unsigned char)fid1;
+
+	return 0;
 }
-static int arg_to_path(const char *arg, sc_path_t *path, int is_id)
+
+
+static int
+arg_to_path(const char *arg, sc_path_t *path, int is_id)
 {
 	memset(path, 0, sizeof(sc_path_t));
 
@@ -622,20 +639,22 @@ static int read_and_util_print_binary_file(sc_file_t *file)
 {
 	unsigned char *buf = NULL;
 	int r;
+	size_t size;
 
-	buf = malloc(file->size);
+	if (file->size) {
+		size = file->size;
+	} else {
+		size = 1024;
+	}
+	buf = malloc(size);
 	if (!buf)
 		return -1;
 
-	r = sc_read_binary(card, 0, buf, file->size, 0);
+	r = sc_read_binary(card, 0, buf, size, 0);
 	if (r < 0)   {
 		check_ret(r, SC_AC_OP_READ, "read failed", file);
 		return -1;
 	}
-	if ((r != file->size) && (card->type != SC_CARD_TYPE_BELPIC_EID))   {
-		printf("expecting %d, got only %d bytes.\n", file->size, r);
-		return -1;
-	}
 	if ((r == 0) && (card->type == SC_CARD_TYPE_BELPIC_EID))
 		return -1;
 
@@ -873,13 +892,14 @@ static int do_create(int argc, char **argv)
 	unsigned int size;
 	int r, op;
 
-	if (argc != 2)
+	if (argc < 2)
 		return usage(do_create);
 	if (arg_to_path(argv[0], &path, 1) != 0)
 		return usage(do_create);
 	/* %z isn't supported everywhere */
 	if (sscanf(argv[1], "%u", &size) != 1)
 		return usage(do_create);
+
 	file = sc_file_new();
 	file->id = (path.value[0] << 8) | path.value[1];
 	file->type = SC_FILE_TYPE_WORKING_EF;
@@ -889,6 +909,11 @@ static int do_create(int argc, char **argv)
 	for (op = 0; op < SC_MAX_AC_OPS; op++)
 		sc_file_add_acl_entry(file, op, SC_AC_NONE, 0);
 
+	if (argc > 2)   {
+		snprintf((char *)file->name, sizeof(file->name), "%s", argv[2]);
+		file->namelen = strlen((char *)file->name);
+	}
+
 	r = create_file(file);
 	sc_file_free(file);
 	return r;
@@ -994,14 +1019,15 @@ static int do_verify(int argc, char **argv)
 				printf("No PIN entered - aborting VERIFY.\n");
 				return -1;
 			}
-			if (strlcpy(buf, pin, sizeof(buf)) >= sizeof(buf)) {
+
+			if (strlcpy((char *)buf, pin, sizeof(buf)) >= sizeof(buf)) {
 				free(pin);
 				printf("PIN too long - aborting VERIFY.\n");
 				return -1;
 			}
 			free(pin);
 			data.pin1.data = buf;
-			data.pin1.len = strlen(buf);
+			data.pin1.len = strlen((char *)buf);
 		}
 	} else {
 		r = parse_string_or_hexdata(argv[1], buf, &buflen);
@@ -1182,6 +1208,7 @@ static int do_get(int argc, char **argv)
 	}
 	count = file->size;
 	while (count) {
+		/* FIXME sc_read_binary does this kind of fetching in a loop already */
 		int c = count > sizeof(buf) ? sizeof(buf) : count;
 
 		r = sc_read_binary(card, idx, buf, c, 0);
@@ -1639,6 +1666,40 @@ err:
 	return -err;
 }
 
+static int do_sm(int argc, char **argv)
+{
+	int r = SC_ERROR_NOT_SUPPORTED, ret = -1;
+
+	if (argc != 1)
+		return usage(do_sm);
+
+#ifdef ENABLE_SM
+	if (!strcmp(argv[0],"open"))   {
+		if (!card->sm_ctx.ops.open)   {
+			printf("Not supported\n");
+			return -1;
+		}
+		r = card->sm_ctx.ops.open(card);
+	}
+	else if (!strcmp(argv[0],"close"))   {
+		if (!card->sm_ctx.ops.close)   {
+			printf("Not supported\n");
+			return -1;
+		}
+		r = card->sm_ctx.ops.close(card);
+	}
+#endif
+	if (r == SC_SUCCESS)   {
+		ret = 0;
+		printf("Success!\n");
+	}
+	else   {
+		printf("Failure: %s\n", sc_strerror(r));
+	}
+
+	return ret;
+}
+
 static int do_help(int argc, char **argv)
 {
 	struct command	*cmd;
@@ -1734,7 +1795,7 @@ int main(int argc, char * const argv[])
 	char *cargv[260];
 	sc_context_param_t ctx_param;
 	int lcycle = SC_CARDCTRL_LIFECYCLE_ADMIN;
-	FILE *script;
+	FILE *script = stdin;
 
 	printf("OpenSC Explorer version %s\n", sc_get_version());
 
@@ -1773,6 +1834,8 @@ int main(int argc, char * const argv[])
 		return 1;
 	}
 
+	ctx->enable_default_driver = 1;
+
 	if (verbose > 1) {
 		ctx->debug = verbose;
 		ctx->debug_file = stderr;
diff --git a/src/tools/opensc-tool.c b/src/tools/opensc-tool.c
index ba73fc9..c167698 100644
--- a/src/tools/opensc-tool.c
+++ b/src/tools/opensc-tool.c
@@ -656,6 +656,7 @@ int main(int argc, char * const argv[])
 	int action_count = 0;
 	const char *opt_driver = NULL;
 	const char *opt_conf_entry = NULL;
+	char **p;
 	sc_context_param_t ctx_param;
 
 	setbuf(stderr, NULL);
@@ -695,8 +696,14 @@ int main(int argc, char * const argv[])
 			action_count++;
 			break;
 		case 's':
-			opt_apdus = (char **) realloc(opt_apdus,
+			p = (char **) realloc(opt_apdus,
 					(opt_apdu_count + 1) * sizeof(char *));
+			if (!p) {
+				fprintf(stderr, "Not enough memory\n");
+				err = 1;
+				goto end;
+			}
+			opt_apdus = p;
 			opt_apdus[opt_apdu_count] = optarg;
 			do_send_apdu++;
 			if (opt_apdu_count == 0)
@@ -751,6 +758,8 @@ int main(int argc, char * const argv[])
 		return 1;
 	}
 
+	ctx->enable_default_driver = 1;
+
 	if (verbose > 1) {
 		ctx->debug = verbose;
 		sc_ctx_log_to_file(ctx, "stderr");
diff --git a/src/tools/piv-tool.c b/src/tools/piv-tool.c
index cebe20a..c845531 100644
--- a/src/tools/piv-tool.c
+++ b/src/tools/piv-tool.c
@@ -86,7 +86,7 @@ static const char *option_help[] = {
 	"authenticate using default 3des key",
 	"Generate key <ref>:<alg> 9A:06 on card, and output pubkey",
 	"Load an object <containerID> containerID as defined in 800-73 without leading 0x",
-	"Load a cert <ref> where <ref> is 9A,9B,9C or 9D",
+	"Load a cert <ref> where <ref> is 9A,9C,9D or 9E",
 	"Load a cert that has been gziped <ref>",
 	"Output file for cert or key",
 	"Inout file for cert",
@@ -203,11 +203,11 @@ static int load_cert(const char * cert_id, const char * cert_file,
 
 	switch (buf[0]) {
 		case 0x9a: sc_format_path("0101",&path); break;
-		case 0x9b: sc_format_path("0500",&path); break;
 		case 0x9c: sc_format_path("0100",&path); break;
 		case 0x9d: sc_format_path("0102",&path); break;
+		case 0x9e: sc_format_path("0500",&path); break;
 		default:
-			fprintf(stderr,"cert must be 9A, 9B, 9C or 9D\n");
+			fprintf(stderr,"cert must be 9A, 9C, 9D or 9E\n");
 			return 2;
 	}
 
@@ -268,13 +268,13 @@ static int gen_key(const char * key_info)
 	}
 	switch (buf[0]) {
 		case 0x9a:
-		case 0x9b:
 		case 0x9c:
 		case 0x9d:
+		case 0x9e:
 			keydata.key_num = buf[0];
 			break;
 		default:
-			fprintf(stderr, "<keyref>:<algid> must be 9A, 9B, 9C or 9D\n");
+			fprintf(stderr, "<keyref>:<algid> must be 9A, 9C, 9D or 9E\n");
 			return 2;
 	}
 
diff --git a/src/tools/pkcs11-tool.c b/src/tools/pkcs11-tool.c
index 808a947..3f5d1f1 100644
--- a/src/tools/pkcs11-tool.c
+++ b/src/tools/pkcs11-tool.c
@@ -389,7 +389,9 @@ int main(int argc, char * argv[])
 	CK_RV rv;
 
 #ifdef _WIN32
-	if (_set_fmode(_O_BINARY) == EINVAL)
+	if(_setmode(_fileno(stdout), _O_BINARY ) == -1)
+		util_fatal("Cannot set FMODE to O_BINARY");
+	if(_setmode(_fileno(stdin), _O_BINARY ) == -1)
 		util_fatal("Cannot set FMODE to O_BINARY");
 #endif
 
@@ -655,7 +657,9 @@ int main(int argc, char * argv[])
 		util_fatal("Failed to load pkcs11 module");
 
 	rv = p11->C_Initialize(NULL);
-	if (rv != CKR_OK)
+	if (rv == CKR_CRYPTOKI_ALREADY_INITIALIZED)
+		printf("\n*** Cryptoki library has already been initialized ***\n");
+	else if (rv != CKR_OK)
 		p11_fatal("C_Initialize", rv);
 
 	if (do_show_info)
@@ -1456,7 +1460,7 @@ static void hash_data(CK_SLOT_ID slot, CK_SESSION_HANDLE session)
 
 	if (opt_input == NULL)
 		fd = 0;
-	else if ((fd = open(opt_input, O_RDONLY)) < 0)
+	else if ((fd = open(opt_input, O_RDONLY|O_BINARY)) < 0)
 		util_fatal("Cannot open %s: %m", opt_input);
 
 	while ((r = read(fd, buffer, sizeof(buffer))) > 0) {
@@ -1617,28 +1621,37 @@ static void	parse_certificate(struct x509cert_info *cert,
 	if (!x) {
 		util_fatal("OpenSSL error during X509 certificate parsing");
 	}
-	p = cert->subject;
-	n = i2d_X509_NAME(x->cert_info->subject, &p);
+	/* check length first */
+	n = i2d_X509_NAME(x->cert_info->subject, NULL);
 	if (n < 0)
 		util_fatal("OpenSSL error while encoding subject name");
 	if (n > (int)sizeof (cert->subject))
 		util_fatal("subject name too long");
+	/* green light, actually do it */
+	p = cert->subject;
+	n = i2d_X509_NAME(x->cert_info->subject, &p);
 	cert->subject_len = n;
 
-	p = cert->issuer;
-	n = i2d_X509_NAME(x->cert_info->issuer, &p);
+	/* check length first */
+	n = i2d_X509_NAME(x->cert_info->issuer, NULL);
 	if (n < 0)
 		util_fatal("OpenSSL error while encoding issuer name");
 	if (n > (int)sizeof (cert->issuer))
 		util_fatal("issuer name too long");
+	/* green light, actually do it */
+	p = cert->issuer;
+	n = i2d_X509_NAME(x->cert_info->issuer, &p);
 	cert->issuer_len = n;
 
-	p = cert->serialnum;
-	n = i2d_ASN1_INTEGER(x->cert_info->serialNumber, &p);
+	/* check length first */
+	n = i2d_ASN1_INTEGER(x->cert_info->serialNumber, NULL);
 	if (n < 0)
 		util_fatal("OpenSSL error while encoding serial number");
 	if (n > (int)sizeof (cert->serialnum))
 		util_fatal("serial number too long");
+	/* green light, actually do it */
+	p = cert->serialnum;
+	n = i2d_ASN1_INTEGER(x->cert_info->serialNumber, &p);
 	cert->serialnum_len = n;
 }
 
@@ -1778,6 +1791,9 @@ static int write_object(CK_SESSION_HANDLE session)
 	CK_RV rv;
 	int need_to_parse_certdata = 0;
 	unsigned char *oid_buf = NULL;
+	CK_OBJECT_CLASS clazz;
+	CK_CERTIFICATE_TYPE cert_type;
+	CK_KEY_TYPE type = CKK_RSA;
 #ifdef ENABLE_OPENSSL
 	struct x509cert_info cert;
 	struct rsakey_info rsa;
@@ -1858,8 +1874,8 @@ static int write_object(CK_SESSION_HANDLE session)
 	}
 
 	if (opt_object_class == CKO_CERTIFICATE) {
-		CK_OBJECT_CLASS clazz = CKO_CERTIFICATE;
-		CK_CERTIFICATE_TYPE cert_type = CKC_X_509;
+		clazz = CKO_CERTIFICATE;
+		cert_type = CKC_X_509;
 
 		FILL_ATTR(cert_templ[0], CKA_TOKEN, &_true, sizeof(_true));
 		FILL_ATTR(cert_templ[1], CKA_VALUE, contents, contents_len);
@@ -1892,7 +1908,7 @@ static int write_object(CK_SESSION_HANDLE session)
 	}
 	else
 	if (opt_object_class == CKO_PRIVATE_KEY) {
-		CK_OBJECT_CLASS clazz = CKO_PRIVATE_KEY;
+		clazz = CKO_PRIVATE_KEY;
 
 		n_privkey_attr = 0;
 		FILL_ATTR(privkey_templ[n_privkey_attr], CKA_CLASS, &clazz, sizeof(clazz));
@@ -1918,7 +1934,6 @@ static int write_object(CK_SESSION_HANDLE session)
 			n_privkey_attr++;
 		}
 		if (evp_key->type == EVP_PKEY_RSA)   {
-			CK_KEY_TYPE type = CKK_RSA;
 			FILL_ATTR(privkey_templ[n_privkey_attr], CKA_KEY_TYPE, &type, sizeof(type));
 			n_privkey_attr++;
 			FILL_ATTR(privkey_templ[n_privkey_attr], CKA_MODULUS, rsa.modulus, rsa.modulus_len);
@@ -1940,7 +1955,7 @@ static int write_object(CK_SESSION_HANDLE session)
 		}
 #if OPENSSL_VERSION_NUMBER >= 0x10000000L && !defined(OPENSSL_NO_EC)
 		else if (evp_key->type == NID_id_GostR3410_2001)   {
-			CK_KEY_TYPE type = CKK_GOSTR3410;
+			type = CKK_GOSTR3410;
 
 			FILL_ATTR(privkey_templ[n_privkey_attr], CKA_KEY_TYPE, &type, sizeof(type));
 			n_privkey_attr++;
@@ -1958,8 +1973,8 @@ static int write_object(CK_SESSION_HANDLE session)
 	}
 	else
 	if (opt_object_class == CKO_PUBLIC_KEY) {
-		CK_OBJECT_CLASS clazz = CKO_PUBLIC_KEY;
-		CK_KEY_TYPE type = CKK_RSA;
+		clazz = CKO_PUBLIC_KEY;
+		type = CKK_RSA;
 
 		FILL_ATTR(pubkey_templ[0], CKA_CLASS, &clazz, sizeof(clazz));
 		FILL_ATTR(pubkey_templ[1], CKA_KEY_TYPE, &type, sizeof(type));
@@ -1998,7 +2013,7 @@ static int write_object(CK_SESSION_HANDLE session)
 	}
 	else
 	if (opt_object_class == CKO_DATA) {
-		CK_OBJECT_CLASS clazz = CKO_DATA;
+		clazz = CKO_DATA;
 		FILL_ATTR(data_templ[0], CKA_CLASS, &clazz, sizeof(clazz));
 		FILL_ATTR(data_templ[1], CKA_TOKEN, &_true, sizeof(_true));
 		FILL_ATTR(data_templ[2], CKA_VALUE, &contents, contents_len);
@@ -2567,6 +2582,7 @@ show_key(CK_SESSION_HANDLE sess, CK_OBJECT_HANDLE obj)
 			unsigned char *bytes = NULL;
 			unsigned int n;
 			int ksize;
+
 			bytes = getEC_POINT(sess, obj, &size);
 			/*
 			 * (We only support uncompressed for now)
@@ -2582,10 +2598,10 @@ show_key(CK_SESSION_HANDLE sess, CK_OBJECT_HANDLE obj)
 			else
 				ksize = (size - 5) * 4;
 
-			printf(" EC_POINT %d bits\n", ksize);
+			printf("  EC_POINT %d bits\n", ksize);
 			if (bytes) {
 				if ((CK_LONG)size > 0) { /* Will print the point here */
-					printf(" EC_POINT:  ");
+					printf("  EC_POINT:   ");
 					for (n = 0; n < size; n++)
 						printf("%02x", bytes[n]);
 					printf("\n");
@@ -3282,7 +3298,9 @@ static int sign_verify_openssl(CK_SESSION_HANDLE session,
 		EVP_sha1(),
 		EVP_md5(),
 		EVP_ripemd160(),
+#if OPENSSL_VERSION_NUMBER >= 0x00908000L
 		EVP_sha256(),
+#endif
 	};
 #endif
 
@@ -3359,7 +3377,9 @@ static int test_signature(CK_SESSION_HANDLE sess)
 		CKM_SHA1_RSA_PKCS,
 		CKM_MD5_RSA_PKCS,
 		CKM_RIPEMD160_RSA_PKCS,
+#if OPENSSL_VERSION_NUMBER >= 0x00908000L
 		CKM_SHA256_RSA_PKCS,
+#endif
 		0xffffff
 	};
 	size_t mechTypes_num = sizeof(mechTypes)/sizeof(CK_MECHANISM_TYPE);
@@ -4138,7 +4158,7 @@ static void test_kpgen_certwrite(CK_SLOT_ID slot, CK_SESSION_HANDLE session)
 	CK_OBJECT_HANDLE	pub_key, priv_key;
 	CK_ULONG		i, num_mechs = 0;
 	CK_RV			rv;
-	CK_BYTE			buf[20], *tmp, *mod;
+	CK_BYTE			buf[20], *tmp;
 	CK_BYTE			md5_and_digestinfo[34] = "\x30\x20\x30\x0c\x06\x08\x2a\x86\x48\x86\xf7\x0d\x02\x05\x05\x00\x04\x10";
 	CK_BYTE			*data, sig[512];
 	CK_ULONG		data_len, sig_len;
@@ -4187,7 +4207,7 @@ static void test_kpgen_certwrite(CK_SLOT_ID slot, CK_SESSION_HANDLE session)
 	memcpy(opt_object_id, tmp, opt_object_id_len);
 
 	/* This is done in NSS */
-	mod = getMODULUS(session, priv_key, &mod_len);
+	getMODULUS(session, priv_key, &mod_len);
 	if (mod_len < 5 || mod_len > 10000) { /* should be resonable limits */
 		printf("ERR: GetAttribute(privkey, CKA_MODULUS) doesn't seem to work\n");
 		return;
@@ -4273,7 +4293,9 @@ static void test_kpgen_certwrite(CK_SLOT_ID slot, CK_SESSION_HANDLE session)
 		util_fatal("Failed to load pkcs11 module");
 
 	rv = p11->C_Initialize(NULL);
-	if (rv != CKR_OK)
+	if (rv == CKR_CRYPTOKI_ALREADY_INITIALIZED)
+		printf("\n*** Cryptoki library has already been initialized ***\n");
+	else if (rv != CKR_OK)
 		p11_fatal("C_Initialize", rv);
 
 	rv = p11->C_OpenSession(opt_slot, CKF_SERIAL_SESSION| CKF_RW_SESSION,
@@ -4303,7 +4325,7 @@ static void test_ec(CK_SLOT_ID slot, CK_SESSION_HANDLE session)
 	CK_OBJECT_HANDLE	pub_key, priv_key;
 	CK_ULONG		i, num_mechs = 0;
 	CK_RV			rv;
-	CK_BYTE			*tmp, *ec_params, *ec_point;
+	CK_BYTE			*tmp;
 	CK_BYTE			*data_to_sign = (CK_BYTE *)"My Heart's in the Highland";
 	CK_BYTE			*data, sig[512];
 	CK_ULONG		data_len, sig_len;
@@ -4340,12 +4362,12 @@ static void test_ec(CK_SLOT_ID slot, CK_SESSION_HANDLE session)
 	memcpy(opt_object_id, tmp, opt_object_id_len);
 
 	/* This is done in NSS */
-	ec_params = getEC_PARAMS(session, priv_key, &ec_params_len);
+	getEC_PARAMS(session, priv_key, &ec_params_len);
 	if (ec_params_len < 5 || ec_params_len > 10000) {
 		printf("ERR: GetAttribute(privkey, CKA_EC_PARAMS) doesn't seem to work\n");
 		return;
 	}
-	ec_point = getEC_POINT(session, pub_key, &ec_point_len);
+	getEC_POINT(session, pub_key, &ec_point_len);
 	if (ec_point_len < 5 || ec_point_len > 10000) {
 		printf("ERR: GetAttribute(pubkey, CKA_EC_POINT) doesn't seem to work\n");
 		return;
@@ -4436,6 +4458,8 @@ static const char *p11_token_info_flags(CK_FLAGS value)
 		{ CKF_USER_PIN_COUNT_LOW, "user PIN count low" },
 		{ CKF_USER_PIN_FINAL_TRY, "final user PIN try" },
 		{ CKF_USER_PIN_LOCKED, "user PIN locked" },
+		{ CKF_USER_PIN_TO_BE_CHANGED, "user PIN to be changed"},
+		{ CKF_SO_PIN_TO_BE_CHANGED, "SO PIN to be changed"},
 		{ 0, NULL }
 	};
 
diff --git a/src/tools/pkcs15-init.c b/src/tools/pkcs15-init.c
index 7209b65..990a90d 100644
--- a/src/tools/pkcs15-init.c
+++ b/src/tools/pkcs15-init.c
@@ -292,6 +292,7 @@ static const char *action_names[] = {
 	"verify that card is pristine",
 	"erase card",
 	"create PKCS #15 meta structure",
+	"delete object(s)",
 	"store PIN",
 	"generate key",
 	"store private key",
@@ -300,9 +301,10 @@ static const char *action_names[] = {
 	"update certificate",
 	"store data object",
 	"finalizing card",
-	"delete object(s)",
 	"change attribute(s)",
 	"check card's sanity",
+	"update 'last-update'",
+	"erase application"
 };
 
 #define MAX_CERTS		4
@@ -1200,6 +1202,10 @@ do_store_data_object(struct sc_profile *profile)
 	args.app_label = opt_application_name ? opt_application_name : "pkcs15-init";
 
 	sc_format_oid(&args.app_oid, opt_application_id);
+	if (opt_application_id && (args.app_oid.value[0] == -1))   {
+		util_error("Invalid OID \"%s\"", opt_application_id);
+		return SC_ERROR_INVALID_ARGUMENTS;
+	}
 
 	r = do_read_data_object(opt_infile, &data, &datalen);
 	if (r >= 0) {
diff --git a/src/tools/pkcs15-tool.c b/src/tools/pkcs15-tool.c
index 552ebb5..8aced16 100644
--- a/src/tools/pkcs15-tool.c
+++ b/src/tools/pkcs15-tool.c
@@ -45,7 +45,7 @@ static const char *app_name = "pkcs15-tool";
 
 static int opt_wait = 0;
 static int opt_no_cache = 0;
-static char * opt_auth_id;
+static char * opt_auth_id = NULL;
 static char * opt_reader = NULL;
 static char * opt_cert = NULL;
 static char * opt_data = NULL;
@@ -81,7 +81,6 @@ enum {
 #define NELEMENTS(x)	(sizeof(x)/sizeof((x)[0]))
 
 static int	authenticate(sc_pkcs15_object_t *obj);
-static int	pubkey_pem_encode(sc_pkcs15_pubkey_t *, sc_pkcs15_der_t *, sc_pkcs15_der_t *);
 
 static const struct option options[] = {
 	{ "learn-card",		no_argument, NULL,		'L' },
@@ -207,17 +206,16 @@ static void print_common_flags(const struct sc_pkcs15_object *obj)
 	printf("\tObject Flags   : [0x%X]", obj->flags);
 	for (i = 0; i < NELEMENTS(common_flags); i++) {
 		if (obj->flags & (1 << i)) {
- 			printf(", %s", common_flags[i]);
+			printf(", %s", common_flags[i]);
 		}
- 	}
- 	printf("\n");
+	}
+	printf("\n");
 }
 
 static void print_cert_info(const struct sc_pkcs15_object *obj)
 {
 	struct sc_pkcs15_cert_info *cert_info = (struct sc_pkcs15_cert_info *) obj->data;
 	struct sc_pkcs15_cert *cert_parsed = NULL;
-	char guid[39];
 	int rv;
 
 	printf("X.509 Certificate [%s]\n", obj->label);
@@ -226,10 +224,6 @@ static void print_cert_info(const struct sc_pkcs15_object *obj)
 	printf("\tPath           : %s\n", sc_print_path(&cert_info->path));
 	printf("\tID             : %s\n", sc_pkcs15_print_id(&cert_info->id));
 
-	rv = sc_pkcs15_get_guid(p15card, obj, 0, guid, sizeof(guid));
-	if (!rv)
-		printf("\tGUID           : %s\n", guid);
-
 	print_access_rules(obj->access_rules, SC_PKCS15_MAX_ACCESS_RULES);
 
         rv = sc_pkcs15_read_certificate(p15card, cert_info, &cert_parsed);
@@ -411,7 +405,7 @@ static int read_data_object(void)
 
 	for (i = 0; i < count; i++) {
 		struct sc_pkcs15_data_info *cinfo = (struct sc_pkcs15_data_info *) objs[i]->data;
-		struct sc_pkcs15_data *data_object;
+		struct sc_pkcs15_data *data_object = NULL;
 
 		if (!sc_format_oid(&oid, opt_data))   {
 			if (!sc_compare_oid(&oid, &cinfo->app_oid))
@@ -507,7 +501,8 @@ static void print_prkey_info(const struct sc_pkcs15_object *obj)
 		"neverExtract", "local"
 	};
 	const unsigned int af_count = NELEMENTS(access_flags);
-	char guid[39];
+	unsigned char guid[40];
+	size_t guid_len;
 
 	printf("Private %s Key [%s]\n", types[7 & obj->type], obj->label);
 	print_common_flags(obj);
@@ -538,9 +533,21 @@ static void print_prkey_info(const struct sc_pkcs15_object *obj)
 		printf("\tAuth ID        : %s\n", sc_pkcs15_print_id(&obj->auth_id));
 	printf("\tID             : %s\n", sc_pkcs15_print_id(&prkey->id));
 
-	if (!sc_pkcs15_get_guid(p15card, obj, 0, guid, sizeof(guid)))
-		printf("\tGUID           : %s\n", guid);
-
+	guid_len = sizeof(guid);
+	if (!sc_pkcs15_get_object_guid(p15card, obj, 0, guid, &guid_len))   {
+		printf("\tMD:guid        : ");
+		if (strlen((char *)guid) == guid_len)   {
+			printf("%s\n", (char *)guid);
+		}
+		else  {
+			printf("0x'");
+			util_hex_dump(stdout, guid, guid_len, "");
+			printf("'\n");
+		}
+		printf("\t  :cmap flags  : 0x%X\n", prkey->cmap_record.flags);
+		printf("\t  :sign        : %i\n", prkey->cmap_record.keysize_sign);
+		printf("\t  :key-exchange: %i\n", prkey->cmap_record.keysize_keyexchange);
+	}
 }
 
 
@@ -639,6 +646,9 @@ static int read_public_key(void)
 	sc_pkcs15_cert_t *cert = NULL;
 	sc_pkcs15_der_t pem_key;
 
+	pem_key.value = NULL;
+	pem_key.len = 0;
+
 	id.len = SC_PKCS15_MAX_ID_SIZE;
 	sc_pkcs15_hex_string_to_id(opt_pubkey, &id);
 
@@ -674,7 +684,7 @@ static int read_public_key(void)
 		return 1;
 	}
 
-	r = pubkey_pem_encode(pubkey, &pubkey->data, &pem_key);
+	r = sc_pkcs15_encode_pubkey_as_spki(ctx, pubkey, &pem_key.value, &pem_key.len);
 	if (r < 0) {
 		fprintf(stderr, "Error encoding PEM key: %s\n", sc_strerror(r));
 		r = 1;
@@ -707,7 +717,8 @@ static void print_skey_info(const struct sc_pkcs15_object *obj)
 		"neverExtract", "local"
 	};
 	const unsigned int af_count = NELEMENTS(access_flags);
-	char guid[39];
+	unsigned char guid[40];
+	size_t guid_len;
 
 	printf("Secret %s Key [%s]\n", types[3 & obj->type], obj->label);
 	print_common_flags(obj);
@@ -732,8 +743,11 @@ static void print_skey_info(const struct sc_pkcs15_object *obj)
 
 	if (skey->path.len || skey->path.aid.len)
 		printf("\tPath           : %s\n", sc_print_path(&skey->path));
-	if (!sc_pkcs15_get_guid(p15card, obj, 0, guid, sizeof(guid)))
-		printf("\tGUID           : %s\n", guid);
+
+	guid_len = sizeof(guid);
+	if (!sc_pkcs15_get_object_guid(p15card, obj, 0, guid, &guid_len))   {
+		printf("\tGUID           : %s\n", (char *)guid);
+	}
 
 }
 
@@ -1325,7 +1339,7 @@ static int unblock_pin(void)
 		if (puk_obj)   {
 			struct sc_pkcs15_auth_info *puk_info = (sc_pkcs15_auth_info_t *) puk_obj->data;
 
-			if (puk_info->auth_type == SC_PKCS15_TYPE_AUTH_PIN)    {
+			if (puk_info->auth_type == SC_PKCS15_PIN_AUTH_TYPE_PIN)    {
 				/* TODO: Print PUK's label */
 				puk = get_pin("Enter PUK", puk_obj);
 				if (!pinpad_present && puk == NULL)
@@ -1342,6 +1356,7 @@ static int unblock_pin(void)
 	if (puk == NULL && verbose)
 		printf("PUK value will be prompted with pinpad.\n");
 
+	/* FIXME should OPENSSL_cleanse on pin/puk data */
 	pin = opt_pin ? opt_pin : opt_newpin;
 	while (pin == NULL) {
 		u8 *pin2;
@@ -1369,6 +1384,7 @@ static int unblock_pin(void)
 	r = sc_pkcs15_unblock_pin(p15card, pin_obj,
 			puk, puk ? strlen((char *) puk) : 0,
 			pin, pin ? strlen((char *) pin) : 0);
+	/* FIXME must free the puk somewhere */
 	if (r == SC_ERROR_PIN_CODE_INCORRECT) {
 		fprintf(stderr, "PUK code incorrect; tries left: %d\n", pinfo->tries_left);
 		return 3;
@@ -1462,6 +1478,7 @@ static int change_pin(void)
 	}
 	if (verbose)
 		printf("PIN code changed successfully.\n");
+	/* FIXME must free the pincode somewhere */
 	return 0;
 }
 
@@ -1471,6 +1488,7 @@ static int read_and_cache_file(const sc_path_t *path)
 	const sc_acl_entry_t *e;
 	u8 *buf;
 	int r;
+	size_t size;
 
 	if (verbose) {
 		printf("Reading file ");
@@ -1488,12 +1506,17 @@ static int read_and_cache_file(const sc_path_t *path)
 			printf("Skipping; ACL for read operation is not NONE.\n");
 		return -1;
 	}
-	buf = malloc(tfile->size);
+	if (tfile->size) {
+		size = 1024;
+	} else {
+		size = tfile->size;
+	}
+	buf = malloc(size);
 	if (!buf) {
 		printf("out of memory!");
 		return -1;
 	}
-	r = sc_read_binary(card, 0, buf, tfile->size, 0);
+	r = sc_read_binary(card, 0, buf, size, 0);
 	if (r < 0) {
 		fprintf(stderr, "sc_read_binary() failed: %s\n", sc_strerror(r));
 		free(buf);
@@ -1799,6 +1822,8 @@ int main(int argc, char * const argv[])
 	int action_count = 0;
 	sc_context_param_t ctx_param;
 
+	c = OPT_PUK;
+
 	while (1) {
 		c = getopt_long(argc, argv, "r:cuko:va:LR:CwDTU", options, &long_optind);
 		if (c == -1)
@@ -1826,6 +1851,7 @@ int main(int argc, char * const argv[])
 			break;
 		case OPT_VERIFY_PIN:
 			do_verify_pin = 1;
+			action_count++;
 			break;
 		case OPT_CHANGE_PIN:
 			do_change_pin = 1;
@@ -2082,26 +2108,3 @@ static const struct sc_asn1_entry	c_asn1_pem_key[] = {
 	{ "publicKey",	SC_ASN1_STRUCT, SC_ASN1_CONS | SC_ASN1_TAG_SEQUENCE, 0, NULL, NULL},
 	{ NULL, 0, 0, 0, NULL, NULL }
 };
-
-static int pubkey_pem_encode(sc_pkcs15_pubkey_t *pubkey, sc_pkcs15_der_t *key, sc_pkcs15_der_t *out)
-{
-	struct sc_asn1_entry	asn1_pem_key[2],
-				asn1_pem_key_items[3];
-	struct sc_algorithm_id algorithm;
-	size_t key_len;
-
-	memset(&algorithm, 0, sizeof(algorithm));
-	sc_init_oid(&algorithm.oid);
-	algorithm.algorithm = pubkey->algorithm;
-	if (algorithm.algorithm == SC_ALGORITHM_GOSTR3410)
-		algorithm.params = &pubkey->u.gostr3410.params;
-
-	sc_copy_asn1_entry(c_asn1_pem_key, asn1_pem_key);
-	sc_copy_asn1_entry(c_asn1_pem_key_items, asn1_pem_key_items);
-	sc_format_asn1_entry(asn1_pem_key + 0, asn1_pem_key_items, NULL, 1);
-	sc_format_asn1_entry(asn1_pem_key_items + 0, &algorithm, NULL, 1);
-	key_len = 8 * key->len;
-	sc_format_asn1_entry(asn1_pem_key_items + 1, key->value, &key_len, 1);
-
-	return sc_asn1_encode(ctx, asn1_pem_key, &out->value, &out->len);
-}
diff --git a/src/tools/sc-hsm-tool.c b/src/tools/sc-hsm-tool.c
index 4c0485a..c13df8c 100644
--- a/src/tools/sc-hsm-tool.c
+++ b/src/tools/sc-hsm-tool.c
@@ -35,7 +35,9 @@
 #include <openssl/opensslconf.h>
 #include <openssl/bio.h>
 #include <openssl/evp.h>
-
+#include <openssl/bn.h>
+#include <openssl/rand.h>
+#include <openssl/err.h>
 
 #include "libopensc/opensc.h"
 #include "libopensc/cardctl.h"
@@ -50,38 +52,44 @@ static const char magic[] = "Salted__";
 static struct sc_aid sc_hsm_aid = { { 0xE8,0x2B,0x06,0x01,0x04,0x01,0x81,0xC3,0x1F,0x02,0x01 }, 11 };
 
 static int	opt_wait = 0;
-static char *opt_reader;
+static char *opt_reader = NULL;
+static char *opt_label = NULL;
 static int	verbose = 0;
 
 // Some reasonable maximums
 #define MAX_CERT		4096
 #define MAX_PRKD		256
-#define MAX_KEY			512
+#define MAX_KEY			1024
 #define MAX_WRAPPED_KEY	(MAX_CERT + MAX_PRKD + MAX_KEY)
 
 enum {
 	OPT_SO_PIN = 0x100,
 	OPT_PIN,
 	OPT_RETRY,
-	OPT_PASSWORD
+	OPT_PASSWORD,
+	OPT_PASSWORD_SHARES_THRESHOLD,
+	OPT_PASSWORD_SHARES_TOTAL
 };
 
 static const struct option options[] = {
-	{ "initialize",			0, NULL,		'X' },
-	{ "create-dkek-share",	1, NULL,		'C' },
-	{ "import-dkek-share",	1, NULL,		'I' },
-	{ "wrap-key",			1, NULL,		'W' },
-	{ "unwrap-key",			1, NULL,		'U' },
-	{ "dkek-shares",		1, NULL,		's' },
-	{ "so-pin",				1, NULL,		OPT_SO_PIN },
-	{ "pin",				1, NULL,		OPT_PIN },
-	{ "pin-retry",			1, NULL,		OPT_RETRY },
-	{ "password",			1, NULL,		OPT_PASSWORD },
-	{ "key-reference",		1, NULL,		'i' },
-	{ "force",				0, NULL,		'f' },
-	{ "reader",				1, NULL,		'r' },
-	{ "wait",				0, NULL,		'w' },
-	{ "verbose",			0, NULL,		'v' },
+	{ "initialize",				0, NULL,		'X' },
+	{ "create-dkek-share",		1, NULL,		'C' },
+	{ "import-dkek-share",		1, NULL,		'I' },
+	{ "wrap-key",				1, NULL,		'W' },
+	{ "unwrap-key",				1, NULL,		'U' },
+	{ "dkek-shares",			1, NULL,		's' },
+	{ "so-pin",					1, NULL,		OPT_SO_PIN },
+	{ "pin",					1, NULL,		OPT_PIN },
+	{ "pin-retry",				1, NULL,		OPT_RETRY },
+	{ "password",				1, NULL,		OPT_PASSWORD },
+	{ "pwd-shares-threshold",	1, NULL,		OPT_PASSWORD_SHARES_THRESHOLD },
+	{ "pwd-shares-total",		1, NULL,		OPT_PASSWORD_SHARES_TOTAL },
+	{ "key-reference",			1, NULL,		'i' },
+	{ "label",					1, NULL,		'l' },
+	{ "force",					0, NULL,		'f' },
+	{ "reader",					1, NULL,		'r' },
+	{ "wait",					0, NULL,		'w' },
+	{ "verbose",				0, NULL,		'v' },
 	{ NULL, 0, NULL, 0 }
 };
 
@@ -96,13 +104,20 @@ static const char *option_help[] = {
 	"Define user PIN",
 	"Define user PIN retry counter",
 	"Define password for DKEK share",
+	"Define threshold for number of password shares required for reconstruction",
+	"Define number of password shares",
 	"Key reference for key wrap/unwrap",
+	"Token label for --initialize",
 	"Force replacement of key and certificate",
 	"Uses reader number <arg> [0]",
 	"Wait for a card to be inserted",
 	"Verbose operation. Use several times to enable debug output.",
 };
 
+typedef struct {
+	BIGNUM x;
+	BIGNUM y;
+} secret_share_t;
 
 static sc_context_t *ctx = NULL;
 static sc_card_t *card = NULL;
@@ -110,7 +125,316 @@ static sc_card_t *card = NULL;
 
 
 
-static void print_dkek_info(sc_cardctl_sc_hsm_dkek_t *dkekinfo) {
+/**
+ * Generate a prime number
+ *
+ * The internal CPRNG is seeded using the provided seed value.
+ * For the bit size of the generated prime the following condition holds:
+ *
+ * num_bits(prime) > max(2^r, num_bits(n + 1))
+ *
+ * r equals the number of bits needed to encode the secret.
+ *
+ * @param prime Pointer for storage of prime number
+ * @param s Secret to share
+ * @param n Maximum number of shares
+ * @param rngSeed Seed value for CPRNG
+ *
+ */
+static void generatePrime(BIGNUM *prime, const BIGNUM *s, const unsigned int n, unsigned char *rngSeed)
+{
+	int bits = 0;
+
+	// Seed the RNG
+	RAND_seed(rngSeed, sizeof(rngSeed));
+
+	// Determine minimum number of bits for prime >= max(2^r, n + 1)
+	bits = BN_num_bits_word(n + 1) > BN_num_bits(s) ? (BN_num_bits_word(n + 1)) : (BN_num_bits(s));
+
+	// Clear the prime value
+	BN_clear(prime);
+
+	// Generate random prime
+	BN_generate_prime(prime, bits, 1, NULL, NULL, NULL, NULL );
+}
+
+
+
+/**
+ * Helper method to calculate the y-value
+ * for a given x-value and a polynomial
+ *
+ * @param x X-value
+ * @param polynomial The underlying polynomial
+ * @param t Threshold (determines the degree of the polynomial)
+ * @param prime Prime for finite field arithmetic
+ * @param y Pointer for storage of calculated y-value
+ */
+static void calculatePolynomialValue(const BIGNUM x, BIGNUM **polynomial, const unsigned char t, const BIGNUM prime, BIGNUM *y)
+{
+	BIGNUM **pp;
+	BIGNUM temp;
+	BIGNUM exponent;
+
+	unsigned long exp;
+	BN_CTX *ctx;
+
+	// Create context for temporary variables of OpenSSL engine
+	ctx = BN_CTX_new();
+	BN_CTX_init(ctx);
+
+	BN_init(&temp);
+	BN_init(&exponent);
+
+	// Set y to ZERO
+	BN_zero(y);
+
+	/* Initialize the result using the secret value at position 0 of the polynomial */
+	pp = polynomial;
+	BN_copy(y, *pp);
+
+	pp++;
+
+	for (exp = 1; exp < t; exp++) {
+
+		BN_copy(&temp, &x);
+
+		BN_set_word(&exponent, exp);
+		// temp = x^exponent mod prime
+		BN_mod_exp(&temp, &x, &exponent, &prime, ctx);
+		// exponent = temp * a = a * x^exponent mod prime
+		BN_mod_mul(&exponent, &temp, *pp, &prime, ctx);
+		// add the temp value from exponent to y
+		BN_copy(&temp, y);
+		BN_mod_add(y, &temp, &exponent, &prime, ctx);
+		pp++;
+	}
+
+	BN_clear_free(&temp);
+	BN_clear_free(&exponent);
+
+	BN_CTX_free(ctx);
+}
+
+
+
+/**
+ * Create shares depending on the provided parameters
+ *
+ * @param s Secret value to share
+ * @param t Threshold needed to reconstruct the secret
+ * @param n Total number of shares
+ * @param prime Prime for finite field arithmetic
+ * @param shares Pointer for storage of calculated shares (must be big enough to hold n shares)
+ */
+static int createShares(const BIGNUM *s, const unsigned char t, const unsigned char n,	const BIGNUM prime, secret_share_t *shares)
+{
+	// Array representing the polynomial a(x) = s + a_1 * x + ... + a_n-1 * x^n-1 mod p
+	BIGNUM **polynomial = malloc(n * sizeof(BIGNUM *));
+	BIGNUM **pp;
+	unsigned long i;
+	secret_share_t *sp;
+
+	// Set the secret value as the constant part of the polynomial
+	pp = polynomial;
+	*pp = BN_new();
+	BN_init(*pp);
+	BN_copy(*pp, s);
+	pp++;
+
+	// Initialize and generate some random values for coefficients a_x in the remaining polynomial
+	for (i = 1; i < t; i++) {
+		*pp = BN_new();
+		BN_init(*pp);
+		BN_rand_range(*pp, &prime);
+		pp++;
+	}
+
+	sp = shares;
+	// Now calculate n secret shares
+	for (i = 1; i <= n; i++) {
+		BN_init(&(sp->x));
+		BN_init(&(sp->y));
+
+		BN_set_word(&(sp->x), i);
+		calculatePolynomialValue(sp->x, polynomial, t, prime, &(sp->y));
+		sp++;
+	}
+
+	// Deallocate the resource of the polynomial
+	pp = polynomial;
+	for (i = 0; i < t; i++) {
+		BN_clear_free(*pp);
+		pp++;
+	}
+
+	free(polynomial);
+
+	return 0;
+}
+
+
+
+/**
+ * Reconstruct secret using the provided shares
+ *
+ * @param shares Shares used to reconstruct secret (should contain t entries)
+ * @param t Threshold used to reconstruct the secret
+ * @param prime Prime for finite field arithmetic
+ * @param s Pointer for storage of calculated secred
+ */
+static int reconstructSecret(secret_share_t *shares, unsigned char t, const BIGNUM prime, BIGNUM *s)
+{
+	unsigned char i;
+	unsigned char j;
+
+	// Array representing the polynomial a(x) = s + a_1 * x + ... + a_n-1 * x^n-1 mod p
+	BIGNUM **bValue = malloc(t * sizeof(BIGNUM *));
+	BIGNUM **pbValue;
+	BIGNUM numerator;
+	BIGNUM denominator;
+	BIGNUM temp;
+	secret_share_t *sp_i;
+	secret_share_t *sp_j;
+	BN_CTX *ctx;
+
+	// Initialize
+	pbValue = bValue;
+	for (i = 0; i < t; i++) {
+		*pbValue = BN_new();
+		BN_init(*pbValue);
+		pbValue++;
+	}
+
+	BN_init(&numerator);
+	BN_init(&denominator);
+	BN_init(&temp);
+
+	// Create context for temporary variables of engine
+	ctx = BN_CTX_new();
+	BN_CTX_init(ctx);
+
+	pbValue = bValue;
+	sp_i = shares;
+	for (i = 0; i < t; i++) {
+
+		BN_one(&numerator);
+		BN_one(&denominator);
+
+		sp_j = shares;
+
+		for (j = 0; j < t; j++) {
+
+			if (i == j) {
+				sp_j++;
+				continue;
+			}
+
+			BN_mul(&numerator, &numerator, &(sp_j->x), ctx);
+			BN_sub(&temp, &(sp_j->x), &(sp_i->x));
+			BN_mul(&denominator, &denominator, &temp, ctx);
+
+			sp_j++;
+		}
+
+		/*
+		 * Use the modular inverse value of the denominator for the
+		 * multiplication
+		 */
+		if (BN_mod_inverse(&denominator, &denominator, &prime, ctx) == NULL ) {
+			return -1;
+		}
+
+		BN_mod_mul(*pbValue, &numerator, &denominator, &prime, ctx);
+
+		pbValue++;
+		sp_i++;
+	}
+
+	/*
+	 * Calculate the secret by multiplying all y-values with their
+	 * corresponding intermediate values
+	 */
+	pbValue = bValue;
+	sp_i = shares;
+	BN_zero(s);
+	for (i = 0; i < t; i++) {
+
+		BN_mul(&temp, &(sp_i->y), *pbValue, ctx);
+		BN_add(s, s, &temp);
+		pbValue++;
+		sp_i++;
+	}
+
+	// Perform modulo operation and copy result
+	BN_nnmod(&temp, s, &prime, ctx);
+	BN_copy(s, &temp);
+
+	BN_clear_free(&numerator);
+	BN_clear_free(&denominator);
+	BN_clear_free(&temp);
+
+	BN_CTX_free(ctx);
+
+	// Deallocate the resource of the polynomial
+	pbValue = bValue;
+	for (i = 0; i < t; i++) {
+		BN_clear_free(*pbValue);
+		pbValue++;
+	}
+
+	free(bValue);
+
+	return 0;
+}
+
+
+
+/**
+ * Helper method to free allocated resources
+ *
+ * @param shares Shares to be freed
+ * @param n Total number of shares to freed
+ */
+static int cleanUpShares(secret_share_t *shares, unsigned char n)
+{
+	int i;
+	secret_share_t *sp;
+
+	sp = shares;
+	for (i = 0; i < n; i++) {
+		BN_clear_free(&(sp->x));
+		BN_clear_free(&(sp->y));
+		sp++;
+	}
+
+	free(shares);
+
+	return 0;
+}
+
+
+
+void clearScreen()
+{
+	if (system( "clear" )) system( "cls" );
+}
+
+
+
+void waitForEnterKeyPressed()
+{
+	char c;
+
+	fflush(stdout);
+	while ((c = getchar()) != '\n' && c != EOF) {
+	}
+}
+
+
+
+static void print_dkek_info(sc_cardctl_sc_hsm_dkek_t *dkekinfo)
+{
 	printf("DKEK shares          : %d\n", dkekinfo->dkek_shares);
 	if (dkekinfo->outstanding_shares > 0) {
 		printf("DKEK import pending, %d share(s) still missing\n",dkekinfo->outstanding_shares);
@@ -169,7 +493,7 @@ static void print_info(sc_card_t *card, sc_file_t *file)
 
 
 
-static void initialize(sc_card_t *card, const char *so_pin, const char *user_pin, int retry_counter, int dkek_shares)
+static void initialize(sc_card_t *card, const char *so_pin, const char *user_pin, int retry_counter, int dkek_shares, const char *label)
 {
 	sc_cardctl_sc_hsm_init_param_t param;
 	size_t len;
@@ -239,6 +563,7 @@ static void initialize(sc_card_t *card, const char *so_pin, const char *user_pin
 	param.options[1] = 0x01;
 
 	param.dkek_shares = (char)dkek_shares;
+	param.label = (char *)label;
 
 	r = sc_card_ctl(card, SC_CARDCTL_SC_HSM_INITIALIZE, (void *)&param);
 	if (r < 0) {
@@ -248,14 +573,103 @@ static void initialize(sc_card_t *card, const char *so_pin, const char *user_pin
 
 
 
-static void import_dkek_share(sc_card_t *card, const char *inf, int iter, char *password)
+static int recreate_password_from_shares(char **pwd, int *pwdlen, int num_of_password_shares)
+{
+	int r, i;
+	BIGNUM prime;
+	BIGNUM secret;
+	BIGNUM *p;
+	char inbuf[64];
+	unsigned char bin[64];
+	size_t binlen = 0;
+	unsigned char *ip;
+	secret_share_t *shares = NULL;
+	secret_share_t *sp;
+
+	/*
+	 * Initialize prime and secret
+	 */
+	BN_init(&prime);
+	BN_init(&secret);
+
+	// Allocate data buffer for the shares
+	shares = malloc(num_of_password_shares * sizeof(secret_share_t));
+
+	printf("\nDeciphering the DKEK for import into the SmartCard-HSM requires %i key custodians", num_of_password_shares);
+	printf("\nto present their share. Only the first key custodian needs to enter the public prime.");
+	printf("\nPlease remember to present the share id as well as the share value.");
+	printf("\n\nPlease enter prime: ");
+	memset(inbuf, 0, sizeof(inbuf));
+	fgets(inbuf, sizeof(inbuf), stdin);
+	binlen = 64;
+	sc_hex_to_bin(inbuf, bin, &binlen);
+	BN_bin2bn(bin, binlen, &prime);
+
+	sp = shares;
+	for (i = 0; i < num_of_password_shares; i++) {
+		clearScreen();
+
+		printf("Press <enter> to enter share %i of %i\n\n", i + 1, num_of_password_shares);
+		waitForEnterKeyPressed();
+
+		clearScreen();
+
+		BN_init(&(sp->x));
+		BN_init(&(sp->y));
+
+		printf("Share %i of %i\n\n", i + 1, num_of_password_shares);
+
+		printf("Please enter share ID: ");
+		memset(inbuf, 0, sizeof(inbuf));
+		fgets(inbuf, sizeof(inbuf), stdin);
+		p = &(sp->x);
+		BN_hex2bn(&p, inbuf);
+
+		printf("Please enter share value: ");
+		memset(inbuf, 0, sizeof(inbuf));
+		fgets(inbuf, sizeof(inbuf), stdin);
+		binlen = 64;
+		sc_hex_to_bin(inbuf, bin, &binlen);
+		BN_bin2bn(bin, binlen, &(sp->y));
+
+		sp++;
+	}
+
+	clearScreen();
+
+	r = reconstructSecret(shares, num_of_password_shares, prime, &secret);
+
+	if (r < 0) {
+		printf("\nError during reconstruction of secret. Wrong shares?\n");
+		return r;
+	}
+
+	/*
+	 * Encode the secret value
+	 */
+	ip = (unsigned char *) inbuf;
+	*pwdlen = BN_bn2bin(&secret, ip);
+	*pwd = calloc(1, *pwdlen);
+	memcpy(*pwd, ip, *pwdlen);
+
+	cleanUpShares(shares, num_of_password_shares);
+
+	BN_clear_free(&prime);
+	BN_clear_free(&secret);
+
+	return 0;
+}
+
+
+
+static void import_dkek_share(sc_card_t *card, const char *inf, int iter, char *password, int num_of_password_shares)
 {
 	sc_cardctl_sc_hsm_dkek_t dkekinfo;
 	EVP_CIPHER_CTX ctx;
 	FILE *in = NULL;
 	u8 filebuff[64],key[EVP_MAX_KEY_LENGTH], iv[EVP_MAX_IV_LENGTH],outbuff[64];
 	char *pwd = NULL;
-	int r, outlen;
+	int r, outlen, pwdlen;
 
 	in = fopen(inf, "rb");
 
@@ -277,15 +691,26 @@ static void import_dkek_share(sc_card_t *card, const char *inf, int iter, char *
 	}
 
 	if (password == NULL) {
-		printf("Enter password to decrypt DKEK share : ");
-		util_getpass(&pwd, NULL, stdin);
-		printf("\n");
+
+		if (num_of_password_shares == -1) {
+			printf("Enter password to decrypt DKEK share : ");
+			util_getpass(&pwd, NULL, stdin);
+			pwdlen = strlen(pwd);
+			printf("\n");
+		} else {
+			r = recreate_password_from_shares(&pwd, &pwdlen, num_of_password_shares);
+			if (r < 0) {
+				return;
+			}
+		}
+
 	} else {
 		pwd = password;
+		pwdlen = strlen(password);
 	}
 
 	printf("Deciphering DKEK share, please wait...\n");
-	EVP_BytesToKey(EVP_aes_256_cbc(), EVP_md5(), filebuff + 8, (u8 *)pwd, strlen(pwd), iter, key, iv);
+	EVP_BytesToKey(EVP_aes_256_cbc(), EVP_md5(), filebuff + 8, (u8 *)pwd, pwdlen, iter, key, iv);
 	OPENSSL_cleanse(pwd, strlen(pwd));
 
 	if (password == NULL) {
@@ -316,6 +741,7 @@ static void import_dkek_share(sc_card_t *card, const char *inf, int iter, char *
 	EVP_CIPHER_CTX_cleanup(&ctx);
 
 	if (r == SC_ERROR_INS_NOT_SUPPORTED) {			// Not supported or not initialized for key shares
+		printf("Not supported by card or card not initialized for key share usage\n");
 		return;
 	}
 
@@ -329,67 +755,193 @@ static void import_dkek_share(sc_card_t *card, const char *inf, int iter, char *
 
 
 
-static void create_dkek_share(sc_card_t *card, const char *outf, int iter, char *password)
+static void ask_for_password(char **pwd, int *pwdlen)
+{
+	char *refpwd = NULL;
+
+	printf(	"\nThe DKEK share will be enciphered using a key derived from a user supplied password.\n");
+	printf(	"The security of the DKEK share relies on a well chosen and sufficiently long password.\n");
+	printf(	"The recommended length is more than 10 characters, which are mixed letters, numbers and\n");
+	printf("symbols.\n\n");
+	printf(	"Please keep the generated DKEK share file in a safe location. We also recommend to keep a\n");
+	printf(	"paper printout, in case the electronic version becomes unavailable. A printable version\n");
+	printf(	"of the file can be generated using \"openssl base64 -in <filename>\".\n");
+
+	while (1) {
+		printf("Enter password to encrypt DKEK share : ");
+		util_getpass(pwd, NULL, stdin);
+		printf("\n");
+		if (strlen(*pwd) < 6) {
+			printf("Password way to short. Please retry.\n");
+			continue;
+		}
+		printf("Please retype password to confirm : ");
+		util_getpass(&refpwd, NULL, stdin);
+		printf("\n");
+		if (strcmp(*pwd, refpwd)) {
+			printf("Passwords do not match. Please retry.\n");
+			continue;
+		}
+		*pwdlen = strlen(*pwd);
+		break;
+	}
+
+	OPENSSL_cleanse(refpwd, strlen(refpwd));
+	free(refpwd);
+}
+
+
+
+static int generate_pwd_shares(sc_card_t *card, char **pwd, int *pwdlen, int password_shares_threshold, int password_shares_total)
+{
+	int r, i;
+	BIGNUM prime;
+	BIGNUM secret;
+	unsigned char buf[64];
+	char hex[64];
+	int l;
+
+	secret_share_t *shares = NULL;
+	secret_share_t *sp;
+
+	u8 rngseed[16];
+
+	printf(	"\nThe DKEK will be enciphered using a randomly generated 64 bit password.\n");
+	printf(	"This password is split using a (%i-of-%i) threshold scheme.\n\n", password_shares_threshold, password_shares_total);
+
+	printf(	"Please keep the generated and encrypted DKEK file in a safe location. We also recommend \n");
+	printf(	"to keep a paper printout, in case the electronic version becomes unavailable. A printable version\n");
+	printf(	"of the file can be generated using \"openssl base64 -in <filename>\".\n");
+
+	printf("\n\nPress <enter> to continue");
+
+	waitForEnterKeyPressed();
+
+	*pwd = calloc(1, 8);
+	*pwdlen = 8;
+
+	r = sc_get_challenge(card, (unsigned char *)*pwd, 8);
+	if (r < 0) {
+		printf("Error generating random key failed with %s", sc_strerror(r));
+		OPENSSL_cleanse(*pwd, *pwdlen);
+		free(*pwd);
+		return r;
+	}
+	**pwd |= 0x80;
+
+	/*
+	 * Initialize prime and secret
+	 */
+	BN_init(&prime);
+	BN_init(&secret);
+
+	/*
+	 * Encode the secret value
+	 */
+	BN_bin2bn((unsigned char *)*pwd, *pwdlen, &secret);
+
+	/*
+	 * Generate seed and calculate a prime depending on the size of the secret
+	 */
+	r = sc_get_challenge(card, rngseed, 16);
+	if (r < 0) {
+		printf("Error generating random seed failed with %s", sc_strerror(r));
+		OPENSSL_cleanse(*pwd, *pwdlen);
+		free(*pwd);
+		return r;
+	}
+
+	generatePrime(&prime, &secret, password_shares_total, rngseed);
+
+	// Allocate data buffer for the generated shares
+	shares = malloc(password_shares_total * sizeof(secret_share_t));
+
+	createShares(&secret, password_shares_threshold, password_shares_total, prime, shares);
+
+	sp = shares;
+	for (i = 0; i < password_shares_total; i++) {
+		clearScreen();
+
+		printf("Press <enter> to display key share %i of %i\n\n", i + 1, password_shares_total);
+		waitForEnterKeyPressed();
+
+		clearScreen();
+
+		printf("Share %i of %i\n\n", i + 1, password_shares_total);
+
+		l = BN_bn2bin(&prime, buf);
+		sc_bin_to_hex(buf, l, hex, 64, ':');
+		printf("\nPrime       : %s\n", hex);
+
+		printf("Share ID    : %s\n", BN_bn2dec(&(sp->x)));
+		l = BN_bn2bin(&(sp->y), buf);
+		sc_bin_to_hex(buf, l, hex, 64, ':');
+		printf("Share value : %s\n", hex);
+
+		printf("\n\nPlease note ALL values above and press <enter> when finished");
+		waitForEnterKeyPressed();
+
+		sp++;
+	}
+
+	clearScreen();
+
+	cleanUpShares(shares, password_shares_total);
+
+	BN_clear_free(&prime);
+	BN_clear_free(&secret);
+
+	return 0;
+}
+
+
+
+static void create_dkek_share(sc_card_t *card, const char *outf, int iter, char *password, int password_shares_threshold, int password_shares_total)
 {
 	EVP_CIPHER_CTX ctx;
 	FILE *out = NULL;
-	u8 filebuff[64],key[EVP_MAX_KEY_LENGTH], iv[EVP_MAX_IV_LENGTH],outbuff[64];
+	u8 filebuff[64], key[EVP_MAX_KEY_LENGTH], iv[EVP_MAX_IV_LENGTH];
 	u8 dkek_share[32];
 	char *pwd = NULL;
-	int r, outlen;
+	int r = 0, outlen, pwdlen = 0;
 
 	if (password == NULL) {
-		char *refpwd = NULL;
-
-		printf("\nThe DKEK share will be enciphered using a key derived from a user supplied password.\n");
-		printf("The security of the DKEK share relies on a well chosen and sufficiently long password.\n");
-		printf("The recommended length is more than 10 characters, which are mixed letters, numbers and\n");
-		printf("symbols.\n\n");
-		printf("Please keep the generated DKEK share file in a save location. We also recommend to keep a\n");
-		printf("paper printout, in case the electronic version becomes unavailable. A printable version\n");
-		printf("of the file can be generated using \"openssl base64 -in <filename>\".\n");
-		while(1) {
-			printf("Enter password to encrypt DKEK share : ");
-			util_getpass(&pwd, NULL, stdin);
-			printf("\n");
-			if (strlen(pwd) < 6) {
-				printf("Password way to short. Please retry.\n");
-				continue;
-			}
-			printf("Please retype password to confirm : ");
-			util_getpass(&refpwd, NULL, stdin);
-			printf("\n");
-			if (strcmp(pwd, refpwd)) {
-				printf("Passwords do not match. Please retry.\n");
-				continue;
-			}
-			break;
+
+		if (password_shares_threshold == -1) {
+			ask_for_password(&pwd, &pwdlen);
+		} else { // create password using threshold scheme
+			r = generate_pwd_shares(card, &pwd, &pwdlen, password_shares_threshold, password_shares_total);
 		}
-		OPENSSL_cleanse(refpwd, strlen(refpwd));
-		free(refpwd);
+
 	} else {
 		pwd = password;
+		pwdlen = strlen(password);
+	}
+
+	if (r < 0) {
+		printf("Creating DKEK share failed");
+		return;
 	}
 
 	memcpy(filebuff, magic, sizeof(magic) - 1);
 
 	r = sc_get_challenge(card, filebuff + 8, 8);
 	if (r < 0) {
-		printf("Error generating random number failed with ", sc_strerror(r));
+		printf("Error generating random number failed with %s", sc_strerror(r));
 		return;
 	}
 
 	printf("Enciphering DKEK share, please wait...\n");
-	EVP_BytesToKey(EVP_aes_256_cbc(), EVP_md5(), filebuff + 8, (u8 *)pwd, strlen(pwd), iter, key, iv);
+	EVP_BytesToKey(EVP_aes_256_cbc(), EVP_md5(), filebuff + 8, (u8 *)pwd, pwdlen, iter, key, iv);
 
 	if (password == NULL) {
-		OPENSSL_cleanse(pwd, strlen(pwd));
+		OPENSSL_cleanse(pwd, pwdlen);
 		free(pwd);
 	}
 
 	r = sc_get_challenge(card, dkek_share, sizeof(dkek_share));
 	if (r < 0) {
-		printf("Error generating random number failed with ", sc_strerror(r));
+		printf("Error generating random number failed with %s", sc_strerror(r));
 		return;
 	}
 
@@ -442,16 +994,60 @@ static size_t determineLength(const u8 *tlv, size_t buflen)
 
 
 
+/**
+ * Encapsulate data object as TLV object
+ *
+ * @param tag the one byte tag
+ * @param indata the value field
+ * @param inlen the length of the value field
+ * @param outdata pointer to the allocated memory buffer
+ * @param outlen the size of the TLV object
+ */
+static int wrap_with_tag(u8 tag, u8 *indata, size_t inlen, u8 **outdata, size_t *outlen)
+{
+	int nlc = 0;
+	u8 *ptr;
+
+	if (inlen > 127) {
+		do	{
+			nlc++;
+		} while (inlen >= (unsigned)(1 << (nlc << 3)));
+	}
+
+	*outlen = 2 + nlc + inlen;
+	ptr = malloc(*outlen);
+	if (ptr == NULL) {
+		return SC_ERROR_OUT_OF_MEMORY;
+	}
+
+	*outdata = ptr;
+	*ptr++ = tag;
+
+	if (nlc) {
+		*ptr++ = 0x80 | nlc;
+		while (nlc--) {
+			*ptr++ = (inlen >> (nlc << 3)) & 0xFF;
+		}
+	} else {
+		*ptr++ = inlen & 0x7F;
+	}
+
+	memcpy(ptr, indata, inlen);
+	return SC_SUCCESS;
+}
+
+
+
 static void wrap_key(sc_card_t *card, u8 keyid, const char *outf, const char *pin)
 {
 	sc_cardctl_sc_hsm_wrapped_key_t wrapped_key;
 	struct sc_pin_cmd_data data;
-	sc_file_t *file = NULL;
 	sc_path_t path;
 	FILE *out = NULL;
 	u8 fid[2];
 	u8 ef_prkd[MAX_PRKD];
 	u8 ef_cert[MAX_CERT];
+	u8 wrapped_key_buff[MAX_KEY];
 	u8 keyblob[MAX_WRAPPED_KEY];
 	u8 *key;
 	u8 *ptr;
@@ -464,14 +1060,14 @@ static void wrap_key(sc_card_t *card, u8 keyid, const char *outf, const char *pi
 		util_getpass(&lpin, NULL, stdin);
 		printf("\n");
 	} else {
-		lpin = (u8 *)pin;
+		lpin = (char *)pin;
 	}
 
 	memset(&data, 0, sizeof(data));
 	data.cmd = SC_PIN_CMD_VERIFY;
 	data.pin_type = SC_AC_CHV;
 	data.pin_reference = ID_USER_PIN;
-	data.pin1.data = lpin;
+	data.pin1.data = (unsigned char *)lpin;
 	data.pin1.len = strlen(lpin);
 
 	r = sc_pin_cmd(card, &data, NULL);
@@ -486,6 +1082,8 @@ static void wrap_key(sc_card_t *card, u8 keyid, const char *outf, const char *pi
 	}
 
 	wrapped_key.key_id = keyid;
+	wrapped_key.wrapped_key = wrapped_key_buff;
+	wrapped_key.wrapped_key_length = sizeof(wrapped_key_buff);
 
 	r = sc_card_ctl(card, SC_CARDCTL_SC_HSM_WRAP_KEY, (void *)&wrapped_key);
 
@@ -537,13 +1135,12 @@ static void wrap_key(sc_card_t *card, u8 keyid, const char *outf, const char *pi
 		}
 	}
 
-
 	ptr = keyblob;
 
 	// Encode key in octet string object
-	sc_asn1_write_element(card->ctx, SC_ASN1_OCTET_STRING,
-			wrapped_key.wrapped_key, wrapped_key.wrapped_key_length,
-			&key, &key_len);
+	key_len = 0;
+	wrap_with_tag(0x04, wrapped_key.wrapped_key, wrapped_key.wrapped_key_length,
+						&key, &key_len);
 
 	memcpy(ptr, key, key_len);
 	ptr += key_len;
@@ -561,10 +1158,9 @@ static void wrap_key(sc_card_t *card, u8 keyid, const char *outf, const char *pi
 		ptr += ef_cert_len;
 	}
 
-	// Encode key in octet string object
-	sc_asn1_write_element(card->ctx, SC_ASN1_SEQUENCE|SC_ASN1_CONS,
-			keyblob, ptr - keyblob,
-			&key, &key_len);
+	// Encode key, key decription and certificate object in sequence
+	key_len = 0;
+	wrap_with_tag(0x30, keyblob, ptr - keyblob, &key, &key_len);
 
 	out = fopen(outf, "wb");
 
@@ -589,7 +1185,6 @@ static void wrap_key(sc_card_t *card, u8 keyid, const char *outf, const char *pi
 static int update_ef(sc_card_t *card, u8 prefix, u8 id, int erase, const u8 *buf, size_t buflen)
 {
 	sc_file_t *file = NULL;
-	sc_file_t newfile;
 	sc_path_t path;
 	u8 fid[2];
 	int r;
@@ -722,14 +1317,14 @@ static void unwrap_key(sc_card_t *card, u8 keyid, const char *inf, const char *p
 		util_getpass(&lpin, NULL, stdin);
 		printf("\n");
 	} else {
-		lpin = (u8 *)pin;
+		lpin = (char *)pin;
 	}
 
 	memset(&data, 0, sizeof(data));
 	data.cmd = SC_PIN_CMD_VERIFY;
 	data.pin_type = SC_AC_CHV;
 	data.pin_reference = ID_USER_PIN;
-	data.pin1.data = lpin;
+	data.pin1.data = (u8 *)lpin;
 	data.pin1.len = strlen(lpin);
 
 	r = sc_pin_cmd(card, &data, NULL);
@@ -805,6 +1400,8 @@ int main(int argc, char * const argv[])
 	int opt_retry_counter = 3;
 	int opt_dkek_shares = -1;
 	int opt_key_reference = -1;
+	int opt_password_shares_threshold = -1;
+	int opt_password_shares_total = -1;
 	int opt_force = 0;
 	int opt_iter = 10000000;
 	sc_context_param_t ctx_param;
@@ -855,6 +1452,12 @@ int main(int argc, char * const argv[])
 		case OPT_RETRY:
 			opt_retry_counter = atol(optarg);
 			break;
+		case OPT_PASSWORD_SHARES_THRESHOLD:
+			opt_password_shares_threshold = atol(optarg);
+			break;
+		case OPT_PASSWORD_SHARES_TOTAL:
+			opt_password_shares_total = atol(optarg);
+			break;
 		case 's':
 			opt_dkek_shares = atol(optarg);
 			break;
@@ -867,6 +1470,9 @@ int main(int argc, char * const argv[])
 		case 'r':
 			opt_reader = optarg;
 			break;
+		case 'l':
+			opt_label = optarg;
+			break;
 		case 'v':
 			verbose++;
 			break;
@@ -896,22 +1502,31 @@ int main(int argc, char * const argv[])
 	}
 
 	err = util_connect_card(ctx, &card, opt_reader, opt_wait, verbose);
-	if (err)
+	if (err != SC_SUCCESS) {
+		if (err < 0) {
+			fprintf(stderr, "Failed to connect to card: %s\n", sc_strerror(err));
+		}
 		goto end;
+	}
 
 	sc_path_set(&path, SC_PATH_TYPE_DF_NAME, sc_hsm_aid.value, sc_hsm_aid.len, 0, 0);
 	r = sc_select_file(card, &path, &file);
 
+	if (r != SC_SUCCESS) {
+		fprintf(stderr, "Failed to select application: %s\n", sc_strerror(r));
+		goto end;
+	}
+
 	if (do_initialize) {
-		initialize(card, opt_so_pin, opt_pin, opt_retry_counter, opt_dkek_shares);
+		initialize(card, opt_so_pin, opt_pin, opt_retry_counter, opt_dkek_shares, opt_label);
 	}
 
 	if (do_create_dkek_share) {
-		create_dkek_share(card, opt_filename, opt_iter, opt_password);
+		create_dkek_share(card, opt_filename, opt_iter, opt_password, opt_password_shares_threshold, opt_password_shares_total);
 	}
 
 	if (do_import_dkek_share) {
-		import_dkek_share(card, opt_filename, opt_iter, opt_password);
+		import_dkek_share(card, opt_filename, opt_iter, opt_password, opt_password_shares_total);
 	}
 
 	if (do_wrap_key) {
diff --git a/src/tools/util.c b/src/tools/util.c
index 0ad1fd9..b8b83b0 100644
--- a/src/tools/util.c
+++ b/src/tools/util.c
@@ -275,7 +275,7 @@ void util_print_usage_and_die(const char *app_name, const struct option options[
 
 const char * util_acl_to_str(const sc_acl_entry_t *e)
 {
-	static char line[80], buf[10];
+	static char line[80], buf[20];
 	unsigned int acl;
 
 	if (e == NULL)
@@ -307,6 +307,21 @@ const char * util_acl_to_str(const sc_acl_entry_t *e)
 			if (e->key_ref != SC_AC_KEY_REF_NONE)
 				sprintf(buf + 4, "%d", e->key_ref);
 			break;
+		case SC_AC_SEN:
+			strcpy(buf, "Sec.Env. ");
+			if (e->key_ref != SC_AC_KEY_REF_NONE)
+				sprintf(buf + 3, "#%d", e->key_ref);
+			break;
+		case SC_AC_SCB:
+			strcpy(buf, "Sec.ControlByte ");
+			if (e->key_ref != SC_AC_KEY_REF_NONE)
+				sprintf(buf + 3, "Ox%X", e->key_ref);
+			break;
+		case SC_AC_IDA:
+			strcpy(buf, "PKCS#15 AuthID ");
+			if (e->key_ref != SC_AC_KEY_REF_NONE)
+				sprintf(buf + 3, "#%d", e->key_ref);
+			break;
 		default:
 			strcpy(buf, "????");
 			break;
diff --git a/src/tools/versioninfo-tools.rc.in b/src/tools/versioninfo-tools.rc.in
new file mode 100644
index 0000000..444b1a2
--- /dev/null
+++ b/src/tools/versioninfo-tools.rc.in
@@ -0,0 +1,37 @@
+#include <winresrc.h>
+
+VS_VERSION_INFO VERSIONINFO
+	FILEVERSION @OPENSC_VERSION_MAJOR@, at OPENSC_VERSION_MINOR@, at OPENSC_VERSION_FIX@, at OPENSC_VERSION_REVISION@
+	PRODUCTVERSION @OPENSC_VERSION_MAJOR@, at OPENSC_VERSION_MINOR@, at OPENSC_VERSION_FIX@, at OPENSC_VERSION_REVISION@
+	FILEFLAGSMASK 0x3fL
+#ifdef _DEBUG
+	FILEFLAGS 0x21L
+#else
+	FILEFLAGS 0x20L
+#endif
+	FILEOS 0x40004L
+	FILETYPE 0x1L
+	FILESUBTYPE 0x0L
+BEGIN
+	BLOCK "StringFileInfo"
+	BEGIN
+		BLOCK "040904b0"
+		BEGIN
+			VALUE "Comments", "@OPENSC_VS_FF_COMMENTS@"
+			VALUE "CompanyName", "@OPENSC_VS_FF_COMPANY_NAME@"
+			VALUE "FileVersion", "@OPENSC_VERSION_MAJOR at .@OPENSC_VERSION_MINOR at .@OPENSC_VERSION_FIX at .@OPENSC_VERSION_REVISION@"
+			VALUE "InternalName", "@PACKAGE_NAME@"
+			VALUE "LegalCopyright", "@OPENSC_VS_FF_LEGAL_COPYRIGHT@"
+			VALUE "LegalTrademarks", ""
+			VALUE "PrivateBuild", ""
+			VALUE "ProductName", "@OPENSC_VS_FF_PRODUCT_NAME@"
+			VALUE "ProductVersion", "@OPENSC_VERSION_MAJOR@, at OPENSC_VERSION_MINOR@, at OPENSC_VERSION_FIX@, at OPENSC_VERSION_REVISION@"
+			VALUE "SpecialBuild", ""
+			VALUE "FileDescription", "OpenSC command line tool"
+		END
+	END
+	BLOCK "VarFileInfo"
+	BEGIN
+		VALUE "Translation", 0x409, 1200
+	END
+END
diff --git a/svnignore b/svnignore
deleted file mode 100644
index 36a8f65..0000000
--- a/svnignore
+++ /dev/null
@@ -1,79 +0,0 @@
-Makefile
-Makefile.in
-core
-archive
-acinclude.m4
-aclocal.m4
-autom4te.cache
-compile
-confdefs.h
-config.*
-configure
-conftest
-conftest.c
-depcomp
-install-sh
-libtool
-libtool.m4
-lt*.m4
-ltmain.sh
-missing
-mkinstalldirs
-so_locations
-stamp-h*
-
-.deps
-.libs
-.#*#
-.*.bak
-.*.orig
-.*.rej
-.*~
-#*#
-*.bak
-*.d
-*.def
-*.dll
-*.exe
-*.la
-*.lib
-*.lo
-*.orig
-*.pdb
-*.rej
-*.u
-*.rc
-*.pc
-*~
-*.gz
-*.bz2
-*.[0-9]
-*.html
-*.gif
-*.css
-*.out
-*.tmp
-
-ChangeLog
-opensc.conf
-xsl-stylesheets
-opensc-config
-test-conf
-pkcs15-tool
-pkcs15-crypt
-pkcs15-init
-piv-tool
-eidenv
-opensc-explorer
-opensc-tool
-rutoken-tool
-cardos-info
-cryptoflex-tool
-netkey-tool
-pkcs11-tool
-pintest
-p15dump
-prngtest
-base64
-lottery
-
diff --git a/version.m4 b/version.m4
new file mode 100644
index 0000000..a7e53d6
--- /dev/null
+++ b/version.m4
@@ -0,0 +1,12 @@
+dnl define the OpenSC version
+define([PRODUCT_NAME], [OpenSC])
+define([PRODUCT_TARNAME], [opensc])
+define([PRODUCT_BUGREPORT], [opensc-devel at lists.sourceforge.net])
+define([PACKAGE_SUFFIX], [])
+define([PACKAGE_VERSION_REVISION], [0])
+
+define([VS_FF_LEGAL_COPYRIGHT], [OpenSC Project])
+define([VS_FF_LEGAL_COMPANY_NAME], [OpenSC Project])
+define([VS_FF_COMMENTS], [Provided under the terms of the GNU Lesser General Public License (LGPLv2.1+).])
+define([VS_FF_PRODUCT_NAME], [OpenSC smartcard framework])
+
diff --git a/win32/Make.rules.mak b/win32/Make.rules.mak
index 73f252d..316988c 100644
--- a/win32/Make.rules.mak
+++ b/win32/Make.rules.mak
@@ -95,4 +95,4 @@ CANDLEFLAGS = -dPlatform=x86
 	rc /l 0x0409 $<
 
 clean::
-	del /Q *.obj *.dll *.exe *.pdb *.lib *.def *.manifest
+	del /Q *.obj *.dll *.exe *.pdb *.lib *.def *.manifest *.res
diff --git a/win32/Makefile.in b/win32/Makefile.in
deleted file mode 100644
index 6595c00..0000000
--- a/win32/Makefile.in
+++ /dev/null
@@ -1,536 +0,0 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
- at SET_MAKE@
-
-
-VPATH = @srcdir@
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-subdir = win32
-DIST_COMMON = $(dist_noinst_HEADERS) $(srcdir)/Makefile.am \
-	$(srcdir)/Makefile.in $(srcdir)/OpenSC.iss.in \
-	$(srcdir)/OpenSC.wxs.in $(srcdir)/versioninfo.rc.in \
-	$(srcdir)/winconfig.h.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_pthread.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES = versioninfo.rc winconfig.h OpenSC.iss OpenSC.wxs
-CONFIG_CLEAN_VPATH_FILES =
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
-  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
-  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
-  for p in $$list; do echo "$$p $$p"; done | \
-  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
-  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
-    if (++n[$$2] == $(am__install_max)) \
-      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
-    END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
-  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
-  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__installdirs = "$(DESTDIR)$(sbindir)"
-SCRIPTS = $(sbin_SCRIPTS)
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo "  GEN   " $@;
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
-am__v_at_0 = @
-SOURCES =
-DIST_SOURCES =
-HEADERS = $(dist_noinst_HEADERS)
-ETAGS = etags
-CTAGS = ctags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AR = @AR@
-AS = @AS@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEBUG_FILE = @DEBUG_FILE@
-DEFAULT_PCSC_PROVIDER = @DEFAULT_PCSC_PROVIDER@
-DEFAULT_SM_MODULE = @DEFAULT_SM_MODULE@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DLLTOOL = @DLLTOOL@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-FGREP = @FGREP@
-GIT = @GIT@
-GREP = @GREP@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBOBJS = @LIBOBJS@
-LIBRARY_BITNESS = @LIBRARY_BITNESS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-NM = @NM@
-NMEDIT = @NMEDIT@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OPENCT_CFLAGS = @OPENCT_CFLAGS@
-OPENCT_LIBS = @OPENCT_LIBS@
-OPENSC_LT_AGE = @OPENSC_LT_AGE@
-OPENSC_LT_CURRENT = @OPENSC_LT_CURRENT@
-OPENSC_LT_OLDEST = @OPENSC_LT_OLDEST@
-OPENSC_LT_REVISION = @OPENSC_LT_REVISION@
-OPENSC_VERSION_FIX = @OPENSC_VERSION_FIX@
-OPENSC_VERSION_MAJOR = @OPENSC_VERSION_MAJOR@
-OPENSC_VERSION_MINOR = @OPENSC_VERSION_MINOR@
-OPENSSL_CFLAGS = @OPENSSL_CFLAGS@
-OPENSSL_LIBS = @OPENSSL_LIBS@
-OPTIONAL_OPENCT_CFLAGS = @OPTIONAL_OPENCT_CFLAGS@
-OPTIONAL_OPENCT_LIBS = @OPTIONAL_OPENCT_LIBS@
-OPTIONAL_OPENSSL_CFLAGS = @OPTIONAL_OPENSSL_CFLAGS@
-OPTIONAL_OPENSSL_LIBS = @OPTIONAL_OPENSSL_LIBS@
-OPTIONAL_PCSC_CFLAGS = @OPTIONAL_PCSC_CFLAGS@
-OPTIONAL_READLINE_CFLAGS = @OPTIONAL_READLINE_CFLAGS@
-OPTIONAL_READLINE_LIBS = @OPTIONAL_READLINE_LIBS@
-OPTIONAL_ZLIB_CFLAGS = @OPTIONAL_ZLIB_CFLAGS@
-OPTIONAL_ZLIB_LIBS = @OPTIONAL_ZLIB_LIBS@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PCSC_CFLAGS = @PCSC_CFLAGS@
-PCSC_LIBS = @PCSC_LIBS@
-PKG_CONFIG = @PKG_CONFIG@
-PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
-PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
-PTHREAD_CC = @PTHREAD_CC@
-PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
-PTHREAD_LIBS = @PTHREAD_LIBS@
-RANLIB = @RANLIB@
-RC = @RC@
-READLINE_CFLAGS = @READLINE_CFLAGS@
-READLINE_LIBS = @READLINE_LIBS@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-WIN_LIBPREFIX = @WIN_LIBPREFIX@
-XSLTPROC = @XSLTPROC@
-ZLIB_CFLAGS = @ZLIB_CFLAGS@
-ZLIB_LIBS = @ZLIB_LIBS@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-ax_pthread_config = @ax_pthread_config@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-git = @git@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-pkcs11dir = @pkcs11dir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-xslstylesheetsdir = @xslstylesheetsdir@
-MAINTAINERCLEANFILES = $(srcdir)/Makefile.in $(srcdir)/versioninfo.rc $(srcdir)/winconfig.h \
-		$(srcdir)/OpenSC.iss $(srcdir)/OpenSC.wxs $(srcdir)/OpenSC.ico $(srcdir)/license.rtf
-
-EXTRA_DIST = ltrc.inc Makefile.mak Make.rules.mak opensc-install.bat \
-		versioninfo.rc.in winconfig.h.in OpenSC.iss.in OpenSC.wxs.in
-
-dist_noinst_HEADERS = versioninfo.rc winconfig.h OpenSC.iss OpenSC.wxs license.rtf OpenSC.ico
- at WIN32_TRUE@sbin_SCRIPTS = opensc-install.bat
-all: all-am
-
-.SUFFIXES:
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
-	@for dep in $?; do \
-	  case '$(am__configure_deps)' in \
-	    *$$dep*) \
-	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
-	        && { if test -f $@; then exit 0; else break; fi; }; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign win32/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --foreign win32/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-	@case '$?' in \
-	  *config.status*) \
-	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-	esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure:  $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-versioninfo.rc: $(top_builddir)/config.status $(srcdir)/versioninfo.rc.in
-	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
-winconfig.h: $(top_builddir)/config.status $(srcdir)/winconfig.h.in
-	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
-OpenSC.iss: $(top_builddir)/config.status $(srcdir)/OpenSC.iss.in
-	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
-OpenSC.wxs: $(top_builddir)/config.status $(srcdir)/OpenSC.wxs.in
-	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
-install-sbinSCRIPTS: $(sbin_SCRIPTS)
-	@$(NORMAL_INSTALL)
-	test -z "$(sbindir)" || $(MKDIR_P) "$(DESTDIR)$(sbindir)"
-	@list='$(sbin_SCRIPTS)'; test -n "$(sbindir)" || list=; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \
-	done | \
-	sed -e 'p;s,.*/,,;n' \
-	    -e 'h;s|.*|.|' \
-	    -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \
-	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \
-	  { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
-	    if ($$2 == $$4) { files[d] = files[d] " " $$1; \
-	      if (++n[d] == $(am__install_max)) { \
-		print "f", d, files[d]; n[d] = 0; files[d] = "" } } \
-	    else { print "f", d "/" $$4, $$1 } } \
-	  END { for (d in files) print "f", d, files[d] }' | \
-	while read type dir files; do \
-	     if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
-	     test -z "$$files" || { \
-	       echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(sbindir)$$dir'"; \
-	       $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(sbindir)$$dir" || exit $$?; \
-	     } \
-	; done
-
-uninstall-sbinSCRIPTS:
-	@$(NORMAL_UNINSTALL)
-	@list='$(sbin_SCRIPTS)'; test -n "$(sbindir)" || exit 0; \
-	files=`for p in $$list; do echo "$$p"; done | \
-	       sed -e 's,.*/,,;$(transform)'`; \
-	test -n "$$list" || exit 0; \
-	echo " ( cd '$(DESTDIR)$(sbindir)' && rm -f" $$files ")"; \
-	cd "$(DESTDIR)$(sbindir)" && rm -f $$files
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	set x; \
-	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	shift; \
-	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
-	  test -n "$$unique" || unique=$$empty_fix; \
-	  if test $$# -gt 0; then \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      "$$@" $$unique; \
-	  else \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      $$unique; \
-	  fi; \
-	fi
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	test -z "$(CTAGS_ARGS)$$unique" \
-	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$unique
-
-GTAGS:
-	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && $(am__cd) $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) "$$here"
-
-distclean-tags:
-	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d "$(distdir)/$$file"; then \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-	  else \
-	    test -f "$(distdir)/$$file" \
-	    || cp -p $$d/$$file "$(distdir)/$$file" \
-	    || exit 1; \
-	  fi; \
-	done
-check-am: all-am
-check: check-am
-all-am: Makefile $(SCRIPTS) $(HEADERS)
-installdirs:
-	for dir in "$(DESTDIR)$(sbindir)"; do \
-	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
-	done
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
-	@echo "This command is intended for maintainers to use"
-	@echo "it deletes files that may require special tools to rebuild."
-	-test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
-clean: clean-am
-
-clean-am: clean-generic clean-libtool mostlyclean-am
-
-distclean: distclean-am
-	-rm -f Makefile
-distclean-am: clean-am distclean-generic distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am:
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am: install-sbinSCRIPTS
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
-	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-generic mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-sbinSCRIPTS
-
-.MAKE: install-am install-strip
-
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
-	clean-libtool ctags distclean distclean-generic \
-	distclean-libtool distclean-tags distdir dvi dvi-am html \
-	html-am info info-am install install-am install-data \
-	install-data-am install-dvi install-dvi-am install-exec \
-	install-exec-am install-html install-html-am install-info \
-	install-info-am install-man install-pdf install-pdf-am \
-	install-ps install-ps-am install-sbinSCRIPTS install-strip \
-	installcheck installcheck-am installdirs maintainer-clean \
-	maintainer-clean-generic mostlyclean mostlyclean-generic \
-	mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
-	uninstall-am uninstall-sbinSCRIPTS
-
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/win32/OpenSC.iss b/win32/OpenSC.iss
deleted file mode 100644
index 61b828f..0000000
--- a/win32/OpenSC.iss
+++ /dev/null
@@ -1,59 +0,0 @@
-[Setup]
-AppName=OpenSC
-AppVerName=OpenSC 0.13.0
-AppPublisher=OpenSC Project
-AppPublisherURL=http://www.opensc-project.org/
-AppSupportURL=http://www.opensc-project.org/opensc/
-AppUpdatesURL=http://www.opensc-project.org/opensc/
-DefaultDirName={pf}\OpenSC Project\OpenSC
-OutputBaseFilename=OpenSC-0.13.0
-Compression=lzma/normal
-SolidCompression=true
-MinVersion=0,5.0.2195
-VersionInfoCompany=OpenSC Project
-AppCopyright=LGPL
-PrivilegesRequired=poweruser
-DisableDirPage=false
-DisableProgramGroupPage=false
-ShowLanguageDialog=auto
-AppID={{BDD73EB0-0485-4B79-93EC-CF2EAEFF3BAB}
-UsePreviousAppDir=true
-AppendDefaultDirName=false
-AppVersion=0.13.0
-VersionInfoVersion=0.13.0
-VersionInfoDescription=OpenSC tools and libraries
-VersionInfoTextVersion=v0.13.0
-DisableReadyPage=true
-InternalCompressLevel=max
-VersionInfoCopyright=2010 OpenSC Project
-DisableStartupPrompt=true
-AlwaysShowComponentsList=false
-ShowComponentSizes=false
-FlatComponentsList=false
-WizardImageBackColor=clWhite
-DisableFinishedPage=false
-InfoBeforeFile=README.rtf
-VersionInfoProductName=OpenSC
-VersionInfoProductVersion=0.13.0
-AllowRootDirectory=true
-UninstallDisplayName=OpenSC
-DefaultGroupName=OpenSC
-
-[Tasks]
-
-[Files]
-Source: opensc\*.profile; DestDir: {app}\profiles
-Source: opensc\*.dll; DestDir: {sys}; Flags: overwritereadonly replacesameversion ignoreversion uninsnosharedfileprompt restartreplace
-Source: opensc\*.exe; DestDir: {app}; Flags: overwritereadonly replacesameversion ignoreversion
-Source: engine_pkcs11\*.dll; DestDir: {sys}; Components: OpenSSL_engine; Flags: overwritereadonly replacesameversion ignoreversion
-Source: opensc.conf; DestDir: {app};
-;Source: www.opensc-project.org.url; DestDir: {app}
-[Icons]
-;Name: {group}\OpenSC Project website; Filename: {app}\www.opensc-project.org.url; Comment: Go to OpenSC Project website; Components:
-
-[Registry]
-Root: HKLM; Subkey: Software\OpenSC Project\OpenSC; ValueType: string; ValueName: ConfigFile; ValueData: {app}\opensc.conf; Flags: uninsdeletekey; Components:
-Root: HKLM; Subkey: Software\OpenSC Project\OpenSC; ValueType: string; ValueName: ProfileDir; ValueData: {app}\profiles; Flags: uninsdeletekey; Components:
-[Components]
-Name: OpenSC; Description: OpenSC core library; Flags: fixed; Types: custom compact full
-Name: OpenSSL_engine; Description: OpenSSL engine for using PKCS11 modules; Types: custom full
diff --git a/win32/OpenSC.wxs b/win32/OpenSC.wxs
deleted file mode 100644
index ef7d765..0000000
--- a/win32/OpenSC.wxs
+++ /dev/null
@@ -1,249 +0,0 @@
-<?xml version="1.0" encoding="windows-1252"?>
-<?if $(var.Platform) = x64 ?>
-  <?define ProductName = "OpenSC (64bit)" ?>
-  <?define Win64YesNo="yes" ?>
-  <?define PlatformProgramFilesFolder = "ProgramFiles64Folder" ?>
-  <?define PlatformSystemFolder = "System64Folder" ?>
-  <?define PlatformUpgradeCode = "{9A449570-69A2-11E0-9CC6-955B4824019B}" ?>
-<?else ?>
-  <?define ProductName = "OpenSC" ?>
-  <?define Win64YesNo="no" ?>
-  <?define PlatformProgramFilesFolder = "ProgramFilesFolder" ?>
-  <?define PlatformSystemFolder = "SystemFolder" ?>
-  <?define PlatformUpgradeCode = "{69428F65-B96D-458D-BB87-DBB5FDB35DCE}" ?>
-<?endif ?>
-
-<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
-  <Product Name="$(var.ProductName)"
-           Id="*"
-           UpgradeCode="$(var.PlatformUpgradeCode)"
-           Language="1033"
-           Codepage="1252"
-           Version="0.13.0.0"
-           Manufacturer="OpenSC Project">
-    <Package Platform="$(var.Platform)"
-             Description="OpenSC Installer"
-             Comments="OpenSC Project home page http://www.opensc-project.org/opensc/"
-             Manufacturer="OpenSC Project"
-             InstallerVersion="300"
-             Languages="1033"
-             Compressed="yes"
-             SummaryCodepage="1252"
-             InstallScope="perMachine"/>
-    <!-- OpenSC is covered by LGPL. Extend the license as required with other EULA notes -->
-    <WixVariable Id="WixUILicenseRtf" Value="license.rtf"/>
-    <!-- Links in info -->
-    <Property Id="ARPHELPLINK" Value="http://www.opensc-project.org/opensc/wiki/ReportingBugs"/>
-    <Property Id="ARPURLINFOABOUT" Value="http://www.opensc-project.org/"/>
-    <Property Id="ARPURLUPDATEINFO" Value="http://www.opensc-project.org/opensc/wiki/WindowsInstaller"/>
-
-	<Icon Id="OpenSC.ico" SourceFile="OpenSC.ico" />
-	<Property Id="ARPPRODUCTICON" Value="OpenSC.ico" />
-
-
-    <Media Id="1" Cabinet="OpenSC.cab" EmbedCab="yes" CompressionLevel="high"/>
-    <MajorUpgrade DowngradeErrorMessage="Can't downgrade." AllowSameVersionUpgrades="yes"/>
-    <Directory Id="TARGETDIR" Name="SourceDir">
-      <!-- Install critical DLL-s to system folder. NB! Id-s can not contain "-" characters! -->
-      <Directory Id="$(var.PlatformSystemFolder)" Name=".">
-        <Component Id="opensc_pkcs11.dll" Guid="*" Win64="$(var.Win64YesNo)">
-          <File Source="$(var.SOURCE_DIR)\src\pkcs11\opensc-pkcs11.dll" Vital="yes"/>
-        </Component>
-        <Component Id="opensc_minidriver.dll" Guid="*" Win64="$(var.Win64YesNo)">
-          <File Source="$(var.SOURCE_DIR)\src\minidriver\opensc-minidriver.dll" Vital="yes"/>
-        </Component>
-      </Directory>
-      <!-- Install tools and profiles to Program Files -->
-      <Directory Id="$(var.PlatformProgramFilesFolder)" Name="PFiles">
-        <Directory Id="OpenSC_Project_Dir" Name="OpenSC Project">
-          <!-- Most of the stuff goes to the Program Files folder -->
-          <Directory Id="PKCS11SPYINSTALLDIR" Name="PKCS11-Spy">
-            <Component Id="pkcs11_spy.dll" Guid="*" Win64="$(var.Win64YesNo)">
-              <File Source="$(var.SOURCE_DIR)\src\pkcs11\pkcs11-spy.dll"/>
-              <RegistryKey Id="Pkcs11SpyRegs" Root="HKLM" Key="Software\[Manufacturer]\PKCS11-Spy" Action="createAndRemoveOnUninstall">
-                <RegistryValue Type="string" Name="Module" Value="%SystemRoot%\system32\opensc-pkcs11.dll"/>
-                <RegistryValue Type="string" Name="Output" Value="%TEMP%\pkcs11-spy.log"/>
-              </RegistryKey>
-            </Component>
-          </Directory>
-          <Directory Id="INSTALLDIR" Name="OpenSC">
-            <!-- opensc.conf sample goes to installation directory -->
-            <Component Id="opensc.conf" Guid="*" Win64="$(var.Win64YesNo)">
-              <File Source="$(var.SOURCE_DIR)\etc\opensc.conf.win" Name="opensc.conf" KeyPath="yes"/>
-              <!-- -->
-              <RegistryKey Id="OpenscRegs" Root="HKLM" Key="Software\[Manufacturer]\OpenSC" Action="createAndRemoveOnUninstall">
-                <RegistryValue Type="string" Name="ConfigFile" Value="[INSTALLDIR]opensc.conf"/>
-                <RegistryValue Type="string" Name="ProfileDir" Value="[INSTALLDIR]profiles"/>
-                <RegistryValue Type="string" Name="SmDir" Value="[INSTALLDIR]tools"/>
-              </RegistryKey>
-            </Component>
-            <!-- Tools have their own folder -->
-            <Directory Id="INSTALLDIR_TOOLS" Name="tools">
-              <Component Id="opensc.dll" Guid="*" Win64="$(var.Win64YesNo)">
-                <File Source="$(var.SOURCE_DIR)\src\libopensc\opensc.dll" Vital="yes"/>
-              </Component>
-              <Component Id="smm_local.dll" Guid="*" Win64="$(var.Win64YesNo)">
-                <File Source="$(var.SOURCE_DIR)\src\sm\smm-local.dll" Vital="yes"/>
-              </Component>
-              <Component Id="opensc_explorer.exe" Guid="*" Win64="$(var.Win64YesNo)">
-                <File Source="$(var.SOURCE_DIR)\src\tools\opensc-explorer.exe" Vital="yes"/>
-              </Component>
-              <Component Id="opensc_tool.exe" Guid="*" Win64="$(var.Win64YesNo)">
-                <File Source="$(var.SOURCE_DIR)\src\tools\opensc-tool.exe" Vital="yes"/>
-              </Component>
-              <Component Id="pkcs11_tool.exe" Guid="*" Win64="$(var.Win64YesNo)">
-                <File Source="$(var.SOURCE_DIR)\src\tools\pkcs11-tool.exe" Vital="yes"/>
-              </Component>
-              <Component Id="pkcs15_init.exe" Guid="*" Win64="$(var.Win64YesNo)">
-                <File Source="$(var.SOURCE_DIR)\src\tools\pkcs15-init.exe" Vital="yes"/>
-              </Component>
-              <Component Id="pkcs15_tool.exe" Guid="*" Win64="$(var.Win64YesNo)">
-                <File Source="$(var.SOURCE_DIR)\src\tools\pkcs15-tool.exe" Vital="yes"/>
-              </Component>
-              <Component Id="pkcs15_crypt.exe" Guid="*" Win64="$(var.Win64YesNo)">
-                <File Source="$(var.SOURCE_DIR)\src\tools\pkcs15-crypt.exe" Vital="yes"/>
-              </Component>
-              <Component Id="sc_hsm_tool.exe" Guid="*" Win64="$(var.Win64YesNo)">
-                <File Source="$(var.SOURCE_DIR)\src\tools\sc-hsm-tool.exe" Vital="yes"/>
-              </Component>
-            </Directory>
-            <Directory Id="INSTALLDIR_PROFILES" Name="profiles">
-              <Component Id="pkcs15.profile" Guid="*" Win64="$(var.Win64YesNo)">
-                <File Source="$(var.SOURCE_DIR)\src\pkcs15init\pkcs15.profile"/>
-              </Component>
-              <Component Id="asepcos.profile" Guid="*" Win64="$(var.Win64YesNo)">
-                <File Source="$(var.SOURCE_DIR)\src\pkcs15init\asepcos.profile"/>
-              </Component>
-              <Component Id="cardos.profile" Guid="*" Win64="$(var.Win64YesNo)">
-                <File Source="$(var.SOURCE_DIR)\src\pkcs15init\cardos.profile"/>
-              </Component>
-              <Component Id="entersafe.profile" Guid="*" Win64="$(var.Win64YesNo)">
-                <File Source="$(var.SOURCE_DIR)\src\pkcs15init\entersafe.profile"/>
-              </Component>
-              <Component Id="epass2003.profile" Guid="*" Win64="$(var.Win64YesNo)">
-                <File Source="$(var.SOURCE_DIR)\src\pkcs15init\epass2003.profile"/>
-              </Component>
-              <Component Id="myeid.profile" Guid="*" Win64="$(var.Win64YesNo)">
-                <File Source="$(var.SOURCE_DIR)\src\pkcs15init\myeid.profile"/>
-              </Component>
-              <Component Id="setcos.profile" Guid="*" Win64="$(var.Win64YesNo)">
-                <File Source="$(var.SOURCE_DIR)\src\pkcs15init\setcos.profile"/>
-              </Component>
-              <Component Id="starcos.profile" Guid="*" Win64="$(var.Win64YesNo)">
-                <File Source="$(var.SOURCE_DIR)\src\pkcs15init\starcos.profile"/>
-              </Component>
-              <Component Id="westcos.profile" Guid="*" Win64="$(var.Win64YesNo)">
-                <File Source="$(var.SOURCE_DIR)\src\pkcs15init\westcos.profile"/>
-              </Component>
-              <Component Id="oberthur.profile" Guid="*" Win64="$(var.Win64YesNo)">
-                <File Source="$(var.SOURCE_DIR)\src\pkcs15init\oberthur.profile"/>
-              </Component>
-              <Component Id="authentic.profile" Guid="*" Win64="$(var.Win64YesNo)">
-                <File Source="$(var.SOURCE_DIR)\src\pkcs15init\authentic.profile"/>
-              </Component>
-              <Component Id="rutoken.profile" Guid="*" Win64="$(var.Win64YesNo)">
-                <File Source="$(var.SOURCE_DIR)\src\pkcs15init\rutoken.profile"/>
-              </Component>
-              <Component Id="rutoken_ecp.profile" Guid="*" Win64="$(var.Win64YesNo)">
-                <File Source="$(var.SOURCE_DIR)\src\pkcs15init\rutoken_ecp.profile"/>
-              </Component>
-              <Component Id="ias_adele_admin1.profile" Guid="*" Win64="$(var.Win64YesNo)">
-                <File Source="$(var.SOURCE_DIR)\src\pkcs15init\ias_adele_admin1.profile"/>
-              </Component>
-              <Component Id="ias_adele_admin2.profile" Guid="*" Win64="$(var.Win64YesNo)">
-                <File Source="$(var.SOURCE_DIR)\src\pkcs15init\ias_adele_admin2.profile"/>
-              </Component>
-              <Component Id="ias_adele_common.profile" Guid="*" Win64="$(var.Win64YesNo)">
-                <File Source="$(var.SOURCE_DIR)\src\pkcs15init\ias_adele_common.profile"/>
-              </Component>
-              <Component Id="iasecc_admin_eid.profile" Guid="*" Win64="$(var.Win64YesNo)">
-                <File Source="$(var.SOURCE_DIR)\src\pkcs15init\iasecc_admin_eid.profile"/>
-              </Component>
-              <Component Id="iasecc_generic_oberthur.profile" Guid="*" Win64="$(var.Win64YesNo)">
-                <File Source="$(var.SOURCE_DIR)\src\pkcs15init\iasecc_generic_oberthur.profile"/>
-              </Component>
-              <Component Id="iasecc_generic_pki.profile" Guid="*" Win64="$(var.Win64YesNo)">
-                <File Source="$(var.SOURCE_DIR)\src\pkcs15init\iasecc_generic_pki.profile"/>
-              </Component>
-              <Component Id="iasecc.profile" Guid="*" Win64="$(var.Win64YesNo)">
-                <File Source="$(var.SOURCE_DIR)\src\pkcs15init\iasecc.profile"/>
-              </Component>
-              <Component Id="schsm.profile" Guid="*" Win64="$(var.Win64YesNo)">
-                <File Source="$(var.SOURCE_DIR)\src\pkcs15init\sc-hsm.profile"/>
-              </Component>
-              <Component Id="openpgp.profile" Guid="*" Win64="$(var.Win64YesNo)">
-                <File Source="$(var.SOURCE_DIR)\src\pkcs15init\openpgp.profile"/>
-              </Component>
-            </Directory>
-          </Directory>
-        </Directory>
-      </Directory>
-      <Directory Id="ProgramMenuFolder" Name="Programs">
-        <Directory Id="ProgramMenuDir" Name="OpenSC Project">
-          <Component Id="ProgramMenuDir" Guid="*">
-            <util:InternetShortcut Id="OnlineDocumentationShortcut" Name="OpenSC wiki" Target="http://www.opensc-project.org/opensc/"/>
-            <RemoveFolder Id="ProgramMenuDir" On="uninstall"/>
-            <RegistryValue Root="HKCU" Key="Software\[Manufacturer]\[ProductName]" Name="installed" Type="integer" Value="1" KeyPath="yes"/>
-          </Component>
-        </Directory>
-      </Directory>
-    </Directory>
-    <!-- Set up the features  -->
-    <Feature Id="Complete" Level="1" Title="OpenSC software suite" Display="expand">
-      <Feature Id="OpenSC_core" Level="1" Title="OpenSC core library" Description="Core DLL and configuration file used by all other components." Absent="disallow">
-        <ComponentRef Id="opensc.dll"/>
-        <ComponentRef Id="opensc.conf"/>
-        <ComponentRef Id="smm_local.dll"/>
-      </Feature>
-      <Feature Id="OpenSC_pkcs11" Level="1" Title="OpenSC PKCS#11 module" Description="PKCS#11 module usd by most open source and cross-platform software (like Firefox, Putty, TrueCrypt, OpenVPN etc)" TypicalDefault="install">
-        <ComponentRef Id="opensc_pkcs11.dll"/>
-      </Feature>
-      <Feature Id="PKCS11_spy" Level="1" Title="PKCS#11 Spy module" Description="Module of the PKCS#11 spy." Absent="disallow">
-        <ComponentRef Id="pkcs11_spy.dll"/>
-      </Feature>
-      <!-- Minidriver is only installed if selected via Custom install (level == 4) -->
-      <Feature Id="OpenSC_minidriver" Level="4" Title="OpenSC minidriver (EXPERIMENTAL)" Description="OpenSC minidriver for using smart cards with native Windows CSP applications (like Internet Explorer)" AllowAdvertise="no" Absent="allow">
-        <ComponentRef Id="opensc_minidriver.dll"/>
-      </Feature>
-      <!-- Tools and profiles are for personalization -->
-      <Feature Id="OpenSC_tools" Level="1" Title="Tools and profiles" Description="Tools for debugging and personalization. Includes profiles needed for running pkcs15-init.exe">
-        <!-- TODO: Not all tools and utilities are listed! -->
-        <ComponentRef Id="opensc_explorer.exe"/>
-        <ComponentRef Id="opensc_tool.exe"/>
-        <ComponentRef Id="pkcs11_tool.exe"/>
-        <ComponentRef Id="pkcs15_init.exe"/>
-        <ComponentRef Id="pkcs15_tool.exe"/>
-        <ComponentRef Id="pkcs15_crypt.exe"/>
-        <ComponentRef Id="sc_hsm_tool.exe"/>
-        <!-- TODO: Not all profiles are listed! -->
-        <ComponentRef Id="pkcs15.profile"/>
-        <ComponentRef Id="asepcos.profile"/>
-        <ComponentRef Id="cardos.profile"/>
-        <ComponentRef Id="entersafe.profile"/>
-        <ComponentRef Id="epass2003.profile"/>
-        <ComponentRef Id="myeid.profile"/>
-        <ComponentRef Id="setcos.profile"/>
-        <ComponentRef Id="starcos.profile"/>
-        <ComponentRef Id="westcos.profile"/>
-        <ComponentRef Id="oberthur.profile"/>
-        <ComponentRef Id="authentic.profile"/>
-        <ComponentRef Id="rutoken.profile"/>
-        <ComponentRef Id="rutoken_ecp.profile"/>
-        <ComponentRef Id="ias_adele_admin1.profile"/>
-        <ComponentRef Id="ias_adele_admin2.profile"/>
-        <ComponentRef Id="ias_adele_common.profile"/>
-        <ComponentRef Id="iasecc_admin_eid.profile"/>
-        <ComponentRef Id="iasecc_generic_oberthur.profile"/>
-        <ComponentRef Id="iasecc_generic_pki.profile"/>
-        <ComponentRef Id="iasecc.profile"/>
-        <ComponentRef Id="schsm.profile"/>
-        <ComponentRef Id="openpgp.profile"/>
-      </Feature>
-      <Feature Id="OpenSC_menu" Level="1" Title="Start menu entries" Description="Start menu entries: link to documentation">
-        <ComponentRef Id="ProgramMenuDir"/>
-      </Feature>
-    </Feature>
-    <UIRef Id="WixUI_Mondo"/>
-    <UIRef Id="WixUI_ErrorProgressText"/>
-  </Product>
-</Wix>
diff --git a/win32/OpenSC.wxs.in b/win32/OpenSC.wxs.in
old mode 100755
new mode 100644
index d24fa71..632178d
--- a/win32/OpenSC.wxs.in
+++ b/win32/OpenSC.wxs.in
@@ -83,7 +83,7 @@
                 <File Source="$(var.SOURCE_DIR)\src\libopensc\opensc.dll" Vital="yes"/>
               </Component>
               <Component Id="smm_local.dll" Guid="*" Win64="$(var.Win64YesNo)">
-                <File Source="$(var.SOURCE_DIR)\src\sm\smm-local.dll" Vital="yes"/>
+                <File Source="$(var.SOURCE_DIR)\src\smm\smm-local.dll" Vital="yes"/>
               </Component>
               <Component Id="opensc_explorer.exe" Guid="*" Win64="$(var.Win64YesNo)">
                 <File Source="$(var.SOURCE_DIR)\src\tools\opensc-explorer.exe" Vital="yes"/>
@@ -106,6 +106,12 @@
               <Component Id="sc_hsm_tool.exe" Guid="*" Win64="$(var.Win64YesNo)">
                 <File Source="$(var.SOURCE_DIR)\src\tools\sc-hsm-tool.exe" Vital="yes"/>
               </Component>
+              <Component Id="dnie_tool.exe" Guid="*" Win64="$(var.Win64YesNo)">
+                <File Source="$(var.SOURCE_DIR)\src\tools\dnie-tool.exe" Vital="yes"/>
+              </Component>
+              <Component Id="openpgp_tool.exe" Guid="*" Win64="$(var.Win64YesNo)">
+                <File Source="$(var.SOURCE_DIR)\src\tools\openpgp-tool.exe" Vital="yes"/>
+              </Component>
             </Directory>
             <Directory Id="INSTALLDIR_PROFILES" Name="profiles">
               <Component Id="pkcs15.profile" Guid="*" Win64="$(var.Win64YesNo)">
@@ -212,9 +218,11 @@
         <ComponentRef Id="opensc_tool.exe"/>
         <ComponentRef Id="pkcs11_tool.exe"/>
         <ComponentRef Id="pkcs15_init.exe"/>
+        <ComponentRef Id="dnie_tool.exe"/>
         <ComponentRef Id="pkcs15_tool.exe"/>
         <ComponentRef Id="pkcs15_crypt.exe"/>
         <ComponentRef Id="sc_hsm_tool.exe"/>
+        <ComponentRef Id="openpgp_tool.exe"/>
         <!-- TODO: Not all profiles are listed! -->
         <ComponentRef Id="pkcs15.profile"/>
         <ComponentRef Id="asepcos.profile"/>
diff --git a/win32/README.rtf b/win32/README.rtf
new file mode 100644
index 0000000..61ba3be
--- /dev/null
+++ b/win32/README.rtf
@@ -0,0 +1 @@
+README for OpenSC win32 installer.
diff --git a/win32/installer_from_build.sh b/win32/installer_from_build.sh
new file mode 100755
index 0000000..3a82d4a
--- /dev/null
+++ b/win32/installer_from_build.sh
@@ -0,0 +1,30 @@
+#!/bin/bash
+set -ex
+build_dir=${1:-win32/build}
+
+if ! [ -d ${build_dir} ]; then
+	svn co http://www.opensc-project.org/svn/build/trunk ${build_dir}
+	mkdir -p ${build_dir}/sources
+fi
+
+# build a fresh targzip
+rm -f opensc-*.tar.gz
+make dist
+rm -f ${build_dir}/sources/opensc*.tar.gz
+cp opensc-0.12.*.tar.gz ${build_dir}/sources/
+
+# use mingw to generate binaries
+(cd ${build_dir}; CHOST=i586-mingw32msvc CBUILD=i686-pc-linux-gnu ./build)
+
+# Copy files
+cp ${build_dir}/image/opensc/etc/opensc.conf win32
+
+mkdir -p win32/opensc
+cp ${build_dir}/image/opensc/bin/*.dll ${build_dir}/image/opensc/bin/*.exe win32/opensc
+cp ${build_dir}/image/opensc/share/opensc/*.profile win32/opensc
+
+mkdir -p win32/engine_pkcs11
+cp ${build_dir}/image/engine_pkcs11/bin/libp11-1.dll ${build_dir}/image/engine_pkcs11/lib/engines/engine_pkcs11.dll win32/engine_pkcs11
+
+# Build installer
+wine ~/.wine/drive_c/Program\ Files/Inno\ Setup\ 5/ISCC.exe win32/OpenSC.iss
diff --git a/win32/versioninfo.rc b/win32/versioninfo.rc
deleted file mode 100644
index 2f224ba..0000000
--- a/win32/versioninfo.rc
+++ /dev/null
@@ -1,33 +0,0 @@
-#include <winresrc.h>
-
-VS_VERSION_INFO VERSIONINFO
-	FILEVERSION 0,13,0,0
-	PRODUCTVERSION 0,13,0,0
-	FILEFLAGSMASK 0x3fL
-#ifdef _DEBUG
-	FILEFLAGS 0x21L
-#else
-	FILEFLAGS 0x20L
-#endif
-	FILEOS 0x40004L
-	FILETYPE 0x1L
-	FILESUBTYPE 0x0L
-BEGIN
-	BLOCK "StringFileInfo"
-	BEGIN
-		BLOCK "040904b0"
-		BEGIN
-			VALUE "Comments", "Provided under the terms of the GNU Lesser General Public License (LGPLv2.1+).\0"
-			VALUE "CompanyName", "OpenSC Project\0"
-			VALUE "FileVersion", "0.13.0.0\0"
-			VALUE "InternalName", "opensc\0"
-			VALUE "LegalCopyright", "OpenSC Project\0"
-			VALUE "LegalTrademarks", "\0"
-			VALUE "PrivateBuild", "\0"
-			VALUE "ProductName", "OpenSC\0"
-			VALUE "ProductVersion", "0,13,0,0\0"
-			VALUE "SpecialBuild", "\0"
-		END
-	END
-END
-
diff --git a/win32/versioninfo.rc.in b/win32/versioninfo.rc.in
index bf60e79..fb34084 100644
--- a/win32/versioninfo.rc.in
+++ b/win32/versioninfo.rc.in
@@ -1,8 +1,8 @@
 #include <winresrc.h>
 
 VS_VERSION_INFO VERSIONINFO
-	FILEVERSION @OPENSC_VERSION_MAJOR@, at OPENSC_VERSION_MINOR@, at OPENSC_VERSION_FIX@,0
-	PRODUCTVERSION @OPENSC_VERSION_MAJOR@, at OPENSC_VERSION_MINOR@, at OPENSC_VERSION_FIX@,0
+	FILEVERSION @OPENSC_VERSION_MAJOR@, at OPENSC_VERSION_MINOR@, at OPENSC_VERSION_FIX@, at OPENSC_VERSION_REVISION@
+	PRODUCTVERSION @OPENSC_VERSION_MAJOR@, at OPENSC_VERSION_MINOR@, at OPENSC_VERSION_FIX@, at OPENSC_VERSION_REVISION@
 	FILEFLAGSMASK 0x3fL
 #ifdef _DEBUG
 	FILEFLAGS 0x21L
@@ -10,24 +10,29 @@ VS_VERSION_INFO VERSIONINFO
 	FILEFLAGS 0x20L
 #endif
 	FILEOS 0x40004L
-	FILETYPE 0x1L
+	FILETYPE 0x2L
 	FILESUBTYPE 0x0L
 BEGIN
 	BLOCK "StringFileInfo"
 	BEGIN
 		BLOCK "040904b0"
 		BEGIN
-			VALUE "Comments", "Provided under the terms of the GNU Lesser General Public License (LGPLv2.1+).\0"
-			VALUE "CompanyName", "OpenSC Project\0"
-			VALUE "FileVersion", "@OPENSC_VERSION_MAJOR at .@OPENSC_VERSION_MINOR at .@OPENSC_VERSION_FIX at .0\0"
-			VALUE "InternalName", "@PACKAGE_NAME@\0"
-			VALUE "LegalCopyright", "OpenSC Project\0"
-			VALUE "LegalTrademarks", "\0"
-			VALUE "PrivateBuild", "\0"
-			VALUE "ProductName", "OpenSC\0"
-			VALUE "ProductVersion", "@OPENSC_VERSION_MAJOR@, at OPENSC_VERSION_MINOR@, at OPENSC_VERSION_FIX@,0\0"
-			VALUE "SpecialBuild", "\0"
+			VALUE "Comments", "@OPENSC_VS_FF_COMMENTS@"
+			VALUE "CompanyName", "@OPENSC_VS_FF_COMPANY_NAME@"
+			VALUE "FileVersion", "@OPENSC_VERSION_MAJOR at .@OPENSC_VERSION_MINOR at .@OPENSC_VERSION_FIX at .@OPENSC_VERSION_REVISION@"
+			VALUE "InternalName", "@PACKAGE_NAME@"
+			VALUE "LegalCopyright", "@OPENSC_VS_FF_LEGAL_COPYRIGHT@"
+			VALUE "LegalTrademarks", ""
+			VALUE "PrivateBuild", ""
+			VALUE "ProductName", "@OPENSC_VS_FF_PRODUCT_NAME@"
+			VALUE "ProductVersion", "@OPENSC_VERSION_MAJOR@, at OPENSC_VERSION_MINOR@, at OPENSC_VERSION_FIX@, at OPENSC_VERSION_REVISION@"
+			VALUE "SpecialBuild", ""
+			VALUE "FileDescription", "OpenSC common usage application extention"
 		END
 	END
+	BLOCK "VarFileInfo"
+	BEGIN
+		VALUE "Translation", 0x409, 1200
+	END
 END
 
diff --git a/win32/winconfig.h b/win32/winconfig.h
deleted file mode 100644
index ff0fab0..0000000
--- a/win32/winconfig.h
+++ /dev/null
@@ -1,98 +0,0 @@
-#ifndef _OPENSC_WINCONFIG_H
-#define _OPENSC_WINCONFIG_H
-
-#include <stdio.h>
-#include <windows.h>
-#include <winscard.h>
-#include <sys/timeb.h>
-#include <sys/stat.h>
-
-#ifndef strcasecmp
-#define strcasecmp stricmp
-#endif
-
-#ifndef strncasecmp
-#define strncasecmp strnicmp
-#endif
-
-#ifndef snprintf
-#define snprintf _snprintf
-#endif
-
-#ifndef vsnprintf
-#define vsnprintf _vsnprintf
-#endif
-
-#ifndef isatty
-#define isatty _isatty
-#endif
-
-#ifndef strnicmp
-#define strnicmp _strnicmp
-#endif
-
-#ifndef stricmp
-#define stricmp _stricmp
-#endif
-
-#ifndef strdup
-#define strdup _strdup
-#endif
-
-#ifndef fileno
-#define fileno _fileno
-#endif
-
-#ifndef mkdir
-#define mkdir _mkdir
-#endif
-
-#ifndef access
-#define access _access
-#endif
-
-#ifndef unlink
-#define unlink _unlink
-#endif
-
-#ifndef putenv
-#define putenv _putenv
-#endif
-
-#ifndef R_OK
-#define R_OK  4		/* test whether readable.  */
-#define W_OK  2		/* test whether writable.  */
-#define X_OK  1		/* test whether execubale. */
-#define F_OK  0		/* test whether exist.  */
-#endif
-
-#ifndef S_IRUSR
-#define S_IRUSR S_IREAD
-#endif
-
-#ifndef S_IWUSR
-#define S_IWUSR S_IWRITE
-#endif
-
-#define HAVE_IO_H
-#define ENABLE_PCSC
-#define HAVE_WINSCARD_H
-#define DEFAULT_PCSC_PROVIDER "winscard.dll"
-
-#define SC_PKCS15_PROFILE_DIRECTORY "C:\\Program Files\\OpenSC Project\\OpenSC\\profiles"
-
-#define PATH_MAX FILENAME_MAX
-
-#ifndef PACKAGE_VERSION
-#define PACKAGE_VERSION "0.13.0"
-#endif
-
-#ifndef PACKAGE_NAME
-#define PACKAGE_NAME "opensc"
-#endif
-
-#ifndef OPENSC_FEATURES
-#define OPENSC_FEATURES "N/A"
-#endif
-
-#endif

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-opensc/opensc.git



More information about the pkg-opensc-commit mailing list